I recently came across the relatively-new term of "vibe coding" and despite having no clue what it means, I cringed.
A phrase with built-in cringe can't be good. And upon further review, I think the cringe was warranted.
GenAI is Doing Impressive Things
Generative AI has become really, really good at writing convincing articles, prose, and yes, code. But not just example code or demoes - real, complex, functional code so complete that entire applications can be built with a single sentence prompt. For example, a Trello clone:
Create a Trello-like Kanban application that supports multiple boards, configurable columns, task-based cards, and features drag-and-drop functionality for columns and cards. Each card should have the following features: Title, Due Date, checklists for task tracking, and a comments section to maintain a history of comments.
Fed through Vercel's v0, this produces a Kanban board with drag-and-drop columns and cards:
Here's the detail view of an individual card. All the inputs work like you'd expect:
It would've taken me a full day to create anything remotely close to this. When errors crop up, GenAI will even continue to refine and offer fixes in code as well. It's shockingly good.
Livin' on a Vibe
So I write a few creative prompts and get working software in a few moments. No programmers needed! But please don't tell me anyone is shipping products this way... right? Right?
"Vibe coding" sure sounds like "bro coding" to me - "I got this, bro, just one more prompt and this will be awesome; stay with me bro... we got this!"
I'm not impresssed by the thought.
Haven't we been talking about low/no code solutions for decades with varying levels of success? Creating code with generative AI is without a doubt the most flexible no-code tool we've ever had, but my first impression is just that: it's a code generation tool. Yes, you can probably generate simple programs with a usable UI, business logic, and storage needs, but is that code...
- maintainable?
- easy to debug?
- well documented?
- adhering to coding conventions?
- unit tested?
- not infringing on copyrighted works?
- architecturally sound?
- secure?
- performant?
Is the quick-win of a usable solution now worth the potential maintenance headaches later? Do any actual, real businesses with reputations and legal obligations want to deal with the above liabilities?
Okay fine, maybe we can vibe together a decent POC in an hour's time. That might be a great use of vibe coding... but I'm not shipping that anywhere beyond my desktop.
What's Next?
Software development is all about breaking large problems in smaller ones, and this is where I've found success using GenAI in my dev cycles:
- asking for code samples to help me figure out different ways to implement some logic
- helping me understand what a chunk of code is doing
- writing documentation for my code so other people (and I) can understand it later
In the end, though, I'm owning all my own work - my design, my architecture, and my decisions. I'm writing more than code: I'm building complete solutions that take into account user experience, maintainability, documentation, architectural best practices, and much more.
Call me when "vibe solutioning" becomes a thing.