Steve Simkins

Programmers on the Verge of Extinction

Examining the parallels between art, AI, and the existential threat to programmers

cover

Build a B2B SaaS, make no mistakes

Great meme, but in reality that’s how most of our time “programming” has gone. We tinker with multiple agents, git worktrees, markdown files in a dozen different folders, all to maximize our effectiveness with AI assisted coding. Sometimes it can be exciting, watching a computer spit out code that actually works, bringing your ideas to life at a rapid pace. I personally have been using Claude or OpenCode to build several projects, but to be honest, most of them have left me feeling rather empty. The end product is useful, the job gets done, but… I don’t really care for it? As in, I don’t feel an obligation to keep updating it or make it better. Such an odd and weird feeling that for at least me personally has stuck around since going heavy into AI programming. Why is that? Why does programming feel so empty?

Data Learning to Paint

I recently watched a great keynote by Brian Sandersen, a sci-fi/fantasy author. In it he tries to answer the question of why AI generated art gives him such a bad taste in his mouth. He admits that his opinion can be counted among those in history who despised new technology and were left to eat their words, so he tries to go another level deeper by asking “what is art?” and “why do we make it?” To help answer this he turns to Star Trek: the Next Generation character Data.

data painting

He’s an android, and a lot of his character arcs were about exploring what it means to be human. One of the recurring themes in the show was his attempts to create art: painting, poetry, music, becoming a comedian. I rooted for Data, a synthetic being without emotions trying so hard to understand the human experience. I still do. I have no problem with Data creating art; if he were real, I’d applaud him.

Why do I empathize with Data yet not the AI large language models?

As Brian goes down this rabbit hole of creating art, and recalling his own creative writing journey, he realizes that art is more about his journey, rather than the end product.

Data created art because he wanted to grow. He wanted to become something. He wanted to understand. Art is the means by which we become what we want to be.

The Need to Grow

You ever look back at some of your earlier projects or pieces of code? For most of us, especially myself, it can be pretty cringe. However, it can also be encouraging. That feeling stems from the root that you have grown since you last wrote that code. Your knowledge has grown and your skills have evolved, giving you the ability to write cleaner and more efficient code. Not only that, your problem solving skills have also advanced. Programming is mostly problem solving, and by pushing yourself further and further, you can solve harder problems as time goes on. At least, that’s how it used to be.

Nowadays we make AI models solve those problems. You may counter with the fact that “oh well this is a problem I solved before,” and sure some stuff can be pretty trivial, but if you never stop to solve those problems, will you remember how to do it without an agent? I like to tell myself I’m not becoming dull, but I know better. What about the next generation of developers who haven’t solved that problem? I’m sure the agent will give them the answers, but now there’s an implementation that hasn’t been reviewed by someone who understands it.

I think we can also argue that it’s ok to use AI for scaffolding code, saving time by not having to write boilerplate that we would have needed to write before. While that’s true, and it’s often something I do myself, I’ve started to wonder if this is part of why my code feels so empty. If I already knew the answers to the problem and I didn’t write it, did I actually do anything? What did I accomplish outside prompting an agent?

How did I grow?

The Need to Produce

In Sandersen’s keynote he also talks about how art is mostly useless in the grand scheme of things. Yes there is a case for art being consumed by others, but primarily art is about the intrinsic need to make it. It’s about the process, and how it changes you in the journey.

The book, the painting, the film script is not the only art. It’s important, but in a way it’s a receipt. It’s a diploma. The book you write, the painting you create, the music you compose is important and artistic, but it’s also a mark of proof that you have done the work to learn.

The argument could be made that programming is in many ways a type of art. It involves creative solutions to problems that can be solved numerous ways. It can evolve your perspective and strengthen your mind. In my personal experience I even find it therapeutic. However there is a key difference with this and what Sandersen draws: the product.

Unlike most art, the product of programming is indeed useful, let alone profitable. For the majority it’s why the programming exists in the first place. The finished software is designed to be used, consumed, and often purchased. Those of us who do software development professionally are expected to produce, and to do it quickly. AI has only made this worse since agents bring the ability to write lots of code at once. In the grand scheme of our programmer evolution, the need to deliver the product outweighs the need to grow.

Extinction

In the tug-of-war between growth and producing, programmers face an existential threat. Juniors are faced with the decision of switching careers because the industry tells them they are replaceable, even though the CEO of AWS would say otherwise. If the next generation of programmers sticks around and they don’t experience the growing pains of non-AI assisted development, how will they be able to solve harder problems? The senior engineers will only be around for so long. For those juniors, AI can only take you so far, and you better hope that it doesn’t make mistakes in fields like medicine or security. When the machine built to give specific doses of radiation suddenly gives too much because of an obscure bug, they’re not gonna blame the AI agent that wrote it. An extreme example perhaps, but with how much our world depends on software, this type of tech debt adds up. Just look at how many times the internet has basically crashed over the last two years due to bugs from cloud providers.

True programmers exist because they’re passionate about solving real and hard problems. They enjoy the satisfaction of solving a puzzle that helps people. By offloading that problem solving to an agent, we’re cheating ourselves of an experience that would give us a sense of fulfillment, and knowledge that we would otherwise not have. Not only that, but the desire to maintain that software down the road will be nonexistent. Why would we bother trying to fix bugs in something that cost us zero blood sweat and tears?

Moving Forward

It’s hard to say what the future looks like. On one hand I like to be optimistic that traditional programming will continue to exist, but I also know plenty of programmers who don’t care how they get to the final product, and that’s their choice. There’s a chance none of us are writing code in a decade or possibly sooner, but I don’t live in the projections of the future. Instead I’ll be trying to find some kind of balance between using AI and doing the work manually, with the key objective of enjoying the work I do. I want to solve the harder problems, problems that can’t be solved with vibe coding. I can’t do that if I let my mind become dull.

Therefore, we have the power here and not the machine, for it was created to try to make something useful. But it cannot admire what it made.