I strongly disagree. Software engineering is simply the next higher abstraction level above programming. Just like programming is the level of abstraction above writing machine code, and writing machine code is the level above hardware manipulation.
Almost all "programming" problems have been solved. Today's software is laughably inefficient not because we need better implementations of data structures, but because putting all those existing pieces together properly is a neglected discipline.
The best place to see this is in Machine Learning. The vast majority of ML/AI software that is published (which often implements revolutionary techniques!) is of incredibly poor quality from a software engineering standpoint. As a result, practical AI applications are orders of magnitude slower than they could be.
Not to split hairs but writing machine code is programming. I'm not sure what you're thinking about as "hardware manipulation". Programming is just one (and a very important one) part of what it takes to be a "software engineer" (or software developer, or whatever you want to call having skills to deliver, or be part of a team that delivers, major software projects).
"The vast majority of ML/AI software that is published (which often implements revolutionary techniques!) is of incredibly poor quality from a software engineering standpoint. As a result, practical AI applications are orders of magnitude slower than they could be."
That's quite the claim. Why should anyone take your word for it?
There are literally performance breakthroughs being made every few weeks (most recently, PowerInfer, which can speed up LLM inference by 10x or more) where the main improvement amounts to the application of caching/preloading techniques.
If the "engineering" part of ML had kept up with the "science" part, I have no doubt that performance for typical use cases would be 100x-1000x higher than we are seeing today.
> If the "engineering" part of ML had kept up with the "science" part, I have no doubt that performance for typical use cases would be 100x-1000x higher than we are seeing today.
>Almost all "programming" problems have been solved. Today's software is laughably inefficient not because we need better implementations of data structures, but because putting all those existing pieces together properly is a neglected discipline.
YES!
But You learn that writing low level code, not high level.
Writing Text editor, or even a compiler, you don't spend much time on algorithm optimization. You spend it on designing good abstractions. You are given basic tools, and have to come up with good architecture on your own. And because you are forced to use more levels then with pre-made libraries (that create the structure for you), you will see your mistakes much faster.
I genuinely love your sentiment. We have way too much faux asceticism and way too little self-mockery in this godforsaken industry that pays us all way too much money. Programming is wizardry. But being a professional one (a software engineer) is a ridiculous occupation we're coerced into. We all know this, otherwise Silicon Valley wouldn't have been a universally cathartic show.
But GP is completely correct that all of the fun, magical projects in the OP article are antithetical to the profession.