There's a high-profile lawsuit in my industry right now, and as a result,some fascinating (and perhaps lonog-overdue) conversations are taking place.

There are people who equate building software to building a house. I've been building software for 34 years, and I built a house 3 years ago. So here's my perspective:

The software development industry could learn a hell of a lot from the home-building industry: every step of the way is meticulously documented, cross-checked, and signed off on. Every change comes with a cost.

Custom Home Building: I want a house, but I don't know how to build one, so I call a builder. They have an Architect (with a degree in Architecture) create a blueprint, then a GC reviews it and generates a plan, then the house gets built with predetermined milestones, upon which the bank or a trustee releases payment, and whatever changes come later are treated as small projects that are individually estimated. It’s the waterfall methodology at its finest.

Custom Software Development: A company decides they need a product that does "xyz" but they can't do it themselves, and they aren't really sure what other features it may need, so they call a consulting company, and a guy who calls himself a "Software Architect", who may or may not have gone to college, but has been developing for "a while", says "we can totally do this, and we don't need to plan anything out in advance other than a basic road map, because "we're an agile shop" and waterfall is just so restrictive, man."

So the sales guy asks the architect "how long will it take, and how much will it cost?" and the architect laughs, because he doesn't know. So the sales guys says "just take a wild guess" and the Architect is an optimist, like almost all developers, and says 12 months. Then the sales guy does some cost math, and cuts that number in half, because his commission is tied to signing the contract, not delivering the product.

And then the fun really starts, because the client says "we need it by August 1 so we can demo it at this important trade show on Aug 15. So now your 1 year OPTIMISTIC estimate, that was cut to 6 months, is now 4 months, and the sales guy says "Sure, NO PROBLEM, we'll just throw a few more bodies on the project", because this is a "Gateway Project" (meaning if it goes well, there will be more) and he apparently thinks 9 women can make a baby in a month.

And the fun is still not over, because the "Architect" just read about this new framework/design pattern/methodology on the plane on his way home from a tech conference and can't wait to try it on his next project, which , as you recall, has just been shortened from 12 months to 4.

Learning a new framework comes with a lot of challenges, including a lack of documentation, or developer experience. So everything the team tries to do now takes 3 times longer, and 2 of the Devs quit, another one lost their H1B Visa and got sent home, and the "architect" took off to go to another week long tech conference where he heard about a new framework that he really wants to try out.

While all of this is going on, the client has come up with a lot of other features they would like to see implemented, and the sales guy figures, sure why not? (Again, Gateway Project) and hey it's early in the process so it shouldn't be a problem. So more stuff gets piled on the plate, and the team has just restarted the project from scratch anyway because they now realize that framework doesn't really cover their needs.

Half of the features the client wanted (including the original KEY feature) never make it out of the backlog, because there's no "Product Owner" to prioritize things, and the team is just so busy, so they just keep working until the Architect feels like it's done.

Meanwhile a new Director of Development has been hired, and he decides to give everyone "pet projects" on top of their regular workload so they can impress him. (Oh I wish I made that part up.)

The 12 month --> 6 month --> 4 month project ends up taking 3.5 years to complete, and looks & functions nothing like how the client "imagined" it. The client is furious, demands a partial (60%!!) refund, and never wants to see you again. The consultancy now has to choose between being sued or taking a huge loss on the project.

True story, and far too common. Of course building software is nothing like building a house, but maybe it could be. Maybe it should be.