This is Why I Wrestle
On keeping the ability to think and solve problems without AI
Writing a simple algorithm is one of the few joys I still find in programming. The work today gives me far too few opportunities for it, and even when one arrives, I’m incentivised to delegate the code to an agent. All I have to do is review its output, and move it along once I’ve confirmed it works.
I may spec out the problem in great detail, including the edge cases, and hand it over to the agent. When it’s done, the output I review is not the product of my thinking. Even if it’s right—and it often is—it’s still not the product of my thoughts. It may have neatly avoided a nested ternary, used a variable name I would not have thought of, or even made the solution more complicated than it should be.
“Wow, this is pretty smart,” I say with a glint in my eyes as they catch a clever trick it has deployed to avoid a nested ternary.
“Oh no, inverting this early is suboptimal,” I say with a frown, as I prompt it to make a revision.
My oohs and ahhs only happen at the level of my understanding, as I cannot be impressed with or criticise what I do not understand. That understanding, however, is often overestimated when it is used as a proxy for skill. I may read some code, understand it, recognise the patterns — and deceive myself into thinking I’d have arrived at the same solution on my own. That obviously I would have short-circuited there or used a dictionary for faster lookups. But that is not true.
Maybe there’s a 1-in-10 chance that I would have done that, or that I would have gotten there after the 15th iteration of my solution over a span of two weeks. But if I had sat to write the function myself, I may have taken a different approach, doing certain things better and other things worse than the AI. This solution would be closer to being the product of my thoughts than anything the AI would generate for me.
The quality of the product of my thoughts at that level matters to me, and I want to protect it. I wrestle against its slow decline, and against the illusion of growth wrought by the cursory reading of the AI’s solution, task after task, feature after feature.
One of the ways I’ve seen people wrestle with this is to set aside certain days where they lean on a coding assistant as little as possible, if at all. You still get AI’s benefits the rest of the week, while spending those days honing the quality of the product of your thoughts. On those days, you find out how much of what you’ve understood you can actually reproduce yourself. It’s a truer measure of where your problem-solving skill sits.
Another approach, which I think of as raw-and-polish, has me write the code by hand, then sharpen it myself with an AI’s guidance. One way to practise it is to have the AI write the tests and stub out the functions, leaving the bodies blank. Then you write them yourself. The other is how I use Codecrafters, a platform for building popular technologies from scratch. I solve each level myself, then have the assistant show me what I could have done better, every few levels.
These strategies aren’t always feasible, and they don’t guarantee my problem-solving skills won’t fade. But at the least, they keep me aware of how much skill I still have. They keep me honest about the sharpness of my intuition, pulling off the blindfold the AI slips over my eyes.
I do not want to keep that blindfold on. I do not want to lose my ability to think and solve problems without an assistant’s help. This is why I wrestle.
Thank you for reading!


