Stop Coding (Unless You’re Like Me)
I started to do two things this year: writing code and telling others not to bother learning to do it.
I give advice that I’m not following myself.
This week I spoke to a young and successful lawyer who’s considering retraining into tech. One reason is that they don’t like law very much; another reason is that AI looks like a distinct threat on the horizon — and rightly so.
My advice was not to assume that cushy jobs and stable careers that software developers enjoyed for decades until a couple years ago are going to return. Maybe, maybe not. Get a job if you love risk, I said. The job disruption, especially for software developers, might resemble the fall of the USSR, I said.
And what did I do myself for most of the week this week?
Right: I’ve been writing code.
For context, for readers who don’t know me, I studied Computer Science and used to be a professional software dev until 2013 but I was sure those days were behind me. I never wanted to get back into software even when it paid big bucks and the future of the profession looked bright.
Now I’m working on something that I hope might become a donkeycorn on my own1 and I just took a new AI consulting project, which will be mostly coding. So why am I telling other people that coding might not be a safe career choice anymore while coding more and more myself?
I’m somewhat pessimistic about the future of the software development profession as we know it because AI2 is — already, today — scary good at writing code.
When I said I’ve been writing code this week, I’ve been using exclusively English to explain to AI what needs to be done. It’s hard not to see the (near) future in which most code, including complex code, is written by AI, with software developers guiding it in plain English.
At the same time, it’s not like I can tell the computer what to do and relax. It turns out that explaining exactly what needs to be done and how it must be done is half the job and is not easy. In fact, this was the case in software even 20 years ago. AI doesn’t change that.
So why am I practicing the skill that’s supposed to become obsolete?
Reflecting on what I do, I’m doing the engineering manager’s job, not the job of a software developer. I don’t write code myself. But I own the development plan, I read the code to make sure it looks okay, I instruct and challenge my AI agents, I make sure they follow a good process3, I made decisions about the tech used and shape the roadmap.
If my experience is any indication of where things are going, the world will see a stagnating or even declining number of software developers and a far greater number of people who build software.
Here, I think of software developers are people who could build software without AI. This skillset, while valuable, will likely be becoming more and more niche, like assembly programmers4 are today: they exist and they are indispensable in some areas, but raise your hand if you know a single person who writes assembly code.
But building software by managing AI systems that build software is all about making constant judgement calls instead of typing code. And judgement calls are much harder to delegate to AI, at least for now.
I suspect software is going in the direction of writing: once a specialised skill, now it’s part of every single job. We won’t even think about it as a separate skillset. We might not even know we’re building software: we’ll be explaining to our AI assistants what we want to see happening and they’ll be building software to do it behind the scenes.
One particular aspect of AI-assisted development5 is that it’s much more fun. Making judgement calls is much more fun than writing code by hand, at least for people like me who aren’t professional software developers today. It’s like composing music on a piano that produces decent sounds no matter which keys you press: you can get far even if you can’t play scales.
As much as I like using just English for software development, I also notice that my software engineering experience is highly relevant: I know what’s supposed to happen. I can read code. I know in what order software is supposed to be built. I have a sense of when an AI-proposed solution is over-engineered. I can ask AI to explain to me what’s going on and we can debug together, but only because I’ve done years of debugging myself.
So my CS education and software development experience feels highly relevant. Yet, I think it’s a temporary situation. Over time, and much faster than the lawyer I spoke to earlier can learn to code, AI will move to a higher level of abstraction. At this point, a conversation with AI will be no more complex than a conversation between a non-technical CEO of a business with their CTO.
Sure, the non-technical CEO will need to have a decent grasp of what their business is doing, but they don’t need a CS degree for that. They need to be smart, articulate and able to think critically and communicate clearly. We’re not quite there yet, but we will be there soon — a year, maybe.
So my technical background is plugging a temporary gap that will disappear. That’s why only people who genuinely love tech should start a career in it today. In other words, not for big bucks or job security.
But I do encourage everyone who intends to have a job to learn to build software with AI and to use AI widely in general. Not to generate slop to put on LinkedIn — there are other people busy doing that already — but to understand the immense and awesome power of the technology.
Not using AI is like being an archer who’s ignoring the invention of guns. You may ignore it all you like, but the gun will win. Whatever job you hope you will be doing, you’ll likely benefit from understanding how to best use AI tools.
If you’d like to get a sense of where software development is today thanks to AI, check out this video: it’s easy to follow even if you never wrote code yourself. Andrej’s conclusion?
38:12 What an amazing time to get into the industry. We need to rewrite a ton of code.
I think he’s right on both counts, but I imagine most of this work will be done in plain English — not C++, Java, Typescript or Rust.
Watch this space, the target audience is substack writers :)
I mean tools like Claude Code, Cursor, Windsurf, Figma Make, Replit, etc.
TDD, mostly.
Assembler is the most low-level programming language used in niche, but critical areas: high-performance computing (e.g. cryptography), embedded systems (e.g. inside a medical device), parts of operating systems. All of these are critical, but very rare applications.
I prefer this to “vibe coding” for reasons explained in this essay.
> It’s like composing music on a piano that produces decent sounds no matter which keys you press: you can get far even if you can’t play scales.
Sure, a beginner might find that more fun. But a professional pianist, who has learned to use the keys to produce exactly the sounds they want, would not be pleased if their piano started second-guessing them and producing different sounds. This would be so even if the piano had decent judgement: the point is that it’s not *their* judgement as the performer.
I am not a professional pianist, only someone who took some piano lessons when he was younger. But I am a professional coder, and in my limited experience, AI-assisted coding is much less fun for me than manual coding, for analogous reasons. When I start writing some code, I usually have a pretty good idea in my head of how I want it to be structured. And I take great pleasure in gradually refining that idea as I bring it to life. I like to make judgement calls, yes, but that includes judgement calls about small details, the kinds of things that would take much longer to explain in prose than to just code out. If I left those calls to AI, then I wouldn’t get that same pleasure. The work might be fine, but it wouldn’t be my work.
That said, I don’t do much AI-assisted coding because AI is not competent enough yet. Perhaps the fun factor will show up once it is.