AI Assisted Tools Are Amazing
Until They Start Wrecking Your Code
Long ago, development environments were bare. No hints, no squiggly underlines, no friendly popups. Just you, a blank file, and whatever you could keep in your head. If you forgot a function signature, you dug through a manual or some half-broken forum thread. If you misremembered a parameter order, the compiler or runtime would educate you the hard way. It was slow and clunky, but at least every character in the file was something you meant to type.
Then editors got smarter. We got autocomplete and suggestions. You could type a single character and see your options: functions, variables, types. The environment stopped being a dumb text box and started behaving like a helpful assistant. It did not try to outsmart you, it just said: “Here are the things that exist, pick what you want.” That small change shaved hours off workflows and reduced silly mistakes without taking control away from the developer.
Fast forward to today. Now we have AI assisted environments and tools like Windsurf with “super complete.” Instead of just completing a word or a line, it tries to complete your entire thought. It guesses the function, the logic, the imports, and even the surrounding scaffolding. On a good day, it feels like working with a very fast overenthusiastic pair programmer on his first day on the job.
On a bad day, it feels like a insolent teenage who is throwing a temper tantrum and out to destroy everything, passive-aggressively “helping” by making things wrong, then feigning shock at how bad it has gotten.
Windsurf and similar tools will happily invent includes or imports that do not exist. They hallucinate libraries, pretend APIs are real, and confidently wire up calls to things that live only in their imagination. You hit tab once, and suddenly the tool does not just finish your current line. It applies a huge batch of changes that may extend far beyond your cursor, sometimes beyond the visible part of the file.
That is the dangerous part. The edits might not even be on your screen. Code outside your current view gets rewritten to support the fantasy it just generated. Maybe it renames a function, changes a type, or inserts helper utilities you never asked for. By the time you scroll, your careful fixes from ten minutes ago have been “helpfully” overwritten.
So you go back and clean it up. You delete the nonsense includes. You fix the broken calls. You untangle the logic. You wrestle your own codebase back into something that compiles. Then one stray tab or enter at the wrong moment and boom: super complete runs again and nukes your cleanup. The tool confidently restores the same garbage you just spent effort removing, along with a few new surprises for future you.
Yet companies are thrilled to say things like “AI writes 90 percent of our code now.” It sounds futuristic and efficient. But the real question is not how much code the AI writes. It is:
What percentage of that code is actually correct?
What percentage is useful and necessary?
How much of it is just slop: noisy, redundant, confusing, or wrong?
If AI can flood a file with speculative helpers, unused abstractions, and incorrect includes, you can rack up a lot of lines very quickly. That does not mean the system is better. It just means the diff is larger.
We have been here before. Decades ago, teams used SLOC, source lines of code, as a productivity metric. More lines meant more output. Eventually everyone figured out this was nonsense. Extra lines often meant more bugs, more complexity, and more maintenance. A clean 50 line solution was almost always better than a sprawling 500 line mess.
Now we have resurrected the same bad metric, just wearing an AI costume. Instead of bragging “Our team ships 10k lines a week,” it is “Our AI generates 90% of our code.” Very impressive, right up until someone has to maintain it.
The real value is not in how much the AI produces. It is in how much good code survives after a human reviews, edits, and deletes the junk. The invisible work is not the AI completion. The invisible work is the developer quietly saying “no,” pruning hallucinations, and reshaping the output into something that will not explode in production.
AI assisted tools are not bad. They can be genuinely helpful when used with intention:
You can let them rough out boilerplate.
You can use them to explore alternate implementations.
You can lean on them for documentation, tests, and quick experiments.
But they are not oracles, and they absolutely should not be measured by volume alone.
We went from bare editors where you had nothing, to autocomplete where you had options, to AI environments that create entire universes of code you never asked for. The next step is not “let the AI do everything.” The next step is learning when to accept the suggestion, when to ignore it, and when to rip it out entirely.
If an AI tool can write 90 percent of your code, it can also create 90 percent of your future headaches. The metric that matters is not SLOC, human or machine. It is how much of that code you are still happy to own six months from now.



