Part of the challenge is that most developers are not engineers. In proper engineering training, there are best practices and safety guidelines taught across the board by accredited schools. In software any cowboy with a keyboard can produce code. Unsurprisingly, most of it is shite.
I feel like we managed to get much closer to proper engineering in our own little corner: version control, CI/CD, code reviews, don't-write-your-own-crypto, standardization, etc.
The problem is that it's still hard for software engineers to go to business people and say "no, we can't build a bridge that crosses the Atlantic Ocean".
With the introduction of non-technical Product Managers it became even harder. Now we have to convince two layers of people that some idea is unsafe or that it's gonna be more trouble than it's worth.
> With the introduction of non-technical Product Managers it became even harder. Now we have to convince two layers of people that some idea is unsafe or that it's gonna be more trouble than it's worth.
It speaks again to the lack of rigor in software. In professional engineering
practice, the project manager is always a P.E. who takes responsibility for the final design and signs off on the product before it goes out the door.