> This shows how immature the field of software engineering is. Imagine bridges or houses were built like that.
You're forgetting a key difference between software and the physical world.
The blessing and curse of software is that there are few constraints on the solution so it can take an enormous number of different forms and still be valid. There isn't gravity, friction or the various other things that constrain physical solutions.
And each of those almost limitless solutions has different trade-offs related to a large number of different variables. It takes many many years of seeing the different impacts of those design decisions across the different variables within the constraints of different domains and contexts.
It's truly a combinatorial problem with so many dimensions that no human is smart enough to just simulate the impact of design decisions in new and unfamiliar domains+context.
You could argue that there could be standard ways of doing things within specific domains+context, but the context is so varied between companies, and business priorities have so many differences that I don't think it's a solvable problem.
The best we can do is have higher level patterns and approaches to specific types of problems that can guide people based on others experiences, but all of that still needs to be mixed and matched for the specific problem space.
I agree with your assessment and didn't say it's easy. If it was then we'd already have solved it.
But that doesn't mean it can't be solved. I'm sure 150 years ago people said something similar about flight. Not a great analogy, but the point stands that if we keep working on it and have a goal then in a few decades we could get closer to actual engineering than the mess we are in today.