Chess and code

blog

·  

projects

·  

github

·  

cv

 

#all #ai #ctf-writeup #docker #git

A long time ago chess was a game for humans. To play chess well was to play chess with emotion. After all the game is war, and war is emotional.

Before long, humans moved on to a more strategic and analytical chess. But still, the game belonged to us, as chess was a game of deep, branching paths - and machines would never have the intuition to play like us.

But machine minds do not tire - and at the end of the 20th century, they beat the best human at our ‘people chess’.

For a long time, chess was believed to be a game that only humans could play. We now know that this is not the case, and chess engines will beat human players without much trouble. In the world of software, a similar tale is unfolding as AI coding agents outproduce even the most wired-in developers.

Bad code, good software

As we enter 2026, a debate rages on - and both sides are shouting past each other. On one side: code can be written by AI, but what it produces is steaming-hot garbage. On the other side: Ralph Wiggum is on an all-night reckless --dangerously-skip-permissions bender. The hype is real, and I find myself flip-flopping between them. Both sides are right: coding agents can produce hot-garbage, but maybe that doesn’t matter, and ‘good enough’ is good enough?

Unlike chess, which has a winner, software is more nuanced. Yes, you can write “bad code” - but what is ‘bad’? Buggy and slow, sure. But is code that completes its task bad? Undertale infamously has one giant switch statement for its dialog system - while to date it has sold over 5 million copies. Yes, ‘real’ developers may turn their nose up, but the code achieved its purpose.

Undertale is proof that the conventionally ‘right’ way doesn’t matter when producing successful software - and I’m sure there are many more examples across all industries that demonstrate the same. Likewise, in chess, the engines have a tendency to play ‘weird’ moves. These moves on the surface look strange to a human - but lead to successful positions.

I wonder if this might be the future for our coding agents. By allowing our agents to produce ‘bad’ code that doesn’t follow typical aesthetic or design choices, can we still produce successful software? I’m optimistic about an agentic future, and I regularly let coding agents take a first pass at a feature - but I can’t help having a ‘tidy’ pass to improve aesthetic and human readability.

‘People code’

There is also a strange tension where the ‘game’ of software is being pushed aside because of coding agents. The people who enjoy the game of software are having their identity challenged because a machine can now do what they love. Professional chess players still exist and play ‘people chess’ because there’s still beauty - and money - in it. ‘People code’ might still be beautiful, but is there still money in it?

Software can be enjoyable like a game, but mostly it’s business - and the problem with business is the thing we’re optimising for is market efficiency. Craft-focused teams and artisanal software sound appealing but the extra time (and therefore money) required will push us to “good enough” agent code. Even teams that value craft may not be able to afford it.

Software is rarely art - even if well crafted code feels special - it is a means to an end. If generated code is 80% as clean but 3x as fast to produce, market pressure will decide the winner.

Ultimately, coding agents won’t eliminate ‘people code’, just like chess engines didn’t eliminate ‘people chess’. But we won’t be able to enjoy the craft as much during our 9-5’s. There will still be times where we roll up our sleeves and work at a problem ourselves, but it will probably after our agents have messed something up again.