Is This the End of Programming?

Home » Artificial Intelligence » Is This the End of Programming?
Buffy the Vampire Slayer pounding a wooden stake into a laptop.

Buffy the Vampire Slayer does not endorse this blog. AI-generated image with Grok.

I’m sure that you’ve heard that programming is a dead-end job now that AI can do it. With the recent announcement of the o3 model beating 99.95% of competitive coders, is it time to skill up in a new domain and switch jobs? Let’s consider this from the perspective of someone that would “hire” the AI instead.

I’m a product manager, which means my job is to define what software needs to get written. I’m deeply technical, with a Computer Science degree. I code my own projects with AI assistance as a hobby, and I’ve worked in AI platform and product for 8 years. I have access to the best AI models and tools, with full permission to use them at my company. If anyone is going to replace programmers with AI, it should be me.

No way. We still need software engineers to use the AI.

Why we need software engineers

I’ve spent more time and effort on backend systems than many product managers, and I’ve never been willing to remove all my focus from our systems and technology architecture. I could draw out the diagram of service interactions and a high-level communication diagram now, but I do not know our codebase — not at all. If I were to try to fix a bug, I wouldn’t know where to start. Could I learn this? Yes, at the expense of holding other things in my brain. Could AI develop an understanding of all the code of several different services working together? Not currently, no.

This may not be obvious if you aren’t in software product development, but software engineers spend fairly little time typing code into Visual Studio. I know many engineers that consider it a good work day if they can be programming for two hours (they love programming). What are they doing instead? A short list:

  • Designing architecture
  • Designing services
  • Filing bugs
  • Triaging bugs
  • Planning the milestone
  • Planning the sprint
  • Working with other teams’ engineers
  • Understanding priorities
  • Understanding specifications
  • Documenting decisions
  • Fielding service alerts
  • Review pull requests
  • Debugging — lots of debugging

Someone has to be doing all of this work that surrounds the actual “programming” part of software engineering. In fact, once all of this is done, a junior engineer is often assigned to write the code and validate it. Fully defined and unblocked software is relatively easy to write. That’s the part that AI is great at now.

But can AI help with the rest of the software engineering role?

How programming may evolve

AI can now sometimes complete that final step of typing the code into the editor. That’s great, but it cannot do so unless the feature is completely defined and unblocked, and it cannot do that definition itself. In fact, AI cannot do any of the above list on its own — not one step! Clearly, AI cannot replace software engineers today.

What AI will do for software engineers is accelerate how they perform each of these tasks. Architecture and services are easier to design when your reference material is brought in right when you need it. AI can de-duplicate bugs and apply the first pass of a priority bar. It can help write designs, supply one set of eyes on code reviews, and search for error messages. AI will get better and able to perform more of these tasks, but understanding the priorities and applying AI appropriately will continue to require a professional.

Moving up the stack to work on broader and higher-value functions is nothing new to programmers. We’ve been doing this for decades, moving from microcode punch cards to assembly line editors, to low-level languages in terminals, and then to high-level languages with full-featured IDEs. Speaking for myself, coding with AI assistance makes it more fun, not less. Solving problems is often much faster, without removing the thrill of getting it to run without errors.

Software engineers will continue to be early adopters of generative AI. Even within this AI wave, they have already transitioned from code-completion to also use chat. As agents begin to gain capabilities, software engineers will use them too. Meanwhile, the best engineers will also use AI for the rest of their work that happens outside of the IDE. They will get more done, but they are still the ones doing the work, not Product Managers.

What about other domains?

Programming and software engineering is ripe for AI assistance, as I’ve written before. Although software does this most formally, I believe any information work follows a similar pattern. There’s a huge amount of information-gathering, discussion, and designing before you can produce the “output,” whether that’s a document, closed deal, or hiring decision. And then there’s a great deal of communication and dissemination once the output is complete as well. AI can help with all three parts.

One of my favorite memes of 2024

I recently wrote a fundraising email for a non-profit. I gave Copilot a previous email for tone and set a new goal for the email. From the output, I pasted in a customer testimonial, and I asked Copilot to write an intro sentence for it. Along with a second and third volunteer, we only made minor edits to what Copilot wrote. This was about twenty minutes of authoring and reviewing, and five minutes to set up the mail merge. We’ve already raised $52,000!

We can learn a lot from how software engineers have embraced AI. They know that output is what matters, and they know that we are nowhere near saturating the market for software. They’ve realized they can do more fun work and less boilerplate work. They put in the time to learn the technology and how to apply it to their jobs. This is why their productivity is up between 26%37%.

The future of software engineering and all knowledge work is very bright, as the best workers apply AI to repetitive and lower-level tasks. The human understanding of context, priority, and the overall work, not just the programming, remain irreplaceable. Get to it!