My Journey with Vibe Coding
What is Vibe Coding? #
The term “vibe coding” emerged about two months ago, describing a new development approach where programmers rely entirely on large language models to translate their ideas into code. While the term is new, the practice has been around for several months - which in the fast-moving AI world feels like ages.
My Transition to Vibe Coding #
I made the switch to 100% vibe coding when agentic AI features were released by Cursor and Windsurf IDEs (both released the feature relatively around the same time). With these tools leveraging models like Claude 3.5 Sonnet, we finally had the breakthrough needed to make vibe coding practical.
As someone who began developing software years before generative AI left research labs, I’ve witnessed a dramatic transformation in how we build software. My verdict? Vibe coding has made development faster, better, and more enjoyable.
The Speed Factor #
Traditional software development follows a familiar pattern: selecting tools, architecting features, implementing code, and debugging. How does vibe coding affect this process?
Interestingly, AI still struggles with choosing libraries and frameworks (unless they’re extremely popular) and architecting features. An experienced human remains essential for these critical decisions.
Where AI truly shines is in the coding phase. It excels at:
- Understanding language syntax
- Implementing common programming patterns
- Analyzing project context
- Adding appropriate logging
- Implementing error handling
However, debugging remains a challenge. While AI can handle simple issues like syntax errors, it often struggles with complex debugging tasks, sometimes creating new problems while trying to fix existing ones.
The speed improvements vary significantly:
- 10x faster: When generating new projects or large features from scratch
- 3x faster: When integrating features into existing systems or fixing bugs
These numbers are rough estimates based on my personal experience, not backed by formal research or metrics.
Quality Improvements #
Vibe coding can lead to better code quality - with a crucial caveat. An experienced developer who understands the software development lifecycle and tools can leverage AI to create superior code, as AI excels at following best practices and coding standards. However, inexperienced developers might unknowingly accept problematic code with security issues or poor patterns simply because they lack the expertise to evaluate AI’s output.
Notably, while code quality can improve, the broader development lifecycle (like version control) hasn’t seen similar benefits. Despite writing about generating Git commit messages with AI, I still find human-written commits more effective.
The Joy Factor #
For me, vibe coding has made development more enjoyable. I’ve always been more interested in system design than manual coding. Building software is like playing with Lego - it’s about assembling pieces in the right order to create a well-engineered system. The tedious part was always translating thoughts into code. Now, with AI, I can express my ideas in natural language and focus on the architectural aspects I enjoy most.
The Limited Scope of Vibe Coding #
It’s crucial to understand that vibe coding primarily concerns development, not software engineering as a whole. While AI excels at using popular libraries and frameworks to build software following common patterns, it struggles with novel engineering challenges - like those faced when creating frameworks like React or Vue.js. The technology is great at implementing established patterns but requires human reasoning and experience when venturing into new territory.
AI researchers and companies have solved one piece of the puzzle: the coding part. But everything else - system design, architecture decisions, performance optimization, and innovative problem-solving - remains firmly in the hands of experienced human engineers. If you doubt this, try asking your AI IDE to build a library for manipulating an uncommon file format. Without your own research and engineering input, the AI will likely fail at this task.
The Ethics of AI Advancement #
We’re witnessing professionals across all sectors voicing concerns about AI’s impact on their careers, income, and future prospects. Software developers aren’t immune to these concerns. Perhaps uniquely, we’re actively participating in our own transformation, as these tools are being created by engineers themselves.
But should we halt technological progress to preserve jobs? History shows that technological advancement has always reshaped the job market, and our current AI revolution is no different. The logical approach is to accept that generative AI will significantly alter the employment landscape and adapt accordingly. The best response to technological change is to embrace it.
In the coming years, after several more AI breakthroughs, we might reach a point where fewer human workers are needed across industries. However, this will likely coincide with unprecedented productivity levels. At that stage, workers should be more concerned with their country’s politics and wealth distribution than with AI taking their jobs. If AI assumes most jobs, it means increased productivity and wealth - the real question becomes how society distributes these gains.
This discussion isn’t new - many countries have been debating concepts like universal basic income for years. While we’re still far from an “AI apocalypse,” my advice is twofold: focus on adapting to the current job market changes, but stay engaged with political discussions about wealth distribution. When automation truly transforms the economy, ensuring food on your table might depend more on political decisions than job market dynamics.
The Entrepreneurship Angle #
We’re seeing many aspiring entrepreneurs using vibe coding to build products. Should this concern us? While we’re not yet ready to trust AI with complex software development, it’s likely just a matter of time and a few more breakthroughs before AI becomes more reliable.
However, just as we still have human pilots despite years of autopilot technology, the software world isn’t ready to fully trust AI - both due to technical limitations and trust issues.
Advice for Newcomers #
For aspiring entrepreneurs or SaaS builders looking to use vibe coding, my advice is clear: learn software engineering fundamentals first. Without understanding the basics of modern software engineering and your chosen stack, you’ll quickly hit roadblocks.
The initial excitement of rapid development can be misleading. While vibe coding offers instant gratification through quick results, the real test comes when your application grows complex and faces real users. Poor architectural decisions made early on can make debugging and maintenance significantly more challenging.
Conclusion #
Vibe coding represents an exciting evolution in software development, enabling experienced developers to build better software faster. However, it also carries risks when inexperienced developers place too much trust in AI without understanding the fundamentals.
For those exploring vibe coding, I recommend reserving judgment until you’ve deployed your application to production and served real users. The true test of any development approach lies not in the initial development experience, but in the long-term maintainability and reliability of the software it produces.
Edit (April 4, 2025) #
After sharing this post on Reddit’s /r/vibecoding subreddit, a reader provided thoughtful feedback noting that this post reads more like an introduction to vibe coding rather than a personal journey as suggested by the title. They’re right - the title might not perfectly reflect the content. I chose it because I’m sharing my opinions about vibe coding rather than providing an objective explanation (which I’m not qualified to do - that’s what dictionaries and technical documentation are for).
The feedback also mentioned that the post lacks specific details about stacks or projects I work with. My experience with vibe coding has been consistent across different stacks and tools, so I felt those details weren’t relevant here. My goal was to share my overall impressions and feelings about vibe coding - a very opinionated perspective rather than a technical deep-dive.
Ironically, I’m “vibe writing” this post as an amateur writer, much like how an amateur developer might “vibe code” a project. In fact, the title itself was suggested by my AI assistant after reviewing my draft - making me a perfect example of what I discuss in this post, just in writing instead of coding! I appreciate all feedback, whether through email or on the various platforms where this post is shared. Critical but constructive feedback helps improve both the content and my writing.