The silent tyranny of AI driven development
AI driven development is poisoning your well. Here's how to regain control.
Modern conveniences
AI driven development is the emerging standard for software development. From the early days of copy and pasting solutions from ChatGPT to the modern AI coding agents, it is only getting better. I have no doubt in my mind that as time passes, we’re only going to see more improvements.
The knowledge of programming principles is no longer a requirement to build the product of your dreams. All you need is an idea and the tokens. The expected time taken to build it has never been lower either.
Unfortunately there’s no power without price. What you gain in mobility, you lose in cognition. The standards are in hell.
The sad reality is, we’ve become lazy.
The cost of speed
Odin gave up his eye to gain wisdom. We’ve lost our freedom in order to ship faster.
Don’t misunderstand, the act of using AI for development is not a cardinal sin that you need to be stoned to death for (though I am sure some would disagree). It’s a great tool, and one of the biggest accomplishments that humanity has managed to achieve so far. The issue lies in the blind trust in AI.
When coding manually, we have a better understanding of the codebase. We know what’s where, why we made certain decisions, and the direction in which we’re headed, so we can plan accordingly. That is not the case when generating code with an agent. The outsourcing of thought leads to a loss of ownership of ideas.
As time passes, agents make more and more decisions and then forget about them as their context is compacted or cleared. What was once a smooth running system starts creaking. It becomes increasingly difficult to maintain. Fixing one issue introduces three more. You no longer recognize what you’re looking at anymore. In the end, the only way you can work is with the help of AI, and you’re in control no longer.
Where did it all go wrong?
I am firm in the belief that the root cause is laziness. Not the laziness of not writing the code, but that of not reviewing it thoroughly.
Since time immemorial, longer PRs have had a much higher approval rate than shorter ones. Shorter PRs get scrutinized (including nits) into orbit while longer PRs typically get approved with less pushback (if any) because no one wants to review them. The changes might as well include the manuscript for a Shakespearean play. You wouldn’t know because you didn’t review it. The downward trend of shorter attention spans is also a contributor, but that’s a topic for another day.
It’s the same thing all over again. If there’s one thing LLMs are good at, it’s generating text. You might be motivated enough to review it seriously a few times, but when it’s the 12th PR of the day, you might just be tired enough to gloss over it and approve all changes with a big fat “LGTM”. The peer pressure around shipping more code using AI doesn’t help either. That’s when you start losing control.
Soon, you lose any semblance of understanding that you had left of the product. You might try to go through the code in an attempt to understand what’s going on, but it’ll probably not end well. Defeated, you’ll be left at the mercy of what was once a tool of convenience turned the only thing keeping your project afloat.
What can you do to prevent this?
Stay disciplined. If you find yourself skimming too much or skipping through entire chunks of code while reviewing, consider taking a break. You must not let anything you do not understand or are not aware of make it in. If something seems out of place, follow up with a question like “why did you <insert issue here>“.
Fight fire with fire. If you have tokens to burn, try building a harness with another agent in tow to review the diff before you do. It’ll probably not find all issues, but at the very least it’ll ensure that fewer of them make it through to you. Anthropic leaking Claude Code source code despite owning Mythos is the best example of this. Imagine if they didn’t.
Regular audits are a must. Try as you may, no matter how hard you try things will inevitably slip past you. By going through the code, you’ll not only gain a better understanding of it, but also catch irregularities that might blow up in your face later.
Last but not least, don’t stop learning. As capable as AI agents are, they still make mistakes. You must be knowledgeable enough to catch these mistakes. An effective manager is one who knows how the job is done. At the end of the day they’re not liable for your work. You are.
Closing thoughts
Despite its shortcomings, AI driven development is a great multiplier to your capabilities. As important as it is to keep up with the times, it is just as important to not get swept away by the current and keep your feet steady.