…and the housebuilder says, “Hey, your new house is just about done, here are some pictures from the construction. We just need to finish painting and everything will be ready.”
The customer says, “That’s great, but I think we need more windows. Can we put in some more windows? And instead of 3 bedrooms I’d like 4, but we can take out one of the baths and some of the yard so it should even out. Can you do that by next Thursday?”
The homebuilder is aghast. “Well, I could make those changes, but certainly not by next Thursday. I’ll get with the architect and my suppliers and see if we can present you with a design and an estimate, then we can talk schedule.”
The customer stares at the homebuilder quizzically. “What do you mean, estimate? I’ve already agreed to pay you $450,000 for the house, and the contract was for a house. Now, if I could just show your guys kind of what I want out at the site, I’m sure they could build it. If you don’t do it, I’m afraid I’m going to withhold payment and find a new contractor.”
Crazy, right? But this happens in software development projects many, many times per day, just in the USA. You can’t redesign a house at the last second without bad things happening to the architecture. A Web application is no different.
You certainly can’t expect to get more house for the same money just because you claim you didn’t understand the plans. Yet clients continually ask for more despite the fact they’ve never paid for it and have signed a contract stating exactly what they’ll get.
The only thing that’s different is that in software, there are no materials costs, just labor. But if you think it’s materials that make houses so expensive, you must rent.
It’s sometimes a wonder to me that we managed to climb out of the primordial ooze, let alone evolve opposable thumbs.