The growth of a feature


For some time I have been looking for the time to post a general picture of the design and programming approach I have been trying in several projects, the life-cycle for a single feature would be depicted like this:

The main points here are:

  • Functional capacity is accumulated and maintained in time as iterations are done.

  • Each iteration ends with a releasable, production-grade slice of functionality from each feature selected for version N.

  • Each iteration ends with a useful version from the customer perspective so that if the project ends at that time, there is an up and running subset of capacity.

  • RTM date planned accordingly to a chosen capacity level.

  • The design is always in flux, even after RTM N. Actually at RTM timepoint there is a frozen branch in the version control system for the shipped bits, but the mainline version continues in flow.

Part of the background of this life-cycle is explained by the following post:

Organic and evolutionary software design – a metaphor http://blogs.msdn.com/marcod/archive/2005/04/14/TheEmbryo.aspx

Comments (3)

  1. It’s not quite the same as growing plants, (project running late? use some miracle grow!) but feature

  2. When agile development still was not called agile development, there were planning-oriented technicians

  3. When agile development still was not called agile development, there were planning-oriented technicians