Blog 1
Blog 2
Blog 3
Blog 4
Can you Vibe yourself into a corner?
Vibe coding
This term lands differently depending on who you are; For some, it’s a way to interact with technology in a way they never could, the magic of creation without the pain of struggle; To others it’s an augury of a new wave of ‘cheating’ developer, poised to saturate the workforce and flaunt stolen valour.
As a long-term developer I can certainly see the argument of the latter, but I think the core of this sentiment may have lost its way. AI is here to stay, and whether we like it or not, it is going to change how development works.
New tools should never be ignored, that’s a sure-fire way to get left behind, but no matter how good a tool is, you should never stop learning. If you can get a project up and off the ground in minutes that’s undeniably awesome, AI is like magic sometimes, but what I’ve noticed in practice (including my own attempts at vibe coding) is that you can code yourself into a corner.
What I mean by this are things like adding two separate bits of functionality to an app that have conflicting requirements in terms of setup or that run in a way that interferes with the configuration of the other.
Often in these cases the solution isn’t far off, a tweak to some config, a little bit of custom scripting but it hinges crucially on your understanding of the project and how it’s parts interact.
Now, that’s not to say that normal development is immune to this, but the difference comes in the approach. An old-school ‘manual’ dev would be forced to take a step back, assess what’s gone wrong and rework and interact with the problem directly. Some of the greatest learnings I have absorbed in my career have come from unpicking my own mistakes.
The vibe coder may feel like they just need to nuke it and try again, maybe try a different AI tool until it works. But what if it never does? AI’s will very likely continue to improve over time but for now they can still become confused, they can still make mistakes and ultimately the knowledge of what has been built, the design choices that were made, become murky quickly when you’re not understanding your code-base directly.
For me this is a bit of a tragedy.
Not because I think manually written code is somehow pure and proper, honestly, who cares? Making things WORK and work well should always be our focus, the tragedy for me comes from the missed opportunity to learn. AI is one of THE best teachers I have ever had. Endlessly patient, full of knowledge and able to break down and repeat a concept and even confirm understanding.
This is the advice I would love to see vibe coders take on board. Generate, experiment, but endeavour to also understand what you’ve built. Ask the greatest super-intelligence you’ve ever seen to explain something to you like you’re 5. Not only is there something innately natural about learning by asking questions, but it’s extremely powerful if utilised correctly.
I use AI regularly for writing boilerplate code or maybe quickly converting snippets between languages. Tools are MEANT to provide efficiency, but I will also often interrogate it after the generation to help me understand. I ask how Rust expresses it’s types differently to Typescript or why I can’t use a certain library in the way I assumed I could.
I have learned a ton in the last few years from this and, if done right, can feel like having the most patient and knowledgeable mentor sitting with you all day, guiding your learning.
If vibe coders can take this on, I believe they have the potential to truly become the next wave of devs and really, this advice applies to hardened developers too. Forgo the pride, embrace the tooling, if you’re experienced technically this will only multiply your ability to wield this new flavour of magic.
Let’s stop only using AI as a printer, and embrace it as the pedagogue it is so well-placed to be.