“
I have recently read a lot about XP, SCRUM, FDD (feature driven development), etc.
Most agile methodologies develop a product incrementally, and make sure quite often that the product works and is in shipable state.
Let’s make an analogy with making a car.
Metod 1 (traditional):
You design a car.
You make all the pieces one by one.
You assemble the pieces into larger parts (for example the gear box, etc).
You assemble the larger parts into a car.
A problem often appears while doing this: you discover that your design is flawed, and have to trace back a few steps, redesign some things, etc.
Method 2 (similar to agile methodologies):
You first make a bicycle.
Then you make an engine.
You put the engine on the bike and make it a motorcycle.
You add to the motorcycle a stronger frame, and 2 additional wheels.
You add chairs, etc.
You make a larger engine.
… and so, you have a car!
Method #2 may work, but isn’t it A LOT MORE EXPENSIVE than method #1?
— http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=160253