Iterative Development – An Introduction
Iterative development is a pretty basic concept. You just develop iteratively… Hmm pretty sure i read once that you shouldn’t use the word you’re defining in the definition. Lets try again.
Iterative development is the practice of developing software in small defined chunks of time. This is in contrast with the old-school method of starting a project and working on it over the course of months or years in one long chunk, or iteration.
Lets just dig in to the meat of why it’s important. Imagine you wanted to get a house built. You line up a contractor who has experience building houses. You tell him you want a 1200sq ft house with lots of windows and a double garage. He asks you what layout you want, where should the windows be, do you want a deck, what colors for the interior and exterior etc. You answer him by saying “I don’t know, I hired you because you’re good at building houses, so you just make sure it’s 1200sq ft and has lots of windows”. Can you see where this is going?
Six months later he calls you and says the house is done. You walk in and while the house is impressive, it’s not how you had envisioned it, and with the amount you are paying him, you want it to look how you want. Unfortunately now that all the work is already done, it will cost a LOT more to make changes.
Software is the same way, if somebody comes and says to you “I want a system that does X” but they don’t have any details as to how it should look or work, it would be foolhardy to believe that they are going to just be happy with whatever you deliver to them.
Iterative development helps with this by allowing you to break up the project in to small iterations, the smaller the better, ideally 1 or 2 weeks. This way you can show what you have accomplished during each iteration to the customer and see what they think, and get their feedback on what they would like changed. Even if they customer had no idea what they wanted ahead of time, you can bet that they will after they see what you have built. The sooner you get that feedback from them, the cheaper it will be to ensure the project turns out how they want.
One of the other big advantages of dividing work up in to short iterations is that it’s a lot easier to estimate what you can get done in 2 weeks than in 2 months. Once you have the project divided up in those iterations it also becomes a lot easier to see if you’re falling behind or not as well.
That should give you a basic idea of some of the advantage iterative development provides. I’ll go in to more detail in future posts of some of the other advantages.
by: Chris Dagenais