Jul 132006

The Cost of Change

Uncategorized Comments Off

This is a quick’n'dirty picture of the cost of change (y) against time (x) on a Big Design Up Front project (red) and an Agile one (green). For the colour-blind, the Agile cost is the one that stabilises with time, rather than growing exponentially.

This is how the argument goes:

  1. In a BDUF project, the requirements are elicited from the customer and written down. If at any point the requirements change, the document must be updated.
  2. Then the requirements are turned into a high level design. If the requirements change, the high level design and the requirements document have to be updated.
  3. Then the high-level design is turned into a more detailed low-level design. If the requirements change, the high level design and the requirements document and the low-level design document have to be updated.
  4. Then the code is done. After that, the code is tested. Then, the code is integrated. Now if the requirements change… well, you get the picture.
  5. In an ideal Agile project, because the code is largely self-documenting, we don’t do any more design up front than we have to and we practice continuous test, *integration, release and many other forms of frequent feedback, the cost of change is kept low.

I would like to remind myself and anyone else who needs it that the cost of change on an Agile project, while comparatively small, is not zero.

Update: The quick’n'dirty explanation and picture above are huge approximations meant to serve as a rough context for the reminder at the bottom – the non-zero cost of change. There are better explanations and more accurate pictures around which have been crafted by far greater authors. Apologies to anyone who thought I was redefining the wheel; I have added the * clauses for clarification.

Jul 052006

Ten Tips for the Agile Martian Coach

Uncategorized Comments Off
  1. Communication is important. Ensure that your Martian has a working translator. Provide expletive vocabulary as required.

  2. All Martians look alike. All humans look alike. Wear name badges and teach each other how to pronounce them.
  3. Remember that alcohol may have unexpected side-effects when fed to extra-terrestrial life forms.
  4. At brown bag lunches, prevent your Martian from eating the brown bag. The extra fibre will not be conducive to a good working relationship.
  5. On no account should you tell your Martian that there’s more than one way to skin a cat.
  6. Your Martian may have a higher technical capability than you do. Make careful notes of anything that he produces which seems to break the laws of physics.
  7. Resist the temptation to use time travel to go backwards and give yourself more time to meet important deadlines.
  8. Resist the temptation to use time travel to go forwards and recover the repository from the future, saving yourself the effort of writing all that code.
  9. Some tools are more appropriate for each job than others. There is no job which requires a sub-ether laser set to “annihilate”.
  10. Be careful of misunderstandings when teaching your Martian to pair.