Software trends towards higher abstractions. You can do more with less. Not only do developers never need to touch hardware anymore, but they might not even need to interface with public cloud providers and might opt to use developer-friendly middlemen. That means less code to write (and maintain). Less code to write means a narrower range of skills needed to get started. This lowers the barrier to entry. The average developer doesn’t need to know about Linux system administration or manual memory management (and that’s ok).
AI tackles the other end — how do we write and debug code faster? You must maintain it, but the iteration loops are much quicker. Generate a draft to start with. Debug with AI assistance. Experienced developers can be much more productive. The intuition around what code generation is right and wrong saves developers significant time writing the code. I’ve often found I’m still guiding the models to generate the right code, but I can outsource the work. Knowing what you want and how to do it, combined with AI, makes you a powerful developer. More productive developers should mean even higher salaries for the best developers.
On the other hand, less experienced developers can get away with gaps in their knowledge. They could generate a bunch of code with AI, but they won’t be able to maintain it or accurately debug the inevitable mistakes. But instead, there are enough developer-friendly primitives for junior developers to deploy to (countless frontend frameworks and hosting APIs). Less experienced developers, who might not have been able to deploy an end-to-end application, might be able to cobble together a cloud-hosted function partially written by AI.
Finally, the middle of the pack might get squeezed out. Developers that can write code but can’t wrangle dependencies or reason about code quality or maintenance will suffer. On the other hand, experienced developers will take on some of their work (as part of being more productive), and less experienced developers will use AI to deploy work more on par with their work.
I like your take, Matt. This is exactly what I have been doing, too. If you know what to ask for and can guide a model towards producing things that are useful, you save tons of times. Especially when you need to solve a problem that requires code you usually would need to think about for a while... just explaining what you want clearly can often get that in a single prompt + response, and then a few debug iterations.
The whole idea that "everyone is now a developer" and "all developers are the same" is simply going to be wrong for a long time -- the knowledge of how to build things in a good way (system architecture) that is maintainable seems more important than ever.