Skip to main content
Redhat Developers  Logo
  • Products

    Platforms

    • Red Hat Enterprise Linux
      Red Hat Enterprise Linux Icon
    • Red Hat AI
      Red Hat AI
    • Red Hat OpenShift
      Openshift icon
    • Red Hat Ansible Automation Platform
      Ansible icon
    • See all Red Hat products

    Featured

    • Red Hat build of OpenJDK
    • Red Hat Developer Hub
    • Red Hat JBoss Enterprise Application Platform
    • Red Hat OpenShift Dev Spaces
    • Red Hat OpenShift Local
    • Red Hat Developer Sandbox

      Try Red Hat products and technologies without setup or configuration fees for 30 days with this shared Red Hat OpenShift and Kubernetes cluster.
    • Try at no cost
  • Technologies

    Featured

    • AI/ML
      AI/ML Icon
    • Linux
      Linux Icon
    • Kubernetes
      Cloud icon
    • Automation
      Automation Icon showing arrows moving in a circle around a gear
    • See all technologies
    • Programming languages & frameworks

      • Java
      • Python
      • JavaScript
    • System design & architecture

      • Red Hat architecture and design patterns
      • Microservices
      • Event-Driven Architecture
      • Databases
    • Developer experience

      • Productivity
      • Tools
      • GitOps
    • Automated data processing

      • AI/ML
      • Data science
      • Apache Kafka on Kubernetes
    • Platform engineering

      • DevOps
      • DevSecOps
      • Red Hat Ansible Automation Platform for applications and services
    • Secure development & architectures

      • Security
      • Secure coding
  • Learn

    Featured

    • Kubernetes & cloud native
      Openshift icon
    • Linux
      Rhel icon
    • Automation
      Ansible cloud icon
    • AI/ML
      AI/ML Icon
    • See all learning resources

    E-books

    • GitOps cookbook
    • Podman in action
    • Kubernetes operators
    • The path to GitOps
    • See all e-books

    Cheat sheets

    • Linux commands
    • Bash commands
    • Git
    • systemd commands
    • See all cheat sheets

    Documentation

    • Product documentation
    • API catalog
    • Legacy documentation
  • Developer Sandbox

    Developer Sandbox

    • Access Red Hat’s products and technologies without setup or configuration, and start developing quicker than ever before with our new, no-cost sandbox environments.
    • Explore the Developer Sandbox

    Featured Developer Sandbox activities

    • Get started with your Developer Sandbox
    • OpenShift virtualization and application modernization using the Developer Sandbox
    • Explore all Developer Sandbox activities

    Ready to start developing apps?

    • Try at no cost
  • Blog
  • Events
  • Videos

The uncomfortable truth about vibe coding

February 17, 2026
Todd Wardzinski
Related topics:
Artificial intelligenceDeveloper productivity
Related products:
Red Hat AI

    We're living through a strange moment in software development. Anyone with an internet connection and a credit card can spin up an AI coding assistant and start building applications. You describe what you want in plain English, hit enter, and watch code materialize on your screen. It feels like magic. And honestly? It kind of is.

    This is vibe coding—the practice of building software by conversing with AI rather than writing every line yourself. Andrej Karpathy coined the term earlier this year, and it's stuck because it captures something real about how millions of people are now approaching development. You describe the vibe, the AI handles the details.

    The tools have proliferated faster than anyone expected. Cursor, GitHub Copilot, Windsurf, Claude, and ChatGPT each promise to make software creation easier. And to be fair, they've delivered on that promise in ways that genuinely matter. People who never imagined themselves as developers are shipping real products. Ideas that would have died in the "someday I'll learn to code" graveyard are actually seeing the light of day.

    Here's the thing though: vibe coding is simultaneously the most exciting and most dangerous development practice to emerge in years. And understanding why requires getting past the hype and into the uncomfortable realities that emerge once the initial magic wears off. Let's not pretend vibe coding doesn't work. It absolutely does—for certain things. Need a quick prototype? A flashcard app? A landing page? You can go from idea to working code in minutes. One developer I read about recently built a functional flashcard app with editable cards, flip animations, and persistent storage using nothing but prompts. No semicolons typed, no debugging console logs—just conversation.

    I have brought five concepts to life and created three minimum viable products (MVPs) in just a few months. Projects that would have taken me quarters of dedicated evenings now take weekends. The speed is real, and dismissing it would be dishonest.

    The efficiency gains are undeniable when you're working on straightforward, self-contained projects. Natural language is how our brains actually work. We think in concepts and intentions, not in curly braces and type declarations. Vibe coding lets us stay in that headspace. You can focus on what you're trying to build rather than getting lost in the how of implementation details.

    Where it falls apart

    But then reality sets in. You're three months into your project. You've been chatting back and forth with your AI assistant, adding features, fixing bugs, making tweaks. Everything felt smooth until suddenly it didn't.

    You change one small thing and four other features break. You ask the AI to fix those, and now something else is acting weird. You're playing whack-a-mole with your own code base. One developer on Reddit described it perfectly: "AI is still just soooooo stupid and it will fix one thing but destroy 10 other things in your code."

    The Perils of Vibe Coding
    Figure 1: Putting a large prompt together and expecting AI to perfectly orchestrate is a recipe for disaster!

    This is not the AI being dumb. It's the natural consequence of building without specifications. When you vibe code, your instructions become obsolete the moment code is generated. The code itself becomes the only source of truth for what the software does—and code is terrible at explaining why it does what it does. The intent behind decisions gets lost. The mental model that made everything make sense fades. You're left with a code base that works (sort of) but that nobody, including the AI, fully understands anymore.

    This is why so many vibe-coded projects hit a wall around the three-month mark. The code base has grown beyond anyone's ability to hold it in their head. The AI's context window can only see fragments. You have no map to help you find your way back to a stable version.

    Specificity is king

    The developers having real success with AI coding tools aren't just vibing. They're specifying.

    Spec-driven development flips the relationship between instructions and code. Instead of treating your prompts as throwaway tasks, you treat your specifications as the authoritative blueprint—the single source of truth that the code must conform to. When something breaks, you don't dive into the code to fix it. You refine the spec and regenerate.

    This sounds like extra work, and initially it is. But consider what you gain. Your specifications become version-controlled documentation that actually stays current. You can collaborate with teammates at the spec level rather than arguing over code reviews. When you need to change something, you change it in one place rather than hunting through interconnected code paths hoping you don't break something else.

    Most importantly, you maintain control. The AI becomes a powerful executor of your clearly expressed intent rather than an unpredictable collaborator making decisions you don't understand.

    Spec-driven workflow
    Figure 2: Specifying what you want in via a task spec yields better results overall. Vibe coding still has a place, but with a smaller controlled scope. 

    Think about what a good specification actually does: it forces you to articulate what you want before you start building. The graphic above denotes the differences between the two workflows. Spec-driven development makes you consider edge cases, define constraints, and think through the user experience. These aren't bureaucratic hurdles—they're the exact things that separate software that works from software that sort of works until it doesn't.

    The uncomfortable middle ground

    Here's what the enthusiasts don't want to admit: you still need to be technical. You still need to understand how software works—architecture, dependencies, constraints, trade-offs. A specification written by someone who doesn't understand these things isn't a workable blueprint; it's a wish list.

    The barrier to entry has lowered, but it hasn't disappeared. Vibe coding extends your reach; it doesn't replace your foundation. The developers getting ten times more productive aren't abandoning their expertise—they're using it in a new way.

    Think of it like the shift from assembly language to high-level languages decades ago. We lost detailed understanding of how machines work. But we still needed to be technical. We still needed to understand computers. The abstraction changed; the requirement for competence didn't.

    This creates an awkward reality for the "anyone can code now" narrative. Yes, anyone can generate code. But generating code and building sustainable software are not the same thing. The gap between a working demo and a production system remains vast, and AI doesn't bridge that gap automatically—it just makes the demo easier to reach.

    What actually works

    The most effective approach combines the efficiency of natural language with the rigor of explicit specifications. You can still vibe when exploring ideas or prototyping. But when you're building something that matters—something you'll need to maintain, debug, and extend—you need guardrails.

    Notice where vibe coding still has a home in the spec-driven workflow: at the unit level. If you can write a unit or functional test to validate the output, the scope is small enough to vibe. If you can't test it at that level, you need a spec. This is what keeps you out of the whack-a-mole trap—each piece is small enough to verify in isolation before it joins the larger system.

    Be specific about what you want. Be specific about how you want it done. Document your decisions. Define your constraints. Create acceptance tests that verify your specifications are actually implemented.

    This isn't just theory anymore. The industry is catching on, and real tools are emerging to bridge the gap between vibing and building:

    • Amazon's Kiro
    • GitHub's Spec Kit
    • Codeplain
    • Tessl

    Even GitHub's research arm explored this territory back in 2023 with SpecLang, an experimental project that used structured natural language to generate code. While it never shipped as a product, the ideas it pioneered are now showing up across the ecosystem.

    The common thread? All of these projects recognize that the freewheeling nature of vibe coding doesn't scale. At some point, you need structure. You need something that persists beyond the chat window.

    When you leave details unspecified, the AI fills in the gaps. Sometimes it fills them in brilliantly. Sometimes it fills them in differently every time you generate code, leading to what one researcher calls "functionality flickering"—that disorienting experience where your button is blue one day and green the next because you never specified which it should be.

    The solution isn't to abandon vibe coding entirely. It's to recognize when you've moved past the prototyping phase and need to shift into a more disciplined mode. Use the vibes to explore. Use specifications to build.

    The future is specific

    Vibe coding isn't going away. It's too useful, too accessible, too aligned with how humans naturally think. But the developers who thrive won't be the ones who vibe hardest. They'll be the ones who learned that specificity is king.

    The magic isn't in the vibes. It's in knowing exactly what you want and expressing it clearly enough that even an AI can't misinterpret it.

    That's harder than it sounds. But it's also the skill that separates sustainable software from digital sandcastles waiting for the next prompt to wash them away.

    Related Posts

    • How spec-driven development improves AI coding quality

    • Speculators: Standardized, production-ready speculative decoding

    • Making LLMs boring: From chatbots to semantic processors

    • Fly Eagle(3) fly: Faster inference with vLLM & speculative decoding

    • The state of open source AI models in 2025

    • The strategic choice: Making sense of LLM customization

    Recent Posts

    • The uncomfortable truth about vibe coding

    • How the contextual SBOM pattern improves vulnerability management

    • Build a CI/CD pipeline with OpenShift Dev Spaces and GitOps

    • Performance and load testing in Identity Management (IdM) systems using encrypted DNS (eDNS) and CoreDNS in OpenShift clusters

    • New LibSSH connection plug-in for Ansible replaces Paramiko

    What’s up next?

    share-graphic-applied-ai-enterprise-java-ebook.png

    Applied AI for Enterprise Java Development

    Alex Soto Bueno +2
    Red Hat Developers logo LinkedIn YouTube Twitter Facebook

    Platforms

    • Red Hat AI
    • Red Hat Enterprise Linux
    • Red Hat OpenShift
    • Red Hat Ansible Automation Platform
    • See all products

    Build

    • Developer Sandbox
    • Developer tools
    • Interactive tutorials
    • API catalog

    Quicklinks

    • Learning resources
    • E-books
    • Cheat sheets
    • Blog
    • Events
    • Newsletter

    Communicate

    • About us
    • Contact sales
    • Find a partner
    • Report a website issue
    • Site status dashboard
    • Report a security problem

    RED HAT DEVELOPER

    Build here. Go anywhere.

    We serve the builders. The problem solvers who create careers with code.

    Join us if you’re a developer, software engineer, web designer, front-end designer, UX designer, computer scientist, architect, tester, product manager, project manager or team lead.

    Sign me up

    Red Hat legal and privacy links

    • About Red Hat
    • Jobs
    • Events
    • Locations
    • Contact Red Hat
    • Red Hat Blog
    • Inclusion at Red Hat
    • Cool Stuff Store
    • Red Hat Summit
    © 2025 Red Hat

    Red Hat legal and privacy links

    • Privacy statement
    • Terms of use
    • All policies and guidelines
    • Digital accessibility

    Report a website issue