Back to Home

Cretaceous Software Engineering

Why I don’t use AI to write code.
Published by Alex Suzuki

👋 Hi! I’m a Cretaceous Software Engineer.

The Cretaceous was a geological period that lasted around 77.1 million years. Dinosaurs dominated the land. The Cretaceous ended with the “Cretaceous–Paleogene (K–Pg) extinction event”, a.k.a. a giant asteroid impacting Earth, forming the Chicxulub crater.

(Source: Wikipedia)

Dinosaurs watching asteroid approaching (Image credit: Esteban De Armas/Shutterstock)

A fellow Cretacean, watching the end approach (image credit: Esteban De Armas/Shutterstock)

Lately I’ve been feeling a bit like that dinosaur in the picture. I’ve had to explain why I mostly1 don’t use AI to write code, both in private and professional contexts. Often people are surprised by this, so for their benefit as much as mine, I’ve started to list my reasons.

Writing is thinking

I recently came across an interview with Giorgio Iemmolo, a linguist and director of the Language Center at ETH Zurich, where I got my MSc in Computer Science a lifetime ago. In the interview, Iemmolo states:

“If we leave writing to AI chatbots, we won’t just lose a craft and the skills. Because writing is more than that. Writing is thinking, involving cognitive processes. The one is not downstream from the other, they are co-emergent: Linguists have shown that thoughts and their expression arise synchronously.” (emphasis mine)

I feel the same way about writing code.

When I’m writing code, I’m also constantly thinking about what I’m building and what problem I’m trying to solve. Often I end up throwing everything away because somewhere along the way I realized it was not the right approach2.

When I’m writing code, there is also something else that gets built: the mental model.

The mental model

For me, writing code the “hard way” is a down payment for future productivity. I’m trading away some speed (maybe?) for the opportunity to solidify my understanding of the code.

Most of my work is maintenance and bug fixing in existing library code. Maybe 20% of my time is spent on new features. When something breaks, as it inevitably does, I will have already narrowed down the issue to a few lines of code before I even touch the keyboard.

Similarly, when something needs to be extended or modified, the mental model will help me find a promising solution more quickly.

It’s hard to measure the value of a mental model. You can’t go parading your amazing mental model to the world, like you might do with your GitHub contribution graph.

I don’t feel unproductive

I already felt plenty productive before AI-powered code generation arrived. Those times when I felt unproductive, it was never because I wasn’t coding fast enough.

You could argue that I’ve simply not yet experienced the crazy productivity gains that wait for me right around the corner. I have toyed around with coding agents (JetBrains Junie), and the results were unsatisfying, but my experiments were admittedly shallow. Maybe I’ve been “holding it wrong”.

I currently feel neither the need nor the inclination to explore it further.

It doesn’t excite me

This is entirely subjective, but I find it hard to get excited about generative AI. When the next generation of a model arrives, with better benchmark scores, creating images with better “prompt adherence” or longer, more impressive-looking videos, I find the news about as exciting as an iPhone 17 release. I don’t feel the urge to go and try it out.

Maybe it’s the world weariness that comes with age. Or maybe I just fail to grasp the enormous potential. I mean, judging by the astronomical valuations of these companies, something has to be there… right?

That being said, there are aspects that I do find exciting:

It’s just the generative part that I’m not excited about.

It makes me feel pessimistic for the future of my craft

I have two kids, and my elder one expressed interest in coding at an early age. Before AI code generation, I felt enthusiastic and introduced her to things like Scratch, a toy programming environment.

Recently she asked me if I could show her what Python is, she’d heard about it in a YouTube video on Minecraft. Apparently it can be used for in-game modding. Where previously I would have jumped at the opportunity, suddenly I also felt hesitant to teach her what could be a dead craft.

I know my reaction is probably premature and totally overblown, but I can’t ignore it. Subconsciously, I seem to have already devalued my craft.

I don’t like what GenAI is doing to the web

Enough has been written about the wholesale appropriation of intellectual property, the devaluation of human labor and creativity, and the ensloppification of the web.

Dan Sinker’s piece The Who Cares Era makes a case for caring. I care about the open web, and I think more people should. Go make things yourself and put them online, ideally not in walled gardens. Write original, unpolished text. Draw something.

I know that GenAI is just a tool, and it’s up to the person who wields it to decide what to use it for. But the negative effects are just hard for me to ignore, especially outside of software.

The simplest reason of all

My main reason why I don’t use AI to write code is also the simplest one:

I simply enjoy writing code.

Is that a good enough reason? I don’t know. But what I do know is that when someone breathlessly proclaims they’ve “won” because they don’t have to write code anymore, and instead they’re now reviewing PRs from their fleet of agents on their phone, I scratch my head and think to myself Really? You enjoy doing THAT?

Finding your passion

I’m in my mid-forties and I’ve had plenty of opportunities to move into leadership roles, away from writing code. Not so long ago, I even ran a small software development agency. It took me a while to realize it, but the truth is simple: I enjoy the hands-on building part more than anything else.

Venn diagram depicting Ikigai

Ikigai (image credit: The Government of Japan website)

It’s rare to find something that’s in demand, that people are willing to pay for, and that you’re good at and enjoy doing. Maybe it’s because I’m half-Japanese, but I’m very much drawn to the concept of Ikigai, and I think I’ve found it in writing code.

Conclusion

The Cretaceous era is coming to an end. The sky darkens, and giant waves are forming on the horizon. I shall continue to bang these rocks together for a little while.

Artist rendering of asteroid impact
Artist rendering of asteroid impact (credit: NASA/Don Davis)

In fact, at times I feel optimistic. Perhaps it’s unrelated to GenAI, but I’ve recently taken an interest in learning new things: I want to take a drawing class to get better at illustrating things like this post. I want to get better at writing, maybe even write some short stories. Maybe it’s not the craft itself, but the learning that attracts me.

… and if writing code by hand truly becomes a useless skill in the future, I’ll try to find some archeological work to do, suitable to my Cretaceous skill set. Maybe I’ll be debugging Java Enterprise applications because nobody will remember what a classloader hierarchy is anymore, except for the dinosaurs that still walk the earth. I know my mortgage will still be there waiting for me.

Footnotes

  1. I occasionally use LLMs to generate code for one-off tasks, shell scripts, or for scaffolding something in a language that I’m not familiar with, e.g. a CI pipeline in YAML. I just don’t use it for anything core.

  2. You might argue that this is similar to an agentic loop. Perhaps!