Zero. There is no way for me to write line zero of this blog post. I have to start at line one. I think of line two while writing line one, and line zero was probably the walk downstairs, setting up my machine, and getting yet another cup of coffee with this all too strange Stevia stuff in it. I recommend trying it, by the way, but start slow. It is a little slippery in taste. Slippery is all I can think of to describe it. You might have fun with slippery, but you do not trust it right off the bat. Anyhow, iteration zero is over.
Iteration zero has always been the bastard child of any project. It is there, and it has to be dealt with, fed, remembered, and attended to, but it in reality gets a blanket thrown over it and shoved into the corner like something you have to step around in order to get to the real stuff. The good stuff. The stuff that has value.
As much as people can, will, and do say that there is a lot of value in iteration zero, within many of the Agile trains of thought, iteration zero is “all that stuff like what kind of servers, licenses, and architecture we need” and it is not part of any creative or iterative process. It is the foundation, plain concrete, and has to fit correctly but once you get past it and into the real building, you do not see it again. Once in awhile, if it was executed poorly, you get leaks and the whole schebang gets thrown out, torn down, and built from the ground up again. Iteration Zero. Not Iteration One. It has even been devalued in name. You do not call something a zero unless it has a value of zero or you are trying to separate it from the rest of the group.
This has become an assumption that is no longer recognized as such. It has been grandfathered into many modern SDLCs riding on the back on Corporate notions such as Scrum. It is a mistake, and needs to be re-examined, especially when all it truly applies to as distinct from the software platform itself is custom development. If, for instance, I know I have to install an SAP ERP System, does that not become part of this “Iteration Zero” along with all that the platform, architecture, structure, services, functionality, workflow, and other valuable (how much does SAP cost out of the box?”) The notion of Iteration Zero changes a bit, but many of the common SDLCs and Project Methodologies do not allow for this mandatory truth. In my fifteen years of building software, I would guess that 80 percent of projects assume some sort of software framework – be it .NET, PHP, or Flash. Many times if not most, at least the LAMP vs Windows vs Other conversation has happened before the kickoff meeting and many times it has happened before even Inception.
Change thought patterns a bit, toss out assumptions regarding waste and how it is bad all the time, how Iteration Zero is just a bunch of stuff to get out of the way, and recognize that there is enormous possibility in what might appear to be waste. Think about compost heaps, even. There is no waste. There are only products of labor that do not work towards achieving a predefined goal.
We know one thing about predefining anything in software. We know it is a mistake to not expect things to change. Within Iteration Zero is more than commonly accepted both in terms of it’s contents and it’s potential.
The tides exist because of the love between the moon and the deep blue sea, to paraphrase Jimi Hendrix. Everyone should have some Hendrix in their back pocket, even if it seems as though the lyrics are just a byproduct of some late night in a smoky dorm room – not speaking for myself, here, obviously.
Best Regards,


If iteration zero has any use as a context it is probably best contained to
1. Make a decision to pursue a project
2. Set an initial budget
3. Form a team
Agreed, but I would stop calling it ‘iteration zero’ because it places it within what I think it an inappropriate context. Good to see you Craig.
That hits the target pfreectly. Thanks!
[...] of course, there is Iteration Zero, the “we have to do this but it is standard and not really something we are going to make [...]