Addy Osmani's LinkedIn post, titled "Vibe-coding is not the same as AI-Assisted engineering", addresses a critical semantic distinction in the rapidly evolving software development landscape. Osmani argues that conflating "vibe coding" with professional "AI-assisted engineering" risks devaluing engineering discipline and giving newcomers an incomplete picture of what building robust, production-ready software actually requires.
Defining Vibe Coding
He defines "vibe coding" as a highly creative, fluid approach where developers interact with AI through high-level prompting, often accepting suggestions without thorough review. This method prioritizes speed and iterative experimentation, making it ideal for generating prototypes, MVPs, learning exercises, or "throwaway weekend projects". It is a powerful way to build intuition and flatten the learning curve for beginners, favoring exploration over the correctness and maintainability essential to professional applications.
AI-Assisted Engineering: the disciplined approach
In sharp contrast, "AI-assisted engineering" is presented as the methodical integration of AI into a mature software development lifecycle. Here, AI functions as a "force multiplier", assisting engineers with tasks such as boilerplate generation or drafting test cases. Crucially: the human engineer retains full control and responsibility for architecture, meticulously reviewing and understanding every line of AI-generated code. This approach ensures a secure, scalable and maintainable final product, augmenting existing solid processes rather than replacing them. A 30% increase in development speed reported at a FAANG team, cited in a Reddit post that sparked the discussion, is attributed to this disciplined augmentation, not to abandoning engineering principles.
Risks and distortion
Osmani warns that labeling disciplined, AI-augmented workflows as "vibe coding" distorts the skill and rigor of the engineering profession. For newcomers to the field, this fuels the dangerous illusion that one can simply "prompt" one's way to a viable product without any foundational understanding of code or engineering fundamentals.
Key takeaways and best practices
The lessons from the post and its comments reinforce the message: always start from a solid design, subject any AI-generated code to rigorous human review, and treat AI as an incredibly powerful tool in the engineering toolbox, not as a magic wand. As one commenter aptly put it: "Use AI like a junior developer: helpful, but never without supervision." The verification burden of AI-generated code is significant and demands careful oversight to prevent technical debt, security vulnerabilities and maintainability issues.
Redefining technical autonomy
Ultimately, the post argues for a balanced, informed approach to AI in software development, where human expertise and established engineering practices remain paramount, leveraging AI to improve productivity within a structured and responsible framework. True technical autonomy now consists of understanding when, what and why to code, rather than merely how to code.