AI's effects on programming jobs
There's been a whole lot of discussion recently about the impact of AI on the market for web developers, for programmers in general, and even more generally the entire labor market. I find myself making the same points over and over, and whenever I do that it's time to write a blog post about it, so this is that.
Doom and utopia are not our only options
There are two extreme takes on the impact of AI on programmer jobs:
- AI will take all programming jobs (usually advanced by people selling AI)
- AI will not take anyone's job (usually advanced by grumpy older developers, which I usually am)
I would like to advance a third option, which is that AI will create many, many more programmers, and new programming jobs will look different. Here's why I believe this:
- There is far, far more need for software than there are programmers to build it. You can see this in the astronomical salaries for programmers, with senior engineers at big companies making millions of dollars every year.
- AI does not eliminate the need for structured thinking about how to solve problems, which is the core of programming. It presents a new layer of abstraction. This is a point I have been making since 2018, and in 2020 and in 2023: new layers of abstraction create new kinds of programmers.
AI allows software development without knowing programming
AI has created a very powerful new abstraction that can potentially remove the need to know a programming language from the job of being a developer. Karpathy calls this "vibe coding". I haven't thought of a name I really like for this new type of developer yet. "AI engineer" is taken to mean a different thing. AI Composer? Software synthesist? In a 2012 post I imagined them as blue collar knowledge workers but that's a problematic label on lots of levels.
These new developers will know how to think in a structured way, they will know principles of how software should function architecturally, but they will know less about programming language constructs and syntax. They will be architects more than developers, instructing AI to put together software for them without needing to know about "low-level" implementation, by which I mean the code. The same way current coders don't need to think about how assembly code works. Maybe "AI architect"? Including "AI" in the name feels wrong though, it's got a horseless carriage feel. All programming will involve AI, so including it in the name will be redundant.
New abstractions are always showing up
The important thing to note is that this is not some unprecedented change. We've been adding levels of abstraction to programming since it was invented. A few years back I tried to visualize "the stack" we talk about when we talk about "full stack" developers and came up with this vibes-based chart, which I've updated to account for the last 5 years:
The ability to build software with AI is crushing down some previously very durable parts of the stack, like HTML itself, and replacing that expertise with the ability to effectively prompt and coordinate AI.
More abstraction == more software
This new layer of abstraction will do what all the others did, which is improve the speed at which we can produce software of a given quality. Assuming AI lets us build software of equal quality much faster than we did before, this will produce either
- higher quality software, produced in the same amount of time
- more software of the same quality
- enormously more software of lower quality
I think we will see all three at the same time. Some AI-assisted software development will raise the bar for quality to previously cost-ineffective heights. Some AI-driven software will be the bare minimum, put together by people who could never have successfully written software before. And a great deal will be software of roughly the quality we see already, produced in less time, and in correspondingly greater quantity.
Don't worry about your job
So if software development gets rapidly cheaper, will programmer salaries fall? I'm not sure that they will. As I said earlier, there is a vast amount of currently pent-up demand: software that needs to be developed that the people who need it can't afford. You see this every time you visit a shitty website for your doctor or dentist or insurance company or random department of government. It's not that we don't know how to build better software, it's just those organizations don't want to pay for it at current prices. Lowering the price of software deveopment will also induce demand for even more: software for people too poor to afford it previously, software for niche audiences too small to sustain it before, will suddenly be huge markets.
Instead I think we'll see lots more software developers. This vast wave of new developers will probably earn, on average, less than the programmers of today. But the programmers of today will still be employed. Existing programmers are not, mostly, going to be fighting with new developers for jobs. They'll keep their jobs (and their salaries), and a whole bunch of new, cheaper jobs will also be created, unlocking a long tail of software that currently just goes unwritten. Some, producing software of previously-unimagined quality, will even earn more than before. It will look kind of like this:

Don't worry about the fundamentals, whatever those are
Will this mean that new programmers don't learn the fundamentals? No. New programmers, like every programmer since the dawn of programming, will learn what they need to get the job done. They'll start at the top of the stack, writing with prompts only, and they'll slowly pick up knowledge lower and lower in the stack, as and when they need to learn it. This will be accompanied, as always, by a great deal of whining from people who didn't have the advantage of these levels of abstraction when they learned to build software, and as usual the whiners can be safely ignored.
Having people writing at higher levels than today will not lead to forgetting anything. There are still people who write assembly today; there are just way, way more programming jobs higher up the stack. It will not create a crisis for new grads, either. They will get jobs writing AI-assisted code and work their way down the stack (and up the salary bands) as they gain experience. Don't worry about them, they'll learn this stuff eventually. Or they won't need to, and that's fine too.
Say hello to the software developer
The net result of all of this for the programming market is: more software, better software, more programmers, better programmers. But the adjustment won't be without pain: some shitty software will get shipped before we figure out how to put guardrails around AI-driven development. Some programmers who are currently shipping mediocre software will find themselves replaced by newer, faster, AI-assisted developers before they manage to learn AI tools themselves. Everyone will have a lot of learning to do. But what else is new? Software development has always evolved rapidly. Embrace change, and you'll be fine.
And I think I've decided on a name for this new type of AI-assisted developer: we can call them software developers. Giving them some other name will create gatekeeping where none needs to exist, it will falsely imply they can never move down the stack. I've been in this game too long to fall into that trap. They develop software, so they are software developers. That's the only qualification they need.