I've always hated the term 'Software Engineer'. It devalues the term 'engineer' and it misrepresents what software creators do.
When Engineers build a new kind of bridge for the first time they have all kinds of problems; resulting in time and cost overruns. New kinds of bridges requires a lot of creative problem solving. However, once they've solved the problems the next similar bridge is quick and cheap and safe.
Software is a new bridge every fucking time, because copies cost nothing.
The act of Engineering consists of making a copy of a bridge. Thus all the time and effort put into creating specialized tools and working out the structural strength/weathering patterns of your materials; because those never vary.
But there's no money in copying software. So, even if you are simply creating version 22.06b of a venerable word processor you have to do something different you've never done before or there's no point.
And all your tools and materials are software too.
Is it possible to perform the act of #programming as a true engineering practice? Possibly. It has been tried for certain 'unreliability would be fatal' cases. https://www.fastcompany.com/28121/they-write-right-stuff
Here's the thing: actually reliable software is really fucking expensive. Maybe a hundred times more expensive than how we do it. And the way we do it is wasteful as hell!
Most of what we currently call 'Software Engineering' actually consists of reducing that waste, within the realities of software as a craft.
The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!