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.
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 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.
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’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
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 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).
Most likely the role of "programmer" will go away as we conventionally know Anyways, we have evolved a lot like from assembly language to using npm packages and we are going to see the next evolution.
On inability to solve hard problems, I think we are going to tackle even harder problems in future with AI in our side, just like corporations manage to handle more complex problems than an individual.
10 comments
[ 3.1 ms ] story [ 27.3 ms ] threadVibe 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.
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.
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.
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
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 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
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).
On inability to solve hard problems, I think we are going to tackle even harder problems in future with AI in our side, just like corporations manage to handle more complex problems than an individual.