A specific style of development known as "vibe coding" has become increasingly prevalent in the industry — as Simon Willison puts it, I feel like vibe coding is pretty well established now as covering the fast, loose and irresponsible way of building software with AI—entirely prompt-driven, and with no attention paid to how the code actually works.
However, this definition fails to capture the full spectrum of AI-assisted development, particularly for those who prioritize accountability, creating a notable gap — This leaves us with a terminology gap: what should we call the other end of the spectrum, where seasoned professionals accelerate their work with LLMs while staying proudly and confidently accountable for the software they produce? I propose we call this vibe engineering...
Introducing this term helps delineate a professional approach from mere experimentation — Vibe engineering establishes a clear distinction from vibe coding. It signals that this is a different, harder and more sophisticated way of working with AI tools to build production software.
Insights
Through the application of LLMs in software engineering, it becomes evident that there is a strong alignment between these models and traditional best practices — It's also become clear to me that LLMs actively reward existing top tier software engineering practices.
Rather than replacing human skill, these tools serve to leverage it — AI tools amplify existing expertise. The more skills and experience you have as a software engineer the faster and better the results you can get from working with LLMs and coding agents.
The dynamic of this interaction closely mirrors human collaboration — Getting good results out of a coding agent feels uncomfortably close to getting good results out of a human collaborator.
Practices
To effectively practice "vibe engineering," certain foundational habits are essential, starting with testing — Automated testing. If your project has a robust, comprehensive and stable test suite agentic coding tools can fly with it.
Strategic preparation before coding is also vital — Planning in advance. Sitting down to hack something together goes much better if you start with a high level plan.
Furthermore, documentation acts as a powerful guide for model outputs — Comprehensive documentation. ... Write good documentation first and the model may be able to build the matching implementation from that input alone.
Given the potential for errors, maintaining strict control over changes is indispensable — Good version control habits. Being able to undo mistakes and understand when and how something was changed is even more important when a coding agent might have made the changes.
Finally, the ability to effectively review code dictates the success of the collaboration — A culture of code review. ... If you're fast and productive at code review you're going to have a much better time working with LLMs...