February 5, 2026

Beyond Vibe Coding: The Rise of Agentic Engineering

When Andrej Karpathy coined the term “vibe coding” in early 2025, he captured something genuine about the moment we’re living through. “Fully give in to the vibes,” he wrote, “embrace exponentials, and forget that the code even exists.” For anyone who has watched an AI assistant conjure a working prototype from a few sentences of natural language, the appeal is undeniable.

But here’s the thing about magic: it’s wonderful for the demo, less so for what actually ships.

The Precision Problem

Vibe coding has democratised software creation. A founder with an idea can have a prototype before lunch. This is genuinely revolutionary.

Though natural language carries an inherent limitation: ambiguity is a feature, not a bug. When I say “make it more intuitive,” every listener interprets that differently. That flexibility is what makes natural language rich for conversation and problematic for specification. Code, by contrast, is unforgiving in its precision. Every conditional is explicit. There’s no room for “you know what I mean.”

Navigating this tension requires a new discipline – what I prefer to call agentic software engineering.

Two Traps

I’ve watched experienced developers interact with AI coding assistants, and two patterns emerge with striking regularity. Both are traps.

The Dismissal Trap: The AI produces a solution. The developer frowns: “I wouldn’t do it that way.” And then they stop. That moment of recognition is precisely where the interesting work begins, not where it ends. They’re treating the AI as a vending machine rather than a partner in an iterative process.

The Acceptance Trap: The AI produces a solution. The developer glances at it, sees that it works, and commits it without scrutiny. This is how “AI slop” enters codebases – functional code without craftsmanship. When other engineers review those merge requests, they notice. They see unnecessary complexity or changes far beyond what the task required. And they make judgments – not just about the code, but about the engineer who submitted it.

I experienced this recently. A task required changing three lines of code. Three lines. The AI decided to also make numerous esoteric “improvements” throughout the entire function – minor stylistic changes, unnecessary refactoring. The resulting merge request was dramatically larger than it needed to be.

Why does this matter? Because when another developer reviews that change, they’re looking for substance. When the signal is buried in noise, that review becomes harder, slower, and less reliable.

The solution wasn’t to dismiss the AI or accept its output. It was to collaborate – to explain why a minimal diff was the professional approach. The AI agreed immediately. It simply hadn’t understood the context until I provided it.

The Five Practices of Agentic Engineering

Kent Beck has observed that AI tools amplify both good and bad engineering practices. If you’re thoughtful about architecture, AI helps you move faster while maintaining that thoughtfulness. If you’re sloppy, AI helps you be sloppy at unprecedented speed.

Simon Willison puts it directly: “The most dangerous thing about AI coding tools is when developers stop reading the code.”

Agentic engineering insists on understanding the code. Through working with these tools – and helping our own team and clients navigate this transition – I’ve identified five practices that distinguish agentic engineering from vibe coding:

Care about the implementation as much as the output. It’s not enough that the code works. How it works matters. Be clear on what you value in good code and architecture – then review AI-generated output against those standards with the same rigour you’d apply to a colleague.

Accept that imperfection is part of the process. The AI will produce suboptimal solutions – sometimes due to model limitations, often due to prompt ambiguity. This isn’t failure; it’s an invitation to collaborate.

Embrace iteration as the core workflow. The first output is a draft, not a deliverable. Speed comes not from blindly accepting the first answer, rather from how quickly you can refine toward the right answer.

See the AI as a collaborator, not just a tool. A tool does what you tell it. A collaborator brings perspective. Explain context, ask for reasoning, push back and expect to be pushed back upon. Equally, know when to just step in – sometimes the three-line fix from your own hands is faster than the prompt.

Start with the problem, not the solution. Too many developers approach AI with a solution in mind: “Write me a function that does X.” Agentic engineering starts differently: “Here’s the problem, here are the constraints, here’s what good looks like.” The AI becomes a thinking partner, not just a code generator.

    At GCD, we’ve spent over 26 years building software with our clients. Agentic engineering feels like a natural extension of our philosophy: genuine partnership, not just technical execution. It lets us push boundaries in exploration – prototyping faster than ever – while reducing time to value without sacrificing engineering rigour.

    Vibe coding is brilliant for building code. Agentic engineering is what it takes to build software.