Ok, I have had this conversation too many times to count. And depending on the social setting, I have argued it from both directions. (stick with me for a minute….) I truly believe that you can build software like you do construction. It can work. BUT I firmly believe that you should not do that. Not because its hard, but because we have an awesome opportunity with software to build something together with the business and not for the business. And that is the key difference.
Now, if I could build the house the way I build software, it would look something like this. I would put up four walls and a door and have the user come stand in the house. I would then ask “What else do you need?” They would give me feed back like “Its dark in here… maybe some lights?” I would go build the lights and windows, and the rest of their “needs” list and call that their “mvh” minimum viable house. Once I was done with that, I would walk them through the house and say, “Here is your house, move in today.” but I wouldn’t stop there” I would go on to say “now tell me everything you want in order of priority and I will add them one by one until you feel like we are done.” All the while, they can live in the house. Wouldn’t that be cool? Except, you can’t do that with a house. You can’t cheaply and affordably add lighting and windows and extra rooms on to a house after construction is complete. Or change the color of the cabinets or carpet. You can however do that in software.
The conversation always seems to go “you should be able to build software like construction” and the reality is you can. But, for me, the question is “Why would you conform yourself to a process that is restrictive and painful when there is a MUCH better way?” Building software gives us the opportunity to truly create something in a collaborative environment with everyone involved. Yes, you CAN do big up front design and estimation, and contract negotiation, or I can use that same time to build something usable that we can use to get test with actual real paying customers.
The paridime is different. Don’t conform to something just because it “seems” to work in other unrelated fields.