Iterative development has many strengths and a few weaknesses. But one thing is not in dispute: iterative means you make more than one pass through the code.
The major weakness of iterative development is its unpredictability. It's definitely time and material project work. This can be very frustrating to the folks trying to budget the project.
One strength of iterative development is the quality of the code and final product. Combined with test-driven development practices like Test-First Development, iterative development completes a project and leaves a suite of regression tests in place. This increases the development cycle for version 1.0, but pays for itself many times over with each subsequent iteration.
I was asked for an estimated delivery time once by a project manager. I'd been given time to do a thorough analysis (sometimes I miss those days) and had an answer: "6 months."
"Unacceptable, you have three months." the PM responded.
Undaunted I replied "Ok. You can have the application in six months, or you can have a three-month project - three months late."
They didn't like either option so they moved me off the project and hired new people. Last I heard, they're still working on it...
:{> Andy
Technorati Tags: