AI generated code and the lack of accountability

blog
Published

September 30, 2026

LLMs make programmers “10x” more efficient, as they say. They make you produce more code in less time. By the mere scale, it is harder to quality check it. When writing code by hand, the quality came from proficiency. With mass production, it becomes a statistic on a dashboard that you try to control.

In the, not that distant, times when programming was considered by some as a craft, the pride you took from your work prevented you from writing bad code. With AI you’re more of an manager of McDonald’s restaurant than an artisan chef. It’s more about making the factory efficient than the quality of an hand crafted item.

If it is about efficiency, you have good reasons not to see the quality issues. Say that AI was writing the code for you, maybe it was an agent that did it all by itself, maybe you needed to click “ok” every now and then. Maybe it spent 10 minutes on the task, maybe half an hour, maybe much more. This is the time you saved by using AI. Of course, unless the code is wrong. In the latter case, this time is wasted. Since it is all about prompting and all about efficiency, the waste is on you.

AI is a tool. You are using it because “everybody does”, it became an industry standard, and most likely your manager or your company approved it. You have all the reasons to trust it. If you didn’t, it wouldn’t make you more efficient, as you would need to waste the time you gained for detailed quality checks. But if it fails, who is there to blame? You who rubber stumped the result? Your manager who approved the tool? The company who produced a faulty product that you used? With hand written code it was always you, when using AI the accountability is diffused.

We are hearing about the death of code review, how nobody reads the pull requests anymore. You didn’t write the code. You didn’t really read it carefully. Your colleagues do not want to sign off the code. Nobody feels responsible.

Even if you know that AI is imperfect, when the code is broken, you can always “hey computer, fix it”. When using AI your workflow is about iterative steps, where you ask AI to fix or improve what it produced earlier. It is easy not to stop the process at the code release, but start considering code as a temporary byproduct that can always be fixed. There always was this misunderstanding of tech debt as a card you can play to become more efficient. The business people often considered software engineers as being to pedantic, and encouraged them to “move fast”. With AI we all got moving fast at the cost of continuous accumulation of tech debt.

Some say that AI has led to a paradigm shift in programming. It’s an industrial revolution and now we have efficient code factories. However before AI we already could create websites using open-source or commercial solutions using simple UI interfaces, we could buy (vs build) a software to do whatever we wanted. The premise of tech industry was that we always needed the custom solutions. But if the solutions are custom, you cannot treat producing them as an automated process with known, but variable, amount of defects. If it is custom, not all the defects are alike. One bug may make the service 1ms slower, other may introduce a critical security vulnerability, or take down the production system. What we have is automation without repeatability. Repetability is not possible, neither by the nature of AI, nor by the nature of the problems we are solving. This makes lack of accountability and lack of good tools and processes for quality assurance especially troubling.