My experience shipping a production grade project using Vibe Coding
Introduction
Less than a month, that was the window we had to migrate a critical customer-facing report from a legacy system to Snowflake and Streamlit, a hard deadline. By day one it was already clear that a traditional development approach wasn’t going to get us there. That’s when the call was made to vibe code by leaning on Cortex Code (CoCo) and use it to accelerate the deadline. What followed changed how I think about building software.
Section 1. What Is Vibe Coding
Vibe coding, a term coined by Andrej Karpathy in early 2025, is rapidly gaining traction in the developer community. It refers to the practice of building apps, web pages or software by simply describing what you need to an AI and letting it generate the code for you. Unlike traditional development, vibe coding does not require the developer to fully understand the underlying logic, though a solid foundational understanding remains important. The focus shifts from writing code to directing it, with AI handling the technical execution. It’s a workflow that deliberately trades some precision for speed, where minor bugs and imperfections are accepted as part of the process. In an era where deadlines are tight, vibe coding is quickly establishing itself as a legitimate and powerful strategy in a modern developer’s toolkit.
Section 2. The Learning Curve
Getting started with vibe coding may seem simple and in some ways it is. You open your AI coding assistant, describe what you need in plain English and wait for the output. There is no syntax to wrestle with, no documentation to dig through and the flow is like a natural conversation. But the simplicity is deceptive. My early prompts were broad and assumed the AI coding assistant would fill in the gaps the way I imagined them. It didn’t. The output was often technically reasonable but not quite what I intended, missing nuance and making assumptions I hadn’t accounted for. My initial instinct was to point out what was wrong and ask for a correction. This worked, but it was inefficient and sometimes introduced new issues while fixing old ones. Over time my approach shifted. Instead of reacting to bad output, I started investing more time in crafting detailed, precise prompts that left less room for interpretation. The quality of what came back improved dramatically. I wasn’t just getting better at vibe coding; I was getting better at articulating my own intent.
The second breakthrough came when I discovered Plan mode. Rather than jumping straight to code generation, I would first discuss the approach in plan mode, aligning on what needed to change and why before a single line was written. Only then would I disable plan mode and let the AI coding assistant apply the changes.
This naturally led to a working rhythm:
Plan → Modify → Deploy → Test
Adopting this loop was the single biggest shift in how I worked. Code stability improved, surprises decreased and unintended changes to untouched parts of the codebase became far less frequent.
Section 3. Where Vibe Coding Delivered
Vibe coding covered the full spectrum of development tasks from boilerplate code, debugging, SQL generation and UI components. But two moments stood out as genuinely exceptional. The first was the legacy code migration. We had 1,000s of lines of legacy code that needed to be converted into Snowflake stored procedures. Doing this manually would have been painstaking as the code was notoriously verbose. We fed it to the AI coding assistant section by section and it didn’t just translate the syntax, it understood the structure and produced clean, workable procedures at a pace that would have taken days or even months to replicate manually.
The second moment was even more remarkable. Buried within that legacy code were business rules and logic that had accumulated over years, never formally documented, just quietly living inside the codebase. We had no spec for these rules and under a traditional development approach, uncovering them would have required significant manual analysis if they were caught at all. This is where vibe coding revealed an unexpected advantage. By working through the code conversationally and iteratively with the AI coding assistant, these rules were not only identified but interpreted correctly, bringing to light logic that would have taken considerable time to reverse engineer manually.
These two moments made me realise something important: vibe coding wasn’t just speeding up work I already knew how to do. It was doing work that would have been genuinely difficult without it.
Section 4. Where I Had to Take Back the Wheel
Vibe coding is not a hands-off experience and there were situations where manual intervention was necessary. The most notable was an instance where part of the codebase was accidentally overwritten. This prompted a more disciplined approach going forward: carefully reviewing exactly what changes the AI coding assistant intended to make before accepting them. A straightforward adjustment, but an important one. Code quality also required active oversight. On one occasion the SQL produced was functionally correct but inefficient, unnecessarily joining tables that added no value to the output. A targeted prompt to remove the redundant joins resolved it, but it highlighted that AI generated code needs to be read critically, not just tested for correctness.
Precise UI layout was another area that required patience. Getting text positioning right in Streamlit took several iterations but minor spacing and overlap issues needed multiple rounds of refinement to reach the intended result. None of these were significant blockers, but they reinforced a consistent theme: vibe coding rewards developers who stay engaged, review outputs carefully and are comfortable stepping in when needed.
Section 5. The Hidden Skill of Vibe Coding
There is a common misconception about vibe coding that it is simply a matter of describing what you want and letting AI do the work. In practice it is considerably more nuanced than that. The interface may be simple, but the skill is not. The first is precise communication. AI coding assistants do not infer intent, they respond to instructions. Learning to articulate requirements clearly, provide the right context upfront, and structure requests in a way that leaves minimal room for misinterpretation is a skill that takes deliberate practice. My prompts at the end of the project looked very different from my prompts at the beginning.
The second is judgement, knowing when to trust the output and when to intervene. Not every piece of generated code is production ready. A clear example from this project was AI generating SQL with unnecessary table joins that added no value to the output. The query ran correctly but was inefficient and would not have met production standards without review. Developing an eye for what looks right, what needs refinement, and what needs to be reworked entirely is something that only comes with experience. The third is a problem decomposition. Vague, open-ended requests produce inconsistent results. A practical example was our approach to legacy code migration rather than feeding the entire 1,000s of lines at once, we broke it into smaller, focused chunks. This not only produced more accurate and reliable output but also resulted in cleaner, more modular Snowflake procedures that were easier to maintain and validate. This also reduced the context window while debugging code. We would not have to read the entire code base but only focus on the module we are debugging. Taken together these three skills form the real craft of vibe coding. The tool is only as good as the person directing it.
Wrap up
For a report migration of this complexity, on a deadline this tight, I genuinely believe vibe coding was a significant factor in making it possible.
Would I recommend it? Absolutely, but with clear caveats. Vibe coding is not a shortcut and it is not a replacement for developer expertise. It accelerates the work you already know how to do and occasionally surprises you by handling work you weren’t sure how to approach at all. The legacy code conversion and the uncovering of undocumented business rules were not things I expected an AI coding assistant to handle as effectively. It rewards those who stay engaged, review outputs critically and invest time in learning to prompt well and break problems down deliberately and always know when to step in. If you are considering trying vibe coding on your next project, my advice is simple – start, learn as you go and treat it as a skill worth developing rather than a tool you simply switch on. The returns compound quickly once you find your rhythm.
References
1) VIBE CODING Slang Meaning | Merriam-Webster