Two carpenters were going on a journey to build a temple. As they left their homes, lo, a spirit appeared in the road and offered them a ride.
The first man harkened to the spirit, and was delivered quickly to Jerusalem. But the second man did not, for he shied not from an arduous journey. He toiled against bandits and biting winds, shared his bread, and learned much from the scribes and the Pharisees that he met on his way. He grew strong and wise, and regretted not his decision to walk.
But then he arrived in Jerusalem and alas: the temple was already complete. He gazed in wonder and tried to share his thoughts, but they had moved on to the next project.
This is partially because I’ve been too-online for the last few weeks (recovering from surgery, I’m fine thank you) but I’ve noticed a divide between two very different systems of motivation in programmers.
Firstly, the desire to build and produce, focused on outcomes and destinations. This tribe feels ascendant at the moment, and everyone is spending a lot of time talking about how productive they’ve become. And they’re right: we’re producing more temples than ever, the software supply curve is hurtling to the right. Amazing things are happening.
And then there’s the quieter incentive of crafting neat solutions to tricky problems. By typing text into an editor, in this case. You don’t hear about this as much right now, but lots of people really like to do this.
Text in editors is obviously just one part of being a software engineer. All the rest is much the same, and all the higher-level stuff is still there. But the joy of solving problems with elegant bits of code has changed dramatically. On its way to being a hobby, to be done when productivity doesn’t matter. Like walking when you could drive.
And much like driving instead of walking, there are risks: weak muscles, missing mental maps. Go clone a codebase you’ve never seen and try to figure out how it works without asking an LLM. I bet you’ll have some mental blocks, maybe check your phone. We’ve survived all sorts of new technologies. We’ll probably survive this… but there is something disconcerting about outsourcing our thinking to a GPU[1] .
So the producers are now producing more than ever. Random widgets, fun websites, data analyses. All sorts of cool things that would have taken ages to do before, but are now a snap of the finger. It’s mesmerising how easily you can conjure them.
But something has been lost in this ease. I used to do loads of random little data analyses and explorations and apps. Not because I thought the outcome would be interesting to anyone: just because I thought the process of trial-and-error, comparing datasets, tweaking algorithms… I thought that journey would be interesting to me.
There’s an idea → execution → result loop. AI deletes the execution step, I foresee the inevitable result, and move on. Maybe I even press the magic AI button and see the result. I still do random projects. They’re bigger and faster, plausibly better. But I don’t learn as much, and seeing the result doesn’t hit like it used to. That flow-state zen magic isn’t there.
I want to be clear that I’m not talking about who’s going to succeed in the new world. Success used to be a function of brains, now it’s a slightly different function of brains. Being good at writing code is probably correlated with being good at writing prompts. People talk about agency and distribution. Execution. Business-y stuff.
What I’m talking about is just joy. The joy in writing some elegant code. The small joys of small human things. The joy in a great chess move, without the let-down of an engine telling you it was actually suboptimal. Organic, human, meaty stuff.
We’ve got LLMs that are already better than most at coding (narrowly defined). It won’t be long before they’re better than most people at most things. I think it’s going to be quite a hit to Homo sapiens’ ego. I think it’s going to be a weird time for humanity.
Coding was uniquely human, until it wasn’t. I hope the agents enjoy the journey.
[1] go back There’s a common idea that LLMs are just another layer of abstraction, like the transition from transistors to assembly to C to TypeScript. But I think it’s quite different: all the previous jumps involved solving the same kinds of problems in the same kinds of ways. I’ve programmed with magnetic relays, and it was joyous in just the same way as using MATLAB to solve Newton’s method or Python to make shapes with arrays. Writing in English to an LLM is not the same.