Over the past few weeks, a new term has emerged in software development: Vibe Coding. For those unfamiliar, Vibe Coding is the practice of allowing AI to write 100% of your code—even for small, single-line refactors, you delegate everything to AI. When I first saw this term pop up in my feeds, I was excited because this approach has been transforming my development process for the past six months. I imagine many other developers have been exploring similar workflows. In this post, I want to share what I've learned from my journey with "Vibe Coding" and how it might help your development process too.
Back in September 2024, I finally found the drive to create my startup: Teach Niche. I used Cursor to write the entire beta version of the site, and discovered it to be surprisingly effective. It was genuinely mind-blowing to watch whatever I typed come to life in moments. However, as I got further into the project and actually deployed the beta, it became clear that my original approach wasn't a long-term solution. So, I went back to coding manually—copying AI-generated responses by hand into files to better understand what was happening under the hood. This turned out to be incredibly valuable, and I'd recommend it to anyone new to programming, as it helps build a stronger foundation in software engineering while still leveraging AI's capabilities.
That said, this process was still too inefficient for my needs. After experiencing how rapid AI-assisted development could be, typing code by hand felt like I was swimming against the current. Around this time, I discovered what has become my favorite coding tool: Aider. Aider offers many of the same features as Cursor, but it's open-source and runs in the command line, providing significantly more freedom while developing.
I found there's definitely a learning curve when it comes to using these tools effectively, and interestingly, my lack of ingrained habits from years of traditional development might have made this transition easier. Developers who have spent years writing code manually might find it challenging to shift their workflow so dramatically. That said, I believe AI-assisted development represents a significant evolution in how we build software, and learning to work with these tools effectively is becoming increasingly valuable.
My workflow has evolved significantly over time. I started with what I'd call AI-generated "spaghetti code"—untested and held together by hopes and dreams—but gradually learned how to guide AI to produce higher-quality, production-ready code with proper test coverage and deployment pipelines. The turning point in this journey came when I began emphasizing consistency, coding standards, and thorough planning in my prompts and interactions with AI.
One practice that's been particularly effective is giving each instance of Aider access to a detailed set of developer guidelines—essentially a comprehensive document covering everything from project architecture to the development pipeline and coding standards. This approach has dramatically improved the consistency and quality of the AI-generated code, aligning it much more closely with my project requirements. With these guardrails in place, I worry much less about the AI overcomplicating things or generating solutions that won't work in my specific context.
More recently, I've had an important realization about scaling this approach. While building small side projects with AI tooling is straightforward, larger production applications require more structure. The key difference? Thoughtful planning and organization. Using AI not just for coding but for planning has been one of the most valuable discoveries in my process. By implementing standardized GitHub issue templates, pull request structures, and consistent branching strategies, I've found a rhythm that allows for much faster and more accurate development. This approach seems particularly effective when you've designed your project's architecture with AI assistance from the beginning.
Here's what my current workflow looks like when adding a feature or fixing a bug:
- I type out the issue in one or two sentences.
- Aider generates a properly templated GitHub issue, complete with relevant context (file names, project sections, etc.).
- I feed this issue into a new instance of Aider, which helps implement the solution—including testing infrastructure and deployment considerations.
What's remarkable is how this process compresses what would typically be hours of work into minutes. Tasks that might have required 2-3 hours of focused effort can often be completed in a fraction of that time. And surprisingly, I've found that the quality and precision of the work has actually improved rather than suffered.
Embracing this approach has fundamentally changed how I think about software development. It represents a paradigm shift in what it means to "code" in today's AI-enhanced world. For me personally, this new workflow has become so natural that I can't imagine returning to traditional manual coding methods.
The productivity gains have been substantial, allowing me to build and iterate much faster than I could have imagined. And the exciting part is that we're still in the early days of these tools—there's tremendous room for improvement as both the technology and our methods for working with it continue to evolve.
If you're curious about trying "vibe coding" yourself, I'd encourage starting with small, low-stakes projects to get comfortable with the workflow before applying it to more critical work. The learning curve is real, but in my experience, the benefits have been well worth the investment.