I claim that the opposite is true: The reason there are so few software projects that are really great is because high-level skills, not low-level ones, are in short supply. Every CS graduate can implement Paxos. The number of people with the experience needed to take an implementation of Paxos, and many other components, and put them together into something that works really well is much, much smaller.
> But I have bad news for you. This kind of software will soon be written not by you, but by an AI.
AI is actually much better at writing low-level code than high-level code. If you tell it to implement a piece table or a Fibonacci heap, it will do so without problems, in any language. If you tell it to create a simple CRUD application using existing libraries, it will output something that doesn't actually work.
I am actually currently writing a novel text editor, and I can guarantee you, my requirements mean that an AI cannot help me with that directly, because the underlying mechanisms I need don't exist yet. The AI is still helpful though when researching existing mechanisms, and to pinpoint why they don't work for me.
> AI is actually much better at writing low-level code than high-level code.
> If you tell it to create a simple CRUD application using existing libraries, it will output something that doesn't actually work.
If your low-level code is just a copy or adaptation of something existing, then yes, AI is really good at that. Something novel though, AI cannot help you much here.
On the other hand, simple CRUD applications will all be done by AI very soon. Probably not using existing libraries though, because these are crap.
But there is certainly a role for humans currently in high-level design, I agree with you here. But this high-level design crucially relies on your ability for low-level design, with the ability to imagine and then implement (possibly with the help of AI) the building blocks you need, not just reuse the ones that are there.
It seems to show up more in hobby stuff, or in cutting edge projects.
I'm always excited whenever I see any kind of algorithm work, because it's such a novelty. Most everything I do is just a UI around a few libraries.
If we can’t create special libraries that work well for common tasks then as a species we are too dumb.
Is all of this satire?
I have lived evidence that not nearly every CS graduate even knows about the topic that Paxos addresses.
I've got masters degree and I don't think anyone even mentioned word "paxos" or "raft" during my 5 years there.
Fortunely internet is a thing and I could read something about this topic.
I know graduates from various public schools and people who heard about paxos (let alone can implement it) are tiny %.
I guess if you’re always using libraries though, you may mistakenly be thinking that these libraries are just doing trivial work. Once you dive in and try to implement the low level stuff, then you realize how big of a disconnect there is between a fuzzy idea in your head and the lines of code that constitute that idea in reality.
1) Much more often than not, the ready-made building blocks are crap. Your software will reflect that crappiness, and your life will consist not of writing software, but of maintaining and massaging crap.
2) Even if your ready-made building blocks are high-quality, they limit what kind of software you can write. Ideally, you imagine what you want your software to do, and then you write software to do it. You create the building blocks in that process. If you are only using ready-made building blocks, there is a lot of great software you just cannot write. And I think we all see that, because there isn't much great software around.
These problems might not be a concern for you. If you write software that is pretty much just more of the same, 2) does not apply to you. And while 1) is still problematic, it will be just manageable because you use these building blocks mostly on their happy path.
But I have bad news for you. This kind of software will soon be written not by you, but by an AI.