design for quality


on not shifting gears


I love smooth workflows, efficient practices and logical progressions. Before I worked with Drupal I'd gotten my workflow highly refined.

  1. define/clarify site needs and functionality (work with client, share proposals, present wire frames)
  2. produce a workable, extendable data model (usually in the form of a relational database)
  3. code business logic (usually a PHP app)
  4. design interface and presentation layer (XHTML and CSS)
  5. test and debug
  6. reiterate back through this process as necessary for maturity
  7. put application/site to work
  8. tweak as necessary

With Drupal there's a few more moving pieces to contend with and I'm discovering that now that I've become proficient with Drupal, I'm working out a new optimal workflow.

  1. define/clarify site needs and functionality (work with client, share proposals, present wire frames)
  2. survey Drupal modules for relevant functionality and module health
  3. install Drupal and setup basic configuration for site/application
  4. install and implement contributed modules
  5. map necessary data types to Drupal (CCK rocks!)
  6. rough configuration of needed views
  7. develop, code and test custom modules
  8. convert page designs (developed separately, but in parallel: as graphic design mockup XHTML and CSS template) into a Drupal theme
  9. debug the theme and tweak as needed
  10. load content into site (if client won't be doing the first additions themselves)
  11. further debugging, and tweaking to the design and css
  12. polish workflow for clients -> instruct clients on site usage
  13. contribute back to the Drupal project anything I've developed that is worth sharing

Of course this is a simplified view and there are a number of steps that one iterates back through, but the big takeaway is this:

I've learned to wait on the introduction of the theme until most if not all of the site configuration and building has been completed, simply because this keeps me from seeing things I want to alter while I'm in the middle of setting up a view or configuring a module's settings, for instance.

The less I shift gears, the better. Two tasks done in series will almost always take less time than two tasks attended to simultaneously. My attention and effort is better utilized if I avoid creating the need to transition from one task to another before I've finished the first - otherwise, I not only run the risk of ping-ponging back and forth with tasks (the transition time and expenditure of energy add up quickly) but I also have to find my place again, maybe need to start over or I might overlook the task for some time before I get back to it.


© 2008