I’ll be dead soon. I’ve been out in the cold rain for three hours. Hypothermia is setting in.
You try to sell me a mansion. You show me the plot plan and the floor plan; you did a lot of planning up front. You brag about the foundation, firm and solid, ready to last centuries. The infrastructure is excellent: all the best wiring, plumbing, heat, and air conditioning. Twelve bedrooms, six bathrooms, servants’ quarters. Hot tubs. Pool. Very impressive. Well done.
But I just died. All I needed was shelter.
“Building software is like building a house. You start with a strong foundation. Then you build one floor at a time–you can’t build the second floor without the first floor. You need excellent infrastructure–things like plumbing and wiring. Finally, you need a solid roof.”
Building software is best done iteratively and incrementally. Fill a need, get it done, and give it to your customer. Fill another need, make it better, get it done, and give it to your customer again.
The “it’s like building a house” metaphor is broken. Building a house can be done as incrementally as software: