Vibe Coding Made Me a Better Coder
My biggest fault when coding was never adding in tests.
Having found joy in coding again by vibe coding ( Whatever that actually means now?) it’s also actually made me a better coder in a number of ways but most importantly by forcing me to add tests. Yes I know you’re all judging me and saying “What you never did that?” Well only when I was made to! 😏
You see while vibe coding is fun it does often lead to breaking changes more often than not and the tendency to over engineer the fix so by adding tests I can verify it hasn’t inadvertently broken something before I push the changes. In fact it’s taken to creating small test scripts when it has made changes and tidying up after itself. 🤯
What else has vibe coding made me be better at ?
- Starting with requirements and/or design documents. Even for a small app now as it leads to better outcomes
- Pushing changes to a repo more often
- Creating the README files that I wish all repos had with detail on how to get the code up and running without having to figure all the steps out
- Trying to keep the code simple. Vibe coding has a tendency to over engineer . So by implication I am reading way more code now than I ever have and if it looks convoluted i query it and it does tend to try and simplify once I challenge it!
- Creating working prototypes in hours not days
- Peer programming . Reminds me of the fun I had with a colleague from our maps team nearly 10 years ago when we both sat side by side and had a lot of fun creating a demo application.
However I am obsessed with adding in a chat interface for everything developed now just because I can not because it’s needed!
Cursor is still my vibe coding tooling of choice. I know familiarity can mean a reluctance to change but I have tried various new kids on the block and it’s either too much copying & pasting, doesn’t make any real differnce to how I use cursor or it’s not integrated into my workflow. I am used to IDEs based off of visual studio code and that habit is hard to break I admit. I have tried recently (At the time of writing this) using GitHub co-pilot , Gemini canvas and Jules for example but they’re just not fitting my typical dev workflow or added anything beyond what I have now . Jules was very very cool though just not for me! Void touts itself as an open source cursor alternative which to me just validated that cursor was getting something right! Would I have opted for void now ? Who knows but the continuous improvements in cursor means it got my money. Just choose the tool that fits your workflow and try other tools out regularly as you never know one of them may tempt you away from your AI coding buddy of choice.
Oh and here’s what Gemini had to say when I asked it what is vibe coding :
“Vibe coding” is a new buzzword, particularly in Silicon Valley, that refers to an approach to software development where a person uses natural language prompts to tell an AI, specifically a Large Language Model (LLM) tuned for coding, what they want the software to do. The AI then generates the code.
Here are the key characteristics and implications of vibe coding:
- Reliance on LLMs: The core of vibe coding is using AI tools like ChatGPT, Claude, or specialized coding LLMs to generate code.
- Natural Language Prompts: Instead of writing code in a programming language, users describe their desired outcome in plain English (or other natural languages).
- Reduced Need for Programming Knowledge: Advocates suggest that vibe coding lowers the barrier to entry for software creation, allowing even non-programmers or amateur programmers to produce functional software. This is a central idea popularized by AI researcher Andrej Karpathy, who claimed “the hottest new programming language is English.”
- “Code First, Refine Later” Mentality: It often involves a rapid prototyping approach, where the focus is on generating a working version quickly, with less initial emphasis on perfect structure or optimization.
- Focus on Outcomes, Not Implementation: The user acts more as a “manager” or “director,” focusing on the application’s functionality and user experience, while the AI handles the technical implementation details.
- Potential for Lack of Understanding: A key aspect that distinguishes “vibe coding” from other AI-assisted programming is that the user may accept and use the generated code without fully understanding how or why it works. This can lead to challenges in debugging, maintenance, and identifying security vulnerabilities.
- Concerns and Criticisms: Critics raise concerns about:
- Accountability: Who is responsible when AI-generated code has bugs or security flaws?
- Code Quality and Performance: AI-generated code may not always be optimized, maintainable, or suitable for complex, production-level applications.
- Debugging Challenges: Debugging AI-generated code can be difficult if the user doesn’t understand the underlying logic.
- Security Risks: Without a deep understanding, users might inadvertently introduce security vulnerabilities.
- Limited Scope: While useful for prototypes or simple applications, vibe coding may struggle with novel or highly complex technical requirements.
In essence, vibe coding is about leveraging AI to translate ideas directly into working software, even if the human user doesn’t possess traditional coding skills or a deep understanding of the generated code. While it offers exciting possibilities for accelerating development and democratising software creation, it also introduces new challenges and considerations regarding code quality, security, and long-term maintenance.