Vibe Coding Is Making Braindead Coders
Key topics
The article 'Vibe Coding Is Making Braindead Coders' sparks a discussion on the impact of AI-assisted coding on programmer skills and productivity, with some commenters arguing it enhances their abilities while others worry about the loss of fundamental coding knowledge.
Snapshot generated from the HN discussion
Discussion Activity
Very active discussionFirst comment
15m
Peak period
25
0-12h
Avg / period
8
Based on 40 loaded comments
Key moments
- 01Story posted
Sep 14, 2025 at 10:24 PM EDT
4 months ago
Step 01 - 02First comment
Sep 14, 2025 at 10:39 PM EDT
15m after posting
Step 02 - 03Peak activity
25 comments in 0-12h
Hottest window of the conversation
Step 03 - 04Latest activity
Sep 19, 2025 at 5:51 PM EDT
4 months ago
Step 04
Generating AI Summary...
Analyzing up to 500 comments to identify key contributors and discussion patterns
Want the full context?
Jump to the original sources
Read the primary article or dive into the live Hacker News thread when you're ready.
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.
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 mean, yeah.
IDK why you find that silly.
Cant think why, but ok.
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.
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.
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.
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.
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.
If the most critical part is provided by LLM how is least critical part written by you proof of LLM being inferior at writing code?
> If the most critical part is provided by LLM how is least critical part written by you proof of LLM being inferior at writing code?
That quote you quoted seems to say that he uses it to reformat his spec/design documents. Nothing about code.
He further goes on to say he cherry picks the best of the spec/design elements from that documents.
How did you get "It writes my code" from the paragraph you quoted?
Isn't that what i am doing here as well? https://www.reddit.com/r/ClaudeCode/s/Od8CsIkRVI
Approving plan, reviewing after LLM has done its job?
How does writing a few lines manually change anything?
I do not agree with his criticism of vibe coding at all. We don't even have access to any code he has written, so i am not knee on accepting his code superiority over what LLM creates.
On the other hand i am almost willing to bet, he writes worst code I do by just prompting LLM
My point being planning is the most critical part, not actual code writing part (that can be done by dumb model)
I'm still trying to figure out where he says the LLM wrote any code. You're still working on the assumption that he said the LLM wrote code, and he changed a few lines. To me it reads like, I rubber duck specs/plans with the LLM, and then I write the code).
It doesn't seem ambiguous to me
> On the other hand i am almost willing to bet, he writes worst code I do by just prompting LLM
I dunno; the LLM, by definition alone, is going to produce median quality code.
After all, this thread was started by me complaining that it's been very difficult for me to get any LLM, even SOTA ones, to produce C code in a convention that minimises resource errors (use-after-free, memleaks, etc).
It does it for one function. Then for the next one I have to remind it again that it must use single cleanup point.
Putting it in the prompt works sometimes, not all the time, but for it to work then all my prompts have a code example of how to structure C code to ensure a single cleanup point which returns the returned value (which could or could not be an error).
So, no, I've not been getting spectacular results using CC and similar tools for C. Maybe it works better for C++?
What I have been getting good results on is SQL (have to specify the variant, though).
I sometimes think that the LLM cannot tell human-readable code from unreadable messes; hence I get these almost comically shortened C snippets sometimes when (for example) a static lookup table, though longer, would be more readable.
I think the misunderstanding here is what metric we are using for "Quality". I am using "Is this the most readable way to solve the problem?"
Just this morning I tried to get it to write code to dispatch different serialisation functions based on a provider, it gave me a large-LoC monster of structs with vtables for dispatch[1], and some functions to perform the initialisation, then more functions for the dispatching properly.
I asked it to make it simpler; it give me a simpler, but very long, jump table using switch/case on the `type` field in the `struct`. Easier, but still it means that an unintended fallthrough, or a missing `case` is a bug I have to look for when visually inspecting the code for correctness.
I gave up and wrote this (some details changed), which is much easier for me to visually verify that no cases have been missed, no accidental fallthrough, etc:
And now there is not `switch` statement to verify (it's in the struct, one on a line, easier to read), there's no confusion via multiple indirect derefences to a vtable, etc.So if your metric for quality is "it works and has no bugs", then sure - you would feel that the LLM is providing high-quality code.
If your metric is "How easy is this to code-review, when it's midnight and I have been working all day long at my day job?" then things look a little different.
===========================
[1] Obviously it trained on OO designed C code, like the Linux kernel
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....
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.
You just looked at wiki part, not the tools section it seems: https://aretecodex.pages.dev/tools/
sure you may be able to clone but you lack domain knowledge to actually make these.
And here it clone claude code cli, https://www.reddit.com/r/ClaudeCode/comments/1ngmyqq/i_ran_c...
Show me your projects.
sure you may be able to clone but you lack domain knowledge to actually make these.
And here it clone claude code cli, https://www.reddit.com/r/ClaudeCode/comments/1ngmyqq/i_ran_c...
what do you want me to build? because these are what 90% softare project involve.
Again, none of what you've built is complicated in the least. Your domain knowledge may be commendable, sure, but that's got nothing to do with this discussion.
> And here it clone claude code cli
This is where I just gave up trying to understand your thought process, and after looking deeper into your Reddit and HN history you just seem to be a mindless shill for these products and your thought process instead of being able to critically analyze your approach.
Irrelevant to discussion other than you trying to stroke your own ego.
>Again, none of what you've built is complicated in the least.
Making simple things complicated isn't what i am trying to achieve.
>This is where I just gave up trying to understand your thought process, and after looking deeper into your Reddit and HN history
I don't have a single product i am shilling anywhere. I am only showing my workflow.
I doubt you've ever built anything but that's fine. Lot of people who cannot show a single project they've built but will criticize other product ad infinitum.
So far you've added nothing to discussion other than claiming to be a better programmer with no proof.
None of the programs i posted on my reddit are available for public use, they are demos.
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
I've seen the same thing happen when you outsource to third world countries. So which one is worst? LLM can be prompted to write bloated codebase, it can be prompted to write lean one. It depends on skill set of the guy driving LLM.
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.
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".
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
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.
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.
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).