- Get a big pile of clay.
- Reduce the pile of clay to the size of the intended sculpture.
- Start cutting the clay into a roughly hewn representation of the sculpture.
- Examine your work - is the design going as intended? If so, continue, else start over.
- Refine your sculpture with finer cuts - yielding a less coarse result.
- Examine your work again. If on track, continue, else back-up.
- Continue refining your piece - refining, backing up, continuing, etc.
- Repeat for as many steps as needed.
I've lived with Agile for many years - and my conclusion is that Agile is purposefully designed to support the idea that coding is like sculpting.
Every sprint is your opportunity to move your sculpture forward to it's next level of refinement. Said another way, at the end of each sprint, your sculpture should be a finer version of what you sculpted the prior sprint.
Agile gives this a name: the vertical slice. Every sprint should be a working model that moves (feature-wise) closer toward the end result.
I begrudgingly admit these facts, since I admit I set about writing this to bash Agile for not supporting the notion that coding is like sculpting - when in fact, I concluded the opposite. Score one for Agile.
I also like the idea that Agile attempts to take advantage of the one skill all programmers (should) have, which is getting code written. Maybe not every programmer is a great planner, designer, writer, communicator, or political animal - but (we hope) they can all sling code. So, with Agile, get some code written (spikes, prototypes - maybe corresponding to your original pile of clay) and keep sculpting until it is roughly what you like. From the Agile Manifesto: "Working software over comprehensive documentation".
ReplyDelete