Why I stopped using AI (as a Senior Software Engineer)

A senior software engineer shares how his initial enthusiasm for AI-assisted coding turned to frustration due to buggy, inconsistent, and overengineered code that harmed his skills and projects. He advises developers to use AI selectively for specific tasks while prioritizing fundamental skills, simplicity, and careful code review to maintain quality and avoid overdependence on AI.

In this video, a senior software engineer shares his journey of using AI tools for coding over the past three years, having written around 150,000 lines of code with their help. Initially, AI felt like a magical productivity booster, enabling him to ship MVPs much faster than before. However, over time, he encountered significant issues, such as AI-generated buggy code, endless loops of fixes, and a bloated, inconsistent codebase filled with redundant and poorly maintained code. These problems led him to stop relying heavily on AI and instead focus on manually fixing and refactoring his projects.

He highlights several key problems with AI-assisted coding, including duplicated code, lack of component reusability, unnecessary reinvention of existing solutions, and poor test coverage. The AI often made unrelated changes when asked to fix specific issues, resulting in unstable and overengineered code. Despite attempts to guide the AI with detailed prompts and style guides, the results often worsened, leading to frustration and a decline in his own technical skills due to over-reliance on AI-generated solutions.

The speaker shares three important lessons learned from his experience. First, the myth that AI can handle repetitive tasks while developers focus on complex problems is false; mastering fundamentals and small details is essential for building robust systems. Second, simplicity in code and design is crucial, as more code often means more technical debt and lower productivity. He uses examples like the evolution of the SpaceX Raptor engine and the contrast between Blackberry and iPhone to emphasize that great engineering solutions are simple, robust, and maintainable.

Third, he points out that explaining problems in detail to AI often takes more effort than solving them manually because AI lacks true understanding and relies on pattern matching, which can lead to imprecise or hallucinated results. Adding more context or style rules to AI prompts can make outputs even more unstable. Despite the hype around AI, he advises caution and stresses that developers should not let AI replace their skills or critical thinking, as overdependence can degrade their abilities and lead to messy codebases.

Today, he uses AI selectively for specific tasks like generating test mocks, creating test cases, and dealing with poor documentation, where AI can save time without compromising quality. He finds autocomplete features helpful but warns to always review AI-generated code carefully. Ultimately, he encourages developers to ride the AI wave pragmatically without losing focus on improving their core skills and maintaining code quality. He also invites viewers to request a future video on best practices for AI-assisted coding if there is enough interest.