Skip to content
ansezz.
← Back to blog
AI Nov 30, 2025 7 min read 1,383 words

Vibe coding: why projects need more than logic

Taste, intent and feel matter more in the Cursor and Claude era, and here is how to keep the codebase from becoming a ball of mud while you vibe.

Anass Ez-zouaine

Backend · Architect · AI

▸ Share

Developer at a glowing terminal, code as vibes as well as syntax
▸ On this page (6)

Users judge software by how it behaves. With AI writing more of the implementation, your taste and your intent decide whether a product feels right.

Most developers are obsessed with logic. We spend years on syntax, query optimization and architecture debates, and we build systems that are technically correct but feel hollow.

They work, but they don’t sing. That gap is what vibe coding tries to close.

Users feel the product

Your users care about how the software feels, far more than clever recursion: whether a button responds, whether a layout makes sense, whether the flow is calm or stressful.

Products that win will master that feel, and AI tools make it cheaper to iterate on it than ever.

The logic trap

For a long time I thought my job was to be a logic machine. If I followed every best practice and wrote the most efficient Laravel code possible, the project would succeed.

I was wrong.

The skeleton and the home

Logic is the foundation, the skeleton that keeps the building standing. Nobody wants to live in a skeleton. People want a home with character and warmth, and in software that character comes from the vibe.

When we focus only on logic, we get software that does what it says on the tin and leaves users feeling nothing. Or worse, it frustrates them, because nobody thought about the friction of a slow button or a confusing layout.

Comic panel of a robot pointing at a bare steel house frame while another robot welcomes visitors into a cozy lit room with a sofa and plants, and a third robot looks on with heart eyes
Logic builds the frame. The vibe makes it a home.

Where “vibe coding” comes from

Andrej Karpathy coined “vibe coding” in a February 2025 post: “fully give in to the vibes, embrace exponentials, and forget that the code even exists.” He framed it as a mode for throwaway weekend projects.

In a February 2026 retrospective, he wrote that programming through LLM agents is becoming a default workflow for professionals, “except with more oversight and scrutiny,” and named “agentic engineering” as his favorite term for that serious version.

The sense I mean

I use the broader sense the industry picked up: moving from writing code to curating intent with tools like Cursor and Claude. You describe the feel and behavior you want in natural language, and the AI does the heavy lifting on implementation.

Taste is the job

Your value as an engineer shifts from typing speed to taste: recognizing when an interface feels “off” and knowing how to steer the AI to fix it.

That is really a question of prompt engineering versus context engineering: giving the model enough of the right context to make good calls on its own.

On a Shopify store build, the checkout logic matters. The feel of the checkout (smooth transitions, reassuring feedback, clean typography) is what moves conversions.

When code gets cheap to write, taste becomes the scarce skill.

Tools that keep you in flow

To work this way you need tools that stay out of your way, so the gap between an idea and a working screen stays small.

Describe the feel

Cursor changed how I work. Instead of spending twenty minutes on boilerplate for a new Vue component, I describe it in the chat: “Build me a dashboard widget that feels airy and modern, uses a bento grid layout and gives the user a sense of calm control over their data.”

Give feedback on the feeling

The AI generates the code and I review it. If the feel is wrong, instead of fixing it line by line, I talk to the model again: “This feels too cramped. Give it more white space and make the shadows softer.”

That’s the heart of vibe coding: a high-level conversation about intent.

Line-by-line fixes

You open the generated component and start tweaking padding values and shadow numbers by hand until it looks less cramped.

Feedback on the feel

You tell the model “this feels cramped, give it more white space and softer shadows,” review the diff, and keep the version that feels right.

Guardrails for vibe coding

Some of you are thinking: “This sounds like a recipe for a messy, unmaintainable codebase.”

You’re right to worry. If you vibe through a project without discipline, you end up with a ball of mud. Experience matters more here, because someone has to decide what the AI may touch.

A solid core under the vibe layer

Vibe coding works when you shift your focus to where it pays off. Use your experience to build a solid core, so the vibe layer has something safe to sit on.

For me that core is usually Laravel and Docker. Laravel is built for developer happiness, and it gives me a foundation I trust: authentication, database migrations and API structure.

With that core in place and covered by tests, I can be exploratory with the frontend and the user experience. I vibe code the top layer because I trust the layer beneath it.

Shopify and vibe coding

In e-commerce, this approach fits well. Shopify has spent years refining how checkout and the admin feel.

Matching the brand

When I do Shopify customization, I write Liquid code and I also try to match the brand’s feel. A luxury jewelry brand needs a very different experience from a high-energy fitness store.

One should feel slow, deliberate and expensive. The other should feel fast, punchy and motivating. You get there by obsessing over the details a logic-only developer skips.

Comic panel of a smiling robot holding a paintbrush between a dark jewelry display with a spotlit diamond ring and a bright panel with a lime green running shoe and lightning bolts
Each brand needs its own feel.

How to start vibe coding today

  1. Train your taste. Look at software as an experience. Which apps do you love using, and why: speed, animation, the way buttons respond? Keep a swipe file of great examples.
  2. Treat AI as a partner. Use Claude or Cursor to brainstorm whole concepts, beyond autocomplete. Wiring your editor into the rest of your stack with MCP to give the model real context makes this practical. Next comes real agentic workflows with MCP and agentic loops, and I mapped the whole path level by level, from gateway prompts to multi-agent orchestration.
  3. Build a solid core. Don’t let the vibe turn into chaos. Laravel and Docker keep your infrastructure predictable, and the more you trust the foundation, the more you can play with the surface.
  4. Iterate on the feeling. Get the feel right first with a messy prototype, then use your technical skills to refactor and harden it.
  5. Practice user empathy. For every piece of logic, ask: “How will this make the user feel?” If the answer is “nothing,” there’s more work to do.

Key takeaways

  • Feel is part of the spec. Users judge software by how it behaves and responds.
  • Taste is the skill to build. Steering the AI well matters more than typing fast.
  • Vibe the surface and harden the core. A tested Laravel and Docker foundation keeps the mess out.
  • Iterate on feel, then refactor. Prototype fast, then make it production-grade.
  • For production, think agentic engineering: the same speed, with oversight and review.

Generating a function to sort an array is now a commodity. Building an experience that moves people is rare, and that’s where engineers can still stand out. If you want to bring AI-assisted building into your team without losing code quality, here’s how I help teams set up AI coding workflows with guardrails.

What’s the one app you use that just “feels” right, and what could you borrow from it for your next project?

▸ Made it to the end? Send it around.

▸ Share

▸ Comments