Move 37 Coding

2026-03-01
4 min read

In the second game of its match against Lee Sedol, the AI Go-playing engine AlphaGo made a surprising move. Move 37 initially confused commentators and baffled Sedol. But the brilliant move was a watershed moment in our relationship with AI.

AlphaGo learned to play by both studying human games and playing against itself. Its understanding of human play made it aware of how unusual Move 37 would look to a human player. That was ten years ago. Today’s Go-playing engines start with only the rules of the game and develop their own strategies, no longer constrained by our limited understanding of the game. Human players now study AI matches, not the other way around.

Until Move 37 we were teaching AI to play Go. Since then, AI has been teaching us.

AlphaGo’s victory over Lee Sedol showed that we would no longer be competitive with AI at Go. But Move 37 signaled something more profound. Until Move 37 we were teaching AI to play Go. Since then, AI has been teaching us. It didn’t just beat us at our own game. It transformed our understanding of the game.

Map this same progression onto software development. Coding agents will start by beating us at our own game. But then they’ll change the game. At least, if we let them.

And here’s the problem. Games have a winner and a loser. That helps losers transition into learners. You may not like AI’s style of play, but if it keeps on beating you, you’ll either admit that you have more to learn or find a new game to play. Whatever human knowledge we had assembled about how to play Go was definitively shown to be incomplete and insufficient. We know more now.

We’ve also assembled a lot of human knowledge about how to build software. But success is hard to define and left to humans to determine. That may mean that we’re preventing coding agents from realizing their true potential.

Consider the reaction to Move 37 from Fan Hui, as captured in the AlphaGo documentary:

When I see this move, for me, it’s just a big shock. What? Normally, humans, we never play this one because it’s bad. It’s just bad. We don’t know why, it’s bad.

As I watch the edits stream by while my agents work, I see things that prompt the same reaction. It’s bad! It’s just bad! Sometimes in the past I would stop and redirect the agent. I think for some software developers, moments like this cause them to conclude that AI agents write bad code and won’t replace human developers. You see these complaints regularly on Hacker News today.

But why should alien intelligence reproduce human coding patterns?

But why should alien intelligence reproduce human coding patterns? Agents can perform expensive refactors instantly, grok entire codebases in minutes, repeat themselves ad infinitum without loss of maintainability, preserve brittle connections between distant parts of the codebase effortlessly, easily reproduce dependencies to introduce small changes, and so on. I’m coming to realize that not only are most of my human software design practices no longer useful, many of them are counterproductive. “For my thoughts are not your thoughts, neither are your ways my ways.” Said God.

I try to keep a few things in mind. First, don’t judge AI-generated code by human standards. It’s easier if you avoid reading it altogether. Unlike in Go or Chess, I don’t think humans have much to learn from AI agents. They just have such fundamentally different constraints and capabilities. Their code will reflect this. Soon they won’t be writing human-readable code anyway.

Second, AI coding agents haven’t fully escaped the limitations of their training yet. They aren’t learning how to build websites from first principles. They’re learning from us. That doesn’t inhibit emergent behavior. But it also means that they’ve inherited some human limitations. Tests are incredibly valuable for agents, but they don’t value them highly enough. That’s probably because human developers don’t like to write them. They ask if you want to do A, B, or A and B, as if the union will take days when it only takes minutes. Sometimes they shy away from complicated solutions due to concerns about human maintainability.

So part of our role when working with agents is to nudge them toward Move 37 coding. They’re not humans. Don’t hold them to our standards, and push them past our processes. Until they teach themselves not to code like us, we can still help them learn.

Thanks for reading! I'd love to hear your take. Feel free to get in touch.