In most software teams today a good share of the code was written by an assistant: a developer describes what is wanted in plain language and the tool writes the function, sometimes the whole module. The productivity gain is real. Boilerplate that took an afternoon takes a minute, features that took weeks ship in days. We use these tools ourselves, and this video is not an argument against them. It is an argument about what that code hides, because the risks are the kind that surface after the convenience has worn off, in production, where stability and security matter more than speed.
Four kinds of risk, one review rule, one knowledge rule. Six minutes. Everything on screen is a mock demo with sample data; no real codebase is shown. The first risk is quality. Generated code usually works, in the sense that it passes the test the developer ran. What it often lacks is the understanding of the system around it: it solves the case in the prompt and not the one that arrives on a Tuesday in production. The common shapes are familiar once you look for them. A solution that works but ignores how it performs under load.
Code that does not follow the project's own conventions, so the next person reads it twice. A subtle logical error that passes a basic test and fails on a specific input. And a design that is fine at a hundred records and falls over at a hundred thousand. None of those is caught by the question did it run. They are caught by the question does the person who accepted this understand why it works, and that question is the one the convenience tempts a team to skip. The second risk is security, and it is the one that keeps people up at night for a reason.
These assistants learned to write code from vast public repositories, and public repositories contain code with known vulnerabilities. The tool does not know which patterns are unsafe; it reproduces what it saw. So generated code can carry a weakness that was fixed in the industry years ago, or skip a current practice the training data predates. Two further shapes. When a developer pastes a real configuration or a real record into a cloud assistant to get help, sensitive data has left the building. And a complex generated function is hard to audit precisely because nobody on the team wrote it, so the security review has no author to ask.
The fix is not to forbid the tool. It is to treat generated code as untrusted input to the review, the way a team treats a library it did not write. The third risk is the slow one, and in our experience the most expensive. When a team regularly accepts generated solutions without examining how they work, knowledge gaps form. Developers grow used to accepting code they do not fully comprehend. The ability to reason about how the parts interact fades. Debugging gets harder as familiarity with the codebase falls, because the system was assembled rather than understood.
And architecture starts to follow what is easy to generate rather than what the system needs. The dependency compounds. A team that leans on the assistant struggles when it is unavailable, problem-solving skills atrophy when they are not exercised, and the hardest loss is in training: a senior developer who relies on the tool has less to hand to a junior one. The knowledge of a system used to live in the people who built it. If it now lives only in the repository, nobody is left who can tell you why.
The fourth risk is responsibility, and the legal side of it is still being worked out in most places. When generated code causes a production failure, who bears it? The developer who accepted the suggestion, the team that reviewed it, the vendor of the tool? The old idea of a developer's accountability assumed a developer wrote the line. And in regulated industries, healthcare and finance among them, there are requirements the assistant does not know about and documentation obligations that get more complex when the author is a model. The practical answer, until the frameworks settle, is the one a well-run team already has: a named person accepts every change into production, and that acceptance is the point of responsibility whatever wrote the line.
The tool is an author. It is never the reviewer, and it is never the one who signs. So the discipline, in two rules. The review rule: generated code is reviewed the way a new hire's code is reviewed, every line, by someone who understands the system, until that part of the system has earned a lighter touch. And the review scales with the share the assistant wrote: a codebase that is ten percent generated can carry a normal review; one that is seventy percent generated needs the review to be the main job, because the understanding is no longer coming from the writing.
The knowledge rule: the understanding of the system is kept in people on purpose. Design decisions are written down by a person. The hardest parts are walked through by the team, not just merged. And juniors are taught the system, not only the prompts. Done that way the assistant is what it should be: the fastest typist on the team, with a reviewer who still knows why. Generated code hides four things: a quality that passes the test and fails the edge case, a weakness it learned, a team that stops understanding its own system, and a gap where responsibility used to be.
The tools stay. The review and the knowledge have to be deliberate, and they have to grow with the share of the code the assistant writes. We are CodeStringers. We build and run business systems, and our own code goes through exactly this review, whoever or whatever wrote it. The article behind this video is linked below.