RailsConf Europe 2008
Elsewhere on Green is Good:
Barcamb 2: Friday 1st August, 2008 »

Thursday 27 March, 2008 in Development

The actual implementation of a solution in code is only one step toward solving a problem, and is part of a larger development pipeline.

  • Design
    Putting together a map of a particular problem, and planning out a possible solution. This can happen quickly (fixing an obvious edge case bug, for example), or require more time (schema design and wide architectural refactorings both springing to mind).

  • Implementation
    Putting fingers to keyboards to implement the plan

  • Quality control
    Checking that the solution solves the original problem in an expected, reliable way

  • Sign off
    An end point - the problem is solved and ready to be used in the trenches

Classically, a developer will spend the majority of their time implementing, but exercising the other sides of the square should be encouraged. Simple checklists can provide a good guide to make sure the key pieces are put in place, making the next stage (and all forthcoming problems) easier.

A quick example. A ticket has been opened indicating that a column sort is failing. We've got a pretty good idea of where the problem lies and add a simple test to capture the errant behaviour. Sure enough, the test fails. We fix up the problem so that the new test passes. We're now ready to sign off our work - here is our checklist:

  • 1. Run the full test suite
  • 2. Commit the changes back to Subversion
  • 3. Tag the code with the build or release number
  • 4. Release the update
  • 5. Post an update to the appropriate mailing list or blog
These simple steps can be considered a 'proof read' before going to print, resulting in a better read all round.

Compiling checklists also provides an excellent starting point when looking to automate development processes since the particularly repetitive and important bits have already been identified, prioritised and ordered.

After that, a simple rake task should take care of things, time after time.