- 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.