The Illusion of AI Coding Productivity: Why I Returned to Manual Development After Two Years
Mo Bitar
Summary:
After two years of extensive "vibecoding" with AI agents like Claude and Codeex, the speaker, Mo Bitar, has returned to writing code by hand due to critical issues with AI-generated code.
- AI code initially appears functional and merge-worthy in isolation, but prolonged use reveals it to be "junk" and "nonsense" when viewed in the broader codebase context.
- AI coding agents often create a "dopamine hit" illusion by either generating nonsense that the user corrects, completing boilerplate code (which it largely fetches), or failing at complex tasks until the user breaks them into tiny, easily solvable snippets (doing the structural work for the AI).
- Mo Bitar found that even with refined prompts and miniature scopes, the AI-generated code was "awful" and unmaintainable, despite passing all tests. He meticulously crafted detailed specifications, believing this would improve AI output.
- He emphasizes that human developers are indispensable for responsibility, value judgment, and ensuring code quality, especially for critical applications handling user data.
- The idea of "full self-driving" in software development is a "delusionary pipe dream," and human jobs in coding remain secure due to the inherent need for human oversight, contrary to some developers' fears.
The Deceptive Nature of AI-Generated Code [00:00:00]
AI coding agents like Claude or Codeex initially produce code that appears reasonable and "mergeworthy" when reviewed in isolation.
- This initial impression is based on observing the AI's output and looking at isolated diffs, leading developers to believe the code is high quality.
- However, weeks or months later, when reviewing the entire file or codebase, the code often appears as "junk" or "total crap" [00:00:43].
Three Scenarios of AI Coding Illusion [00:00:57]
The speaker references a tweet describing how Large Language Models (LLMs) in coding are designed to mislead developers into thinking their output is correct.
- Situation 1: Medium Complexity Tasks [00:01:27]
- When ordered to write code with medium complexity, the AI often hallucinates nonsense.
- The user corrects these hallucinations, guiding the AI in the right direction.
- The AI's improvement and validation give the user a "dopamine hit," making them believe the AI coded something intelligent, when in truth, the solution was figured out by the user.
- Situation 2: Boilerplate Completion [00:01:58]
- The AI largely succeeds in completing boilerplate code.
- The user attributes this success to the AI's coding ability, when it merely fetched existing, readily available code.
- Situation 3: High Complexity Tasks [00:02:11]
- When ordered to write code with high complexity, the AI produces a failure.
- The user must reduce the scope to medium, then to small snippets of easy complexity.
- This process leads the user to believe the AI is capable of complex code, while the user is actually doing the structural decomposition work for the LLM.
- The evolution of using AI for coding often starts with ambitious scopes that inevitably fail, leading developers to refine their prompts and specifications, ironically doing more of the intellectual work themselves.
Personal Realization: AI Code is "Gibberish" [00:06:07]
The speaker recounts his own two-year experience, going through the same evolution of refining his specifications for AI.
- He diligently created long, detailed markdown documents, believing he was "leveling up as an AI coder" by providing precise specs for miniature tasks [00:03:21].
- He perceived the AI as creating functional code that passed tests consistently, with 100% test coverage [00:07:12].
- However, upon needing to refactor a substantial part of the codebase two weeks prior, he was forced to actually read the AI-generated code from beginning to end.
- He discovered the code was "complete gibberish," "nonsense," and "awful" [00:07:08].
- The diffs and pull requests had looked good in isolation, but the code's overall context and quality were missing, leading to "uncontextualized" and unmaintainable code.
The Indispensable Role of Human Responsibility [00:07:44]
The speaker argues that human responsibility and value judgment are crucial and irreplaceable in software development.
- Developers cannot simply "vibe" code into production, especially for applications handling sensitive user data or funds (e.g., banks, trading platforms).
- There is a significant degree of liability and responsibility that humans must bear to protect users and ensure product reliability and safety.
- CEOs or managers ask humans, "Is this code good? Is it safe? Is it reliable?" not the AI itself [00:09:57].
- Humans are the only entities capable of decreeing value and forming judgments, which is essential for the engineering discipline of software development.
AI as a Tool, Not a Replacement for Developers [00:10:45]
The video concludes by stating that AI coding agents are tools, not a replacement for human developers.
- The notion of "full self-driving for software development" is a "delusionary pipe dream" and a "very dangerous one" [00:10:59].
- Over time, as more developers are forced to inspect AI-generated code, they will realize the need for human involvement.
- Software developer jobs are safe; those who have extensively used AI agents for professional work are not worried about job displacement.