Niraj Chauhan

Niraj Chauhan

#Father #Husband #SoftwareCraftsman #AIEnthusiast #PodcastHost #WeekendCyclist

Vibe Coding: My Take

Posted by on

The world of software development is never static, and the latest term making waves is “vibe coding.” Having spent considerable time exploring the impact of AI on coding, from AI-enabled development to pair programming with AI, I’ve been keenly observing the discussions around this new concept. What I’ve found is a fascinating, and sometimes confusing, array of interpretations, particularly when it comes to the tools being labeled as vibe coding platforms.

My initial understanding of vibe coding, which seems to resonate with a certain segment of the tech community, is that it’s about prioritizing the desired outcome of a software project, ideally to the point where the developer doesn’t need to be deeply involved with the intricacies of the underlying code. However, my recent forays into X(twitter) have revealed a significant disconnect. Many developers are enthusiastically embracing tools like Cursor and Windsurf, claiming they are engaging in “vibe coding.” This strikes me as odd because these are AI enabled code editors where the primary mode of interaction still revolves around directly viewing and manipulating code.

For me, true vibe coding feels more akin to using tools like Aider, Claude Code, V0, or Lovable, where the interaction is more focused on describing the desired output, and the code generation happens somewhat behind the scenes.

Decoding the “Vibe”: What Exactly is Vibe Coding?

The term vibe coding gained prominence around February 2025, largely thanks to a post by AI expert Andrej Karpathy. His initial description painted a picture of developers who could “fully give in to the vibes, embrace exponentials, and forget that the code even exists”. This immediately suggests a move away from traditional, syntax-focused coding towards a more intuitive interaction with AI.

Vibe coding

Since then, the definition has broadened and diversified. Some define vibe coding as AI-powered software development where artificial intelligence handles the majority of the coding based on high-level instructions. Others emphasize the use of conversational AI tools like ChatGPT, Claude, and GitHub Copilot to rapidly generate code. A common thread is the idea of building software without being bogged down by syntax, where users articulate their intentions in plain English, and AI produces the necessary code. The programmer’s role shifts to guiding, testing, and refining the AI’s output. Some even jokingly refer to it as simply letting AI do the coding. A key aspect in some definitions is the user potentially accepting the generated code without fully understanding it , while others see it as a collaboration between humans and AI. It’s also been described as an “intent-based outcome specification” or an iterative prompting process. The term’s rapid adoption even led to its inclusion in the Merriam-Webster Dictionary. The sheer variety of definitions highlights that while the core idea of leveraging AI for coding is consistent, the specifics of vibe coding are still being actively shaped.

My Perspective: Outcome vs. Code Interaction

My own perspective aligns more closely with the outcome-centric definitions. When I see tools like Cursor and Windsurf being labeled as vibe coding platforms, I feel there’s a fundamental difference. These are powerful code editors with integrated AI assistance. While they undoubtedly enhance coding speed and efficiency through AI-powered features like code completion and even generating entire code blocks or files, the developer is still constantly interacting with and viewing the code.

Tools like Aider, Claude Code, V0, and Lovable, in my opinion, come closer to the essence of vibe coding. Aider operates as an AI pair programmer in the terminal, allowing for conversational interaction to build projects. Claude Code functions similarly in the terminal, understanding the codebase and assisting through natural language commands. V0 by Vercel and Lovable focuses on generating user interfaces from natural language descriptions, even for non-technical users. These platforms abstract away the direct code manipulation to a greater extent, allowing the user to focus more on the desired outcome.

The Business-Engineering Analogy

My perspective on vibe coding also relates to how businesses often interact with their engineering teams. Typically, the business side comes up with requirements, and product people work with engineers to deliver them. The business rarely delves into the code itself; they trust the engineers and the team to deliver the desired functionality. In a way, this is a form of Outcome-Based Delivery – the business focuses on the outcome and trusts the technical team to handle the “how.”

For me, true vibe coding would be the developer doing the same with AI: providing the requirements and trusting the AI to deliver a working solution without the developer needing to heavily guide it towards specific code implementations.

AI: Not Quite Ready for Prime “Vibe” Time?

This brings me to my belief that LLM’s might not be fully ready for this level of autonomous “vibe coding” just yet. I envision a more “agentic” approach where the AI can continuously work like an engineering team, handling tasks like code review, documentation, ensuring clean code, monitoring and observability, infrastructure, and quality assurance. It also requires a level of maturity from us, as humans, to enable and trust AI with these responsibilities. Simply using an editor like Cursor to get a single feature delivered, while helpful, doesn’t quite feel like the full realization of vibe coding to me.

Concerns and the Path Forward

The rise of vibe coding has also sparked significant debate and raised valid concerns. A primary worry is the potential lack of understanding of the generated code, which could lead to problems with maintenance and debugging. Code quality, maintainability, and security are also major points of contention. The potential for accumulating technical debt and the impact on developer skills are also frequently discussed.

Despite these concerns, the potential of AI-assisted development is undeniable. It can significantly speed up prototyping and make software creation more accessible. As AI continues to evolve, perhaps we will see a clearer distinction between different levels of AI involvement in coding, and the term vibe coding might solidify around a more outcome-focused, agentic paradigm. For now, it’s crucial to approach AI-assisted development with a balanced perspective, recognizing its potential while maintaining a strong understanding of fundamental software development principles.