I have been seeing a lot of so-called self proclaimed vibe-coders swearing by LLMs making them 10x or 100x devs, but I've yet to see actual vibe coded projects hitting the markets.
Whenever I see said projects, on Github or non-technical friends vibe coding their next new startups asking for a code review, all I can see is boilerplate hell, 100s of lines of redundancies, problems that could've been solved using 5-6 procedures being blown out to 4-5 directories with 20-30 procedures, basically over-engineered beyond belief.
The positive part of this is people who would've never thought of programming/writing code are beginning to do so but their confidence is highly misplaced because they simply don't understand what's going on to a certain degree and don't possess the necessary knowledge nor skillset to review the generated code. A successful compile or output on the web browser is not a very good metric for projects.
Great writeup that captures the current state of affairs.
----
Tangential, but hi Nommy :) glad to see you out there, remember competing against you back in school; those web dev comps used to be the shit. Think Exun 2013 was when we went head to head making that fake currency haha.
but I've yet to see actual vibe coded projects hitting the markets.
In a single day, I vibe coded an internal tool for my team to run unit, integration tests. It has a professional looking UI, a few nice to have features that usually never get built, and a server component that connects to our app APIs.
In the past, it would have taken me at least 1-2 weeks to build this. It was actually never going to get built because of that. But vibe coding finally let us complete the project.
I'm freelancing on a project that's been mostly vibe coded by one dude, who's a good dev as far as I can tell, the product is definitely profitable, 70k+ mrr with a very small team and almost no expense, that being said for every feature I implement I find 1 to 3 broken features due to obvious vibe coding errors
I replied to your comment sometime back on another thread; this method of yours is simply spec based development, there's nothing groundbreaking about it that serves as a silver bullet and people have been doing it since the advent of LLMs, to the point this is Kiro's main selling point.
Also not to shit on your project or anything, but I can whip that up in 10-15 minutes using something like Hugo/Astro, using just their bootstrapping commands.
I'd like to see if you have any examples of things that are hard to do being done by LLMs than just a SSG blog.
Also I never said "LLM coding doesn't work", read my comment. I just meant the cost of maintaining a pure vibe-coded system outweighs its' potential benefits.
I have had considerable trouble getting C99 code from any LLM that adheres to some basic safety conventions present in all my code. The biggest issue is generated functions have multiple return paths making it more difficult to visually spot cleanup errors.
My usual code has a single cleanup label that frees all resources and, if error is still set to true, cleans up the return value as well. Even when tired this convention makes it dead simple for me to spot errors.
So I've been writing most of my C projects by hand.
True, they're a great tool and shine in some areas. I especially use LLMs to work as a search engine for me before I start a new project;
I use it to critique my implementation plan, I use it to find things that already exist to avoid reinventing the wheel, and I use it as a reviewer while building out my spec/design documents. Both of which I first write by hand then use it to format, give me "ideas" which I cherry pick depending on the scope of the project. YMMV.
Also in the same vein as SQL, I've seen Gemini is pretty good at generating formulae in Google Sheets; I used it to create an optimal player rota for a 24 hr online endurance race me and my friends were participating in using parameters like player_strength, the time slots they were fine with taking up, in order to min-max fatigue and consistency.
I’m currently enjoying a competitor in our market make a wonderful mistake in this area. They want all in on vibe coding and AI and announced to their customers that they’d rewrite their 25 year old rotting platform using it in 12 months.
6 months late and I know a clean up contractor who is making bank there with no hope of recovering it apparently.
They saw it as a way out from their cheap assery, lack of talent and lowest bidding outsourcer over the years and it’s a dead end. I wonder how many other projects are in this situation.
This is what I have seen as well, enormously bloated codebases, with perhaps 5-10x as much code as there should be.
Also really whacky implementations, things like every page load, sucking up a bunch of MD files, inserting them into an SQL database, and then querying that database to render the page, so every single page load is a total reconstruction of the database.
That’s just one example of 10 I could give right now.
Vibe coding might get you a janky zero to one, but the problem is that the price that you pay for that speed, is something so tangled, so messy, that the LLMs themselves cannot even get you to “two”
I actually like LLM coding and I find it helpful in many cases, but vibe coding (meaning where people don’t really understand the implementation and just hit accept) generates huge amounts of very low quality code, which isn’t just a matter of aesthetics, but has real product quality and security implications
For almost all of my professional coding life (~25 years), I don't think I've ever seen the "code" as my product, but instead, an actual business/real-world outcome produced or improved by that code.
Even though I loved programming, the satisfaction usually came from the tools that enabled actual real-world benefit rather than coding for the sake of coding. Which is why I used to find the debates about TDD or tabs/spaces silly. Does this provide faster iteration or more stability/maintainability to solve a real world problem? if it does, great. if it doesn't, you're just wasting everyone's time and money, let's move on.
So in that vein, using things like Claude Code allow me to provide that real world value FASTER, which is ultimately what my clients appreciate. It's allowing me to spend more time being a product manager and less time fiddling around with day to day stuff. And it's not like the code is horrible or anything. I still apply strong architectural principles (code reuse, organized modules, separation of concerns, clear APIs, etc). I'm just not writing every line anymore.
I will be the first to say it's probably going to result in making me a bit more rusty in coding. But I haven't really seen that yet in the last 6 months, mostly because I haven't had to just say "ok forget it, let me just code it" more than once or twice, especially in the last 2 months since I moved over fully to Claude Code. And in those situations, I was able to take over pretty easily.
So far I'm not too worried, but it's hard to tell what the long term impacts will be.
I worry about the brain rot because, while I am not purely vibing, I am relying on Claude for most of my typing. I still routinely need to work those hard-earned brain muscles with what it produces; it's terrible at factoring things into components, I've seen it write SQL injection vulnerable code frequently, and it litters the code base with TODOs. If I were to describe it, it's extremely lazy - and you constantly have to remind it to do the work, do it correctly, and course correct it when it's making bad long term decisions.
If I end up brain rotting I am seriously concerned about the quality of code that I will be producing.
But I do agree with the core of your argument. Code is a tool, one that I don't mind replacing.
>Which is why I used to find the debates about TDD or tabs/spaces silly. Does this provide faster iteration or more stability/maintainability to solve a real world problem? if it does, great.
Because people used to get very riled up about these things. And I never understood why back then. But then again, if you see code as the final product (rather than the outcome enabled by the code), then I can understand why.
Vibe coding is making me far smarter. It took me three weeks to rewrite a PostgreSQL client for Swift, adding structured concurrency and channel binding and completely rewriting the network layer.
I knew nothing about the Postgres wire protocol or channel binding.
LLMs changed that. Now I have a good working knowledge of these things because the LLMs can explain everything at my level. It's game changing for me because there was simply no way I could have done this without LLMs teaching me the concepts I needed.
I’ve noticed the granularity/size of the output matters greatly to whether I learn anything. When generating a cohesive big thing then I can’t be arsed to go through it.
While troubleshooting a specific line or problem is likely to still yield engagement and learning.
In that respect fully agree with author that the vibe coding style (ie IDE) is particularly bad. Substantially more than chatbot style help with coding
The way I use AI for coding is that I type in the business logic in english and have AI take over the typing. Sometimes I fill in a skeleton and have AI write the boring stuff. But I agree with the author - outsource labor never knowledge. I found AI actually made me a better programmer (judging by feels not metrics) because I know have to explain my thinking which clears up the mud in my head. After which writing the code is leg work better outsourced.
The abstraction an LLM provides almost forces you to take more of a tech lead/architect approach, which I find really interesting.
Maybe we should be more agnostic to the lower level details as we trust the abstraction more (I know we're not there yet!), decades ago we needed to write ASM, there was probably a point in time when higher level languages came out and we were still double cheking the machine code, then a point came when we no longer cared or needed to care much and could focus on the higher level. I see LLMs as creeping towards this paradigm (again, not there yet).
I remember Macworld published an article in 1990 or close to it, "Does the Mac make you stupid?" claiming that Mac users using MacWrite compared to DOS users using WordPerfect made more grammar and spelling mistakes on the Mac than on DOS. Supposedly, the brain's creative side takes over the Analytical/logical side of the brain, and the GUI and mouse confuse the brain. Almost everything is GUI and mouse, except for FreeDOS, GNU/Linux command line shells, etc. Even macOS has a UNIX command line now.
Vibe coding is no different; it uses the creative side of the brain. Not stupid or braindead, just different.
It is a problem to solve, and whoever does it will be rich.
I have been seeing a lot of so-called self proclaimed vibe-coders swearing by LLMs making them 10x or 100x devs, but I've yet to see actual vibe coded projects hitting the markets.
Whenever I see said projects, on Github or non-technical friends vibe coding their next new startups asking for a code review, all I can see is boilerplate hell, 100s of lines of redundancies, problems that could've been solved using 5-6 procedures being blown out to 4-5 directories with 20-30 procedures, basically over-engineered beyond belief.
The positive part of this is people who would've never thought of programming/writing code are beginning to do so but their confidence is highly misplaced because they simply don't understand what's going on to a certain degree and don't possess the necessary knowledge nor skillset to review the generated code. A successful compile or output on the web browser is not a very good metric for projects.
Great writeup that captures the current state of affairs.
----
Tangential, but hi Nommy :) glad to see you out there, remember competing against you back in school; those web dev comps used to be the shit. Think Exun 2013 was when we went head to head making that fake currency haha.
In the past, it would have taken me at least 1-2 weeks to build this. It was actually never going to get built because of that. But vibe coding finally let us complete the project.
I'm freelancing on a project that's been mostly vibe coded by one dude, who's a good dev as far as I can tell, the product is definitely profitable, 70k+ mrr with a very small team and almost no expense, that being said for every feature I implement I find 1 to 3 broken features due to obvious vibe coding errors
I'll show my project.
Here's my LLM coding method https://www.reddit.com/r/ClaudeCode/s/Od8CsIkRVI
Here's my project: https://aretecodex.pages.dev
I've many other projects which I've built with the same method, implementing 10-15 features a day on some
Ofc i cannot show all projects here but those who think LLM coding doesn't work, well....
I replied to your comment sometime back on another thread; this method of yours is simply spec based development, there's nothing groundbreaking about it that serves as a silver bullet and people have been doing it since the advent of LLMs, to the point this is Kiro's main selling point.
Also not to shit on your project or anything, but I can whip that up in 10-15 minutes using something like Hugo/Astro, using just their bootstrapping commands.
I'd like to see if you have any examples of things that are hard to do being done by LLMs than just a SSG blog.
Also I never said "LLM coding doesn't work", read my comment. I just meant the cost of maintaining a pure vibe-coded system outweighs its' potential benefits.
Depends on the language maybe.
I have had considerable trouble getting C99 code from any LLM that adheres to some basic safety conventions present in all my code. The biggest issue is generated functions have multiple return paths making it more difficult to visually spot cleanup errors.
My usual code has a single cleanup label that frees all resources and, if error is still set to true, cleans up the return value as well. Even when tired this convention makes it dead simple for me to spot errors.
So I've been writing most of my C projects by hand.
SQL otoh, LLMs are great.
True, they're a great tool and shine in some areas. I especially use LLMs to work as a search engine for me before I start a new project; I use it to critique my implementation plan, I use it to find things that already exist to avoid reinventing the wheel, and I use it as a reviewer while building out my spec/design documents. Both of which I first write by hand then use it to format, give me "ideas" which I cherry pick depending on the scope of the project. YMMV.
Also in the same vein as SQL, I've seen Gemini is pretty good at generating formulae in Google Sheets; I used it to create an optimal player rota for a 24 hr online endurance race me and my friends were participating in using parameters like player_strength, the time slots they were fine with taking up, in order to min-max fatigue and consistency.
Pretty fun.
I’m currently enjoying a competitor in our market make a wonderful mistake in this area. They want all in on vibe coding and AI and announced to their customers that they’d rewrite their 25 year old rotting platform using it in 12 months.
6 months late and I know a clean up contractor who is making bank there with no hope of recovering it apparently.
They saw it as a way out from their cheap assery, lack of talent and lowest bidding outsourcer over the years and it’s a dead end. I wonder how many other projects are in this situation.
Selling shovels during a gold rush seems to be an enticing avenue honestly. Think I need to scope out some projects like this haha.
This is what I have seen as well, enormously bloated codebases, with perhaps 5-10x as much code as there should be.
Also really whacky implementations, things like every page load, sucking up a bunch of MD files, inserting them into an SQL database, and then querying that database to render the page, so every single page load is a total reconstruction of the database.
That’s just one example of 10 I could give right now.
Vibe coding might get you a janky zero to one, but the problem is that the price that you pay for that speed, is something so tangled, so messy, that the LLMs themselves cannot even get you to “two”
I actually like LLM coding and I find it helpful in many cases, but vibe coding (meaning where people don’t really understand the implementation and just hit accept) generates huge amounts of very low quality code, which isn’t just a matter of aesthetics, but has real product quality and security implications
For almost all of my professional coding life (~25 years), I don't think I've ever seen the "code" as my product, but instead, an actual business/real-world outcome produced or improved by that code.
Even though I loved programming, the satisfaction usually came from the tools that enabled actual real-world benefit rather than coding for the sake of coding. Which is why I used to find the debates about TDD or tabs/spaces silly. Does this provide faster iteration or more stability/maintainability to solve a real world problem? if it does, great. if it doesn't, you're just wasting everyone's time and money, let's move on.
So in that vein, using things like Claude Code allow me to provide that real world value FASTER, which is ultimately what my clients appreciate. It's allowing me to spend more time being a product manager and less time fiddling around with day to day stuff. And it's not like the code is horrible or anything. I still apply strong architectural principles (code reuse, organized modules, separation of concerns, clear APIs, etc). I'm just not writing every line anymore.
I will be the first to say it's probably going to result in making me a bit more rusty in coding. But I haven't really seen that yet in the last 6 months, mostly because I haven't had to just say "ok forget it, let me just code it" more than once or twice, especially in the last 2 months since I moved over fully to Claude Code. And in those situations, I was able to take over pretty easily.
So far I'm not too worried, but it's hard to tell what the long term impacts will be.
I worry about the brain rot because, while I am not purely vibing, I am relying on Claude for most of my typing. I still routinely need to work those hard-earned brain muscles with what it produces; it's terrible at factoring things into components, I've seen it write SQL injection vulnerable code frequently, and it litters the code base with TODOs. If I were to describe it, it's extremely lazy - and you constantly have to remind it to do the work, do it correctly, and course correct it when it's making bad long term decisions.
If I end up brain rotting I am seriously concerned about the quality of code that I will be producing.
But I do agree with the core of your argument. Code is a tool, one that I don't mind replacing.
>Which is why I used to find the debates about TDD or tabs/spaces silly. Does this provide faster iteration or more stability/maintainability to solve a real world problem? if it does, great.
I mean, yeah.
IDK why you find that silly.
Because people used to get very riled up about these things. And I never understood why back then. But then again, if you see code as the final product (rather than the outcome enabled by the code), then I can understand why.
Vibe coding is making me far smarter. It took me three weeks to rewrite a PostgreSQL client for Swift, adding structured concurrency and channel binding and completely rewriting the network layer.
I knew nothing about the Postgres wire protocol or channel binding.
LLMs changed that. Now I have a good working knowledge of these things because the LLMs can explain everything at my level. It's game changing for me because there was simply no way I could have done this without LLMs teaching me the concepts I needed.
The current version: https://github.com/willtemperley/swift-postgres-client
The original: https://github.com/codewinsdotcom/PostgresClientKit
I’ve noticed the granularity/size of the output matters greatly to whether I learn anything. When generating a cohesive big thing then I can’t be arsed to go through it.
While troubleshooting a specific line or problem is likely to still yield engagement and learning.
In that respect fully agree with author that the vibe coding style (ie IDE) is particularly bad. Substantially more than chatbot style help with coding
The way I use AI for coding is that I type in the business logic in english and have AI take over the typing. Sometimes I fill in a skeleton and have AI write the boring stuff. But I agree with the author - outsource labor never knowledge. I found AI actually made me a better programmer (judging by feels not metrics) because I know have to explain my thinking which clears up the mud in my head. After which writing the code is leg work better outsourced.
I'm sure they said the same thing when electronic calculators were invented.
Would you mind explaining how using a calculator to crunch numbers is the same things as asking an LLM to build your application for you?
Before: Do the math by hand, physical tools, shapes, geometry.
After: Punch it into a calculator and skip all the intermediate steps.
Writes a blog titled: "Calculators is making braindead physicists, engineers, and anyone who needs to use math".
Braindead? Or better architects of systems?
The abstraction an LLM provides almost forces you to take more of a tech lead/architect approach, which I find really interesting.
Maybe we should be more agnostic to the lower level details as we trust the abstraction more (I know we're not there yet!), decades ago we needed to write ASM, there was probably a point in time when higher level languages came out and we were still double cheking the machine code, then a point came when we no longer cared or needed to care much and could focus on the higher level. I see LLMs as creeping towards this paradigm (again, not there yet).
I’m old enough to remember stories from people older than me about developers bemoaning GUIs (“point and drool”), IDEs, and high level languages.
As with all past dev tools shitty developers will generate shitty code with AI and good developers will learn how to use it well.
I remember Macworld published an article in 1990 or close to it, "Does the Mac make you stupid?" claiming that Mac users using MacWrite compared to DOS users using WordPerfect made more grammar and spelling mistakes on the Mac than on DOS. Supposedly, the brain's creative side takes over the Analytical/logical side of the brain, and the GUI and mouse confuse the brain. Almost everything is GUI and mouse, except for FreeDOS, GNU/Linux command line shells, etc. Even macOS has a UNIX command line now.
Vibe coding is no different; it uses the creative side of the brain. Not stupid or braindead, just different.
It is a problem to solve, and whoever does it will be rich.
Think different.
"Write creative, proofread analytical"?