**Stop Calling It "Vibe Coding"**

It's been over a year since Andrej Karpathy coined the term "vibe coding," but its relevance has only intensified with time. The initial euphoria of using AI-assisted development tools has given way to a more nuanced understanding of what it means to work with these technologies.

When we first started experimenting with LLMs like Claude Code, there was an intoxicating sense of freedom that came from trusting the tool to produce high-quality code. We'd type in our ideas, let the AI rip, and marvel at the output. It was exhilarating, but also reckless – a bit like trying to build a skyscraper without knowing the foundation would hold.

Fast forward to today, and most of us have collectively figured out that sustainable AI-assisted development requires more structure than those early days of "vibe coding." We've learned to plan our approach before letting the agent write code, defining clear constraints and patterns for it to follow. The execution is no longer just a matter of trusting the tool; it's about supervising its output, catching mistakes that might not be immediately apparent, and redirecting toward approaches that will hold up in the long term.

James Ide aptly put it: "LLMs accept imprecision and create imprecision. You need to already have a vision for the end state and use the LLM to automate getting there faster." Experts who understand a problem will be amplified in positive directions, while novices trusting LLMs may become confident in wrong solutions.

The question is no longer whether we'll use AI tools to write code; it's how we can ensure that our expertise and judgment remain intact. We've moved beyond the point of simply typing prompts and accepting whatever output comes back. The irony is palpable: I was doing exactly what the article describes – supervising an AI tool on itself, redirecting its approach toward a more viable solution.

But beneath this surface-level understanding lies a deeper concern. We've lost some of our cognitive abilities as developers. We're no longer writing code from scratch; we're pattern-matching against LLM output, slowly atrophying the muscles we spent years building. The longing for when software required deep understanding has only intensified with time.

This isn't just about nostalgia or romanticizing the past. It's about recognizing that there's a real craft and pride in having earned our ability to ship high-quality code. We've come to accept AI-assisted development as the new norm, but at what cost? Have we lost some of our cognitive abilities by relying on these tools? Are we reduced to reviewers rather than thinkers?

The answer is complex, and it's one that each developer must grapple with individually. But for now, let's acknowledge that "vibe coding" doesn't do justice to the reality of working with AI-assisted development tools. It's time to redefine what this discipline looks like – a legitimate engineering practice that requires skill, judgment, and expertise.

So, what does it mean to be good at this? Is it about shipping faster or competing with those who use these tools? Or is it about maintaining the essence of our craft, despite the changes that come with technological advancements?

The truth is that freedom and loss aren't mutually exclusive. We can be grateful for the efficiency AI-assisted development brings while still mourning what it's cost us as developers – our sense of pride in our work, our connection to the code itself.