Vibe Coding
twitter.com
twitter.com
Have you been on the internet lately?
It honestly sounds like reprimanding somebody for sitting on the floor for a bit when they're tired, or ordering an Ikea chair, when a woodworking tutorial is right there on Youtube.
A week or so ago I gave a talk at a game jam discussing some of these topics and most of the audience being people in their 20's didn't understand or give weight to what I said at all. Only a few people from that big audience came after and expressed interest to learn more. Hope is not lost, but we have to actively push back and fight against the nonsense that comes from all sides.
I can't wait for the AI, AI bros and hype surrounding it to crash and burn in a few years. It's not that these new technologies are not useful - they are. And they have their place, but quality matters. DO NOT SURRENDER YOUR FACULTIES TO "AI". You get good by struggling! If you don't want to get good at this - then don't do it anymore. As another comment in another thread around code snippets said earlier - "No snippets, no LLMs, no autocomplete".
Even when you're building in an existing category of products (say, databases), there are still lots of variations and trial and error needed to get "what we need" defined clearly.
I'd say "vibe coding" is just a new name for "exploratory programming" or good old "prototyping"
Just in the past few weeks I can think of several instances where an AI assistant added sensitive API endpoints with no authentication whatsoever, updated API endpoints with methods that didn't follow my guidance on authorization or existing authorization patterns in the codebase, or created templates with brutal potential for XSS.
I'm all in on coding with LLMs and use them every single day, but I'm quite confident there will be plenty of work for security engineers as we explore this future.
Now I know.
On the other hand, the bar to start exploring something in the first place (quite possibly sloppily, quite possibly containing a lot of bugs) has significantly gone down, and I personally find it amazing.
---
Seriously tho, "wysiwyg with natural-language edit commands" seems like the sort of thing that I'd expect to have a sharp cliff, like RAD tools are known for but perhaps even sharper.
It doesn’t have to be the only way someone ever builds software.
The right technique matches the effort level to the needed level of polish.
And vibe coding can be a great way to learn, and a great way to explore. Build one to throw away, as they say.
Finally and most interesting of all. Vibe coding opens up a whole new region on the effort-to-polish spectrum. There’s bound to be some interesting problems that can be solved now.
I believe Fred Brooks clarified this to mean you shouldn’t hesitate to throw away your first attempt if it comes up short despite your best effort.
If an LLM came up with the first implementation, not only did you not do the hard work of understanding the problem and how to solve it but, worse, you could be anchored to the LLM’s implementation thinking about how to patch it up so it performs adequately. Personally I think you should have LLMs have a go after you’ve had a solid try yourself, so you can actually compare and see what you might have missed.
https://github.com/williamcotton/search-input-query
Search box DSL with React component with syntax highlighting, error syntax reporting, etc. Converts AST to postgres ilike, tsvector or pg_search.
https://github.com/williamcotton/guish
A bi-directional GUI editor for constructing Unix pipelines with bash CLI parsed to graphical modules.
All of these were made basically with the same tools and methods that Karpathy is describing as Vibe Coding.
These are not just simple little projects. This approach is not just limited to making a few CSS changes.
This is simply not true if you're working on more serious websites for clients who actually audit for accessibility or responsive design, nor if you want it to be maintainable by web devs that actually know what they're doing.
CSS definitely isn't as messy some C++ still out there in the wild. If you're doing it right you should be able to quickly write a minimal amount of code that does what you want even for fairly large websites. Involving AI for something so trivial would just get in the way. Bad CSS is usually due to the requirements specifying a terrible design, much like how bad requirements drive bad code in any other language.
It's not (yet?) my preferred way of programming, but the fact that it works at all was hugely surprising to me, and I got more than one genuinely useful little utility out of it already.
It's like comparing cheap ramen to fine Italian cuisine.
Are you implying that Andrej Karpathy[0] doesn’t understand how the code generation from these models works? Or are you saying he isn’t capable of understanding the output?
[0]: https://karpathy.ai/
People are still free to understand the joys of computer programming "by hand", if they are so inclined, just like some people still know how to build internal combustion engines. It might even be very fulfilling, lead to a great career as a car mechanic, engine designer etc. – but I think it's fair to also just want to be able to drive one and take a trip to somewhere amazing, and I don't think we need to morally gatekeep anything.
Talk to any sufficiently experienced engineer and tell them they don't understand at "all levels".
The worry comes when all of that is devalued to the point that nothing matters beyond merely determining what needs to be done and the real gatekeeping is done by idiots who think they're smarter than those who actually do heads down work.
We're throwing away everything for these idiots who walk all over those who are scared of taking this situation into their own hands. Not everyone can be a hero, but damn do we need a few.
I only need to look at myself for that. I'm pretty experienced in some areas, but the time that a single person can understand it all within a lifetime has long passed.
> The worry comes when all of that is devalued
Not everything will be devalued, but values will definitely change when it doesn't take a software engineer to write a simple CRUD application anymore.
The industrial revolution seems like a good comparison: There are still people manufacturing individual, highly customized items, whether for niche applications or for people that value the craftsmanship in and of itself. But most things that used to be made in workshops are now produced in factories, with orders of magnitudes fewer workers.
> We're throwing away everything for these idiots who walk all over those who are scared of taking this situation into their own hands.
Another way of looking at this is that a lot of people (not all) have much to gain by letting go of some (not all) low-level control and focusing on higher layers. And yes, letting to of habits and control can be pretty scary – speaking from lots of first-hand experience.
Stating the obvious: to understand the code you have to read it and interpret it.
https://github.com/williamcotton/webdsl
I didn’t even put that much effort into defining the grammar, I just sort of let my fancy take flight. Which is a wild headspace to be in when writing a DSL in C with a web runtime with jq, Lua, GitHub OAuth and more all built in into the language itself.
It took some guidance of course and I’m well versed enough in C to have orchestrated the memory arenas and overall architecture but I sure has hell didn’t actually type more than 5% of the code.
Cursor Composer in agent mode with Claude Sonnet 3.5 has let me take on some very experimental endeavors.
It’s not about replacing solid engineering principles or craftsmanship—it’s about shifting how we interact with code. Instead of micromanaging every function from the start, you set intent and iterate quickly. It’s more like pair programming with an AI that can help you move faster, not handing over control entirely.
I wrote about this after using DeepSeek R1 + Cursor to prototype an AI chat interface for my Raspberry Pi NAS. It still took over 100 prompts to refine, but it turned what was in my head into something real and functional—faster than if I’d started from scratch. The key is treating AI as a collaborator, not a crutch.
If you’re interested in how natural language + agentic interfaces change how we build, I wrote more on it here: https://productandrobots.substack.com/p/its-a-vibe-dude.
Curious—has anyone else tried pushing AI beyond just simple code generation? How do you think this approach plays out long-term?
I'm assuming you dictated it off-the-cuff: I apologise if that wasn't the case.