What we commonly call "software engineering" these days has not much to do with what you just said above.
Perhaps; I'm just a stickler on labels, and refuse to call script-kiddies "programmers", or "contractors" substituting toilet paper for wall insulation "professional builders".
It is certainly true that most of the software you'll ever encounter is utter shit. The "this will probably blow up in your face when you are most vulnerable to failure" kind of ineptitude.
Over the entire globe, most who throw code together aren't even programmers, just aggregators hoping for the best.
I refuse to call anyone a software engineer, if I have seen them produce the kind of spit-and-bubblegum aggregations of code that I encounter daily.
I much prefer to check if they have the ability to do better; if not, then gently suggest they learn, with useful pointers. If they refuse to learn, claim they just need to fulfill their current deadline and will do better in the future; or if they do have the ability and just didn't, I shall berate their asses off, calling them the lazy cheating fucks they are. If that makes me an asshole, I'll gladly be one. I do expect/wish the same from others, BTW.
(Above, I'm referring to my behaviour out and about in the world, not in a workplace. In a business environment, one should not and does not need to be an asshole, just have some authority over the devs compensation, to get the needed results.)