Hacker News new | ask | show | jobs
by throwaway6977 8 days ago
Disagree with so many assertions put forth here. You don't _have_ to turn you brain off when coding with an LLM. It's not some intelligence dementor. If your brain turned off while you were vibe coding thats honestly just a you problem and I wish everyone would stop boogeymanning an obvious improvement in the ability to better yourself just because a lot of people don't choose the betterment route.

I've never been more informed or understood more about my code, pipelines, and stack than now- and its 100% due to AI reasoning about my projects, and me making an effort to learn.

10 comments

The people struggling with this most are also the ones that never got to grips with human delegation either.

At least in my circle it's the classic leads/seniors (that predate the scrum "everyone's the same" thing) that are managing to get the most real mileage out of this.

It's clear to me now that the lack of benchmarks for competence in this space means everyone thinks they're geniuses who don't need a better process, because apparently their workflow "works for them."

Not sure what to say to any of this, because it's not even really related to the article except to say the assumption is supposedly completely wrong. That doesn't make sense to me, because as soon as AWS or something important goes down everyone immediately blames vibe coding.

So which is it? Is process completely solved here ("just get gud"), or is coding with agents causing problems?

But when you lead there’s a level of trust in the people who are going to implement. You may still have a high level view of what’s going on, but that’s different from sweating the details. It also is different from bottoms up building those details where consequences become clear in thought.

I’ve noticed the pressure to keep velocity and move forward means I’m less sure of those details compared to before. LLMs are also inconsistent in the work they do - some of it is brilliant, other parts are idiotic. It’s totally different than what you’d get when leading humans.

> But when you lead there’s a level of trust in the people who are going to implement.

"Trust but verify". This is why you have QA processes, testing, checklists etc. All the sanity checks that got thrown away in the web tech rush pre-AI.

Sure, but that doesn’t mean you understand the details of implementation.
You state this as if the only way you personally would manage this would be to craft each line yourself after deep contemplation, which may be true for you.

But it's not a universal at all. You have to apply engineering thinking to human and LLM organization, and part of the damage caused by scrum has been to ignore this entirely. How can you produce a system where you can bound the output to be what is understood? It must be possible because managers all over the earth do it all the time.

> You don't _have_ to turn you brain off when coding with an LLM. It's not some intelligence dementor. If your brain turned off while you were vibe coding

You have too, because that's the definition of vibe coding. If you use an LLM to assist you, but still keep your brain on, that's not vibe coding.

> because that's the definition of vibe coding.

That's _your_ definition of vibe coding.

> Karpathy described it as a form of coding where you "fully give in to the vibes, embrace exponentials, and forget that the code even exists"

If that's not "turning your brain off", what is?

That's the definition I am aware of, yes. It's also in the term, that you let a vibe (a force coming from the outside) decide what your work lead to, as opposed as to deciding where it should arrive at and leading into that direction.
What is your definition? Is there any difference between AI assisted development and vibe coding to you?
Feels like a No True Scotsman fallacy.
There's multiple ways to program using LLMs, so using different words for different styles is a useful distinction.

Of course, you absolutely can build a No True Scotsman argument on top of that distinction, but I don't think that's what GP was doing.

How so?

The property Scotsman is existing a priori and then a causality to behaviour is assumed. But here the term is defined by behaviour.

By that logic every appeal to the truth is a No True Scotsman fallacy.
I agree. It’s actually more exhausting in some ways.
> I've never been more informed or understood more about my code, pipelines, and stack than now...

Would you mind clarifying if this includes code, pipelines, stacks, etc... on which many other people are simultaneously working on in a group setting? Or are these all things that you alone are working on as an individual?

My experience has been that AI makes me tremendously more productive as an individual working alone. Put 20 people (all empowered by AI) on a project however, and it quickly falls to shit.

I've running local models; before having a coding harness, i'd basically do the same misteps the AI does; add the same logging lines, and trace with the errors are, etc. This was exhausting so no docs and tests were rarely if ever created.

Now, to actually get the AI to do anything complex, it's basically required to both write docs and write tests because solidifying behavior only works when there's AI tests it can run to verify some behavior I've verified once.

Then there's things I'm never going to remember the AI had to do; recenly it was "blitting" to /dev/fb0 and it was trying to remember which encoding was which and what order, etc. Things I simply do not want to have to get a detail account of nor is it something I need to remember above the statement "some video drivers have their own RGB, BGR encoding standards" and "an image has a bit depth and size" etc.

These things I would have learned doing it myself, but I would also had to learn where it all breaks and how to interoperate between pillow and video drivers, etc. If I ever do this again, i'll still point the LLM at it with or without this library, and it'll do the same abstract reasoning.

So my knowledge is compact because I don't need to know the implementation for this video display code; I just need the tests and docs and I'll point the LLM at it if I need to extend it.

I have not worked on a project with 20 AI-assisted contributors. I have worked on a team with 4. While smaller, I can already see that the code churn, and conflict resolution is more a kin to a larger team. However, we also have been introspective about how we can interoperate with these new disruptive tools -- ritualizing the LLM's ability to create and maintain documentation and perform code reviews has been indispensable. Perhaps 20 on a project is unsustainable, and even unnecessary.
This is like saying if you stop exercising just because you are driving everywhere then it is a you problem. On an individual level it may be useful advice, but on a societal level we see how it plays out — rising obesity rates and children shut in bedrooms with their screens. It turns out if you stop getting exercise from your daily routines, many people will just not get any exercise at all!

Of course you can make a conscious effort to keep using your brain while you vibe code. But if you have to consciously exercise your brain then it means the people, who are lazy on average, will just not do that and let their thinking deteriorate instead. We already see what happens if we let students "learn with AI." It turned out they would rather just let AI do their homework than become more informed about their course material. I don't see how software engineering will fair any better.

The thing is out of the bottle, can't stop it. I am neither pro or against, but it's here. Ducking uppercuts and rope-a-dope-ing is defeatist. Software engineering has been romanticized, it's not glamorous anymore it's not Halt & Catch Fire days. There is nothing new anymore, just a quicker way to CRUD. The next is elsewhere else.

Everything is happening quicker and we see it in real time.

You're not wrong, but there are levels to understanding.

For example, when studying maths or physics, it is very common to feel like you've understood everything, until you get to the exercises, and need to apply that understanding, and it's only then that you consolidate the knowledge and begin to truly understand in depth.

I like AI enhanced coding, but I do sometimes worry that we're not getting enough of that depth anymore.

Even at a basic level when asking the AI how to do something in a new language, sure it saves time, but I no longer have to manually scan documentation and get the incidental discovery of "oh, that function also exists, cool" which then sticks in my memory for later.

It's like using SparkNotes for classic novels, there's value in the friction of having to wrestle with the source material yourself. Whether that's more valuable than what the AI brings to the table I'm not sure yet.

You're technically right on your first point, but I think this is missing a broader issue... this entire technology incentivises its users to put as little effort (and cognitive effort, at that -- so, thought) as possible to go from a vague idea of something they want to a somewhat-working thing. That's how it's being sold, that's how it's being marketed, and that's how it's arguably being built from an interface point-of-view.

Is it possible to use it in a more involved way? Certainly. I try to do that. But it's challenging, because ultimately even taking a more collaborative approach, this thing puts out a lot of slop, and then I have to deal with going over the output and just spending most of my day in code review mode vs an author that doesn't ever learn from feedback.

The most frustrating thing for me beyond the feedback black hole is that when things do inevitably go wrong, trying to point out the concrete issue and instructing the LLM to do better around it is challenging; a lot of the time directives (even those in a global CLAUDE.md!) are just ignored either outright or as the context grows, or fail to be passed down to subagents; negative prompts are discouraged because of the pink elephant effect, so I have to jump through hoops to try and frame a "never do $thing" constraint as an affirmative prompt (which is then often ignored). That aside, english is a godawful language for specifying things compared to programming languages. It's just a really frustrating experience overall.

I agree, so many things to disagree in the article.

However, I think you are missing that people are lazy. We all are to some extent, some more than others. Putting effort in doing something, well, takes effort. In my experience most people given the opportunity to do a mediocre job turning their brain off or an excellent job at the expense of great brain effort, they would take the former. And this is happening left, right and center now with LLMs.

And the skill atrophy is real, or at least, I am witnessing it real time on a bunch of coworkers.

I agree with you, you don't HAVE to turn your brain off and produce slop, but people do. And at scale, it diminishes greatly the impact of the self-improvement that you, or a minimal subset of developers are doing.

> If your brain turned off while you were vibe coding thats honestly just a you problem

No. There are multiple studies showing that skills atrophy is an actual thing. If your brain does not turn off while you are vibe-coding, keep it up and it soon will.

I never said you have to turn your brain off to feel the limitations.

Actually, for more complex work I think it's pretty common to spend a long time crafting some elaborate prompt, and then arguing with the agent for 10-20 turns, getting a "passable" plan, accepting it then arguing with the agent every step of the way because it's doing it wrong. It's incredibly frustrating, even with models like Fable.

Even after that, I'll often find out during later sessions that some feature that was supposed to be deprecated was actually silently left in "because I wasn't sure you wanted it completely gone" or something.

I agree that exploring a codebase through prompts is actually quite nice! But the mental model you get from that is almost always warped - you have to supplement that with reading the code, where 9 times out of 10 you will find some kind of discrepancy that you're unhappy with.

Why not optimize that process?

Your experience is night-and-day from mine. Both myself and the AI correct and remove each other's gaps in understanding. There is never what I would call arguing. Disagreements are resolved by back and forth discussion and reaching consensus.
This sounds like not the best workflow. If your prompt is that long, you may not be spending your time very efficiently.

Splitting problems into smaller problems is huge. You want a concrete idea that you still own. Only tell an agent to do something you know it can nail - this will likely be one subsystem. The subsystems and how they talk is on you.

I agree, I tend to give a high-level concept for what I want done first, and then break it into smaller tasks. That said, there's almost always a misunderstanding within the smaller tasks anyway, which I have to test to find out about, then ask the agent to fix.
This does not match my experience at all. I use Fable as an orchestrator, and describe the end goal I want to achieve. It investigates the current state of affairs, and determines the smaller work units needed. We discuss each one, and eventually ticket it out in Linear. By that point, each ticket has all the relevant details, scope, decisions and acceptance criteria.

Then I have it write prompts for implementation agents based on the ticket. These agents are almost always Opus, except for the most complex issues. The prompts contain broader contextual details (like what other tickets might be worked on in parallel, the boundaries, operational/environment constraints, and so on). Each implementation agent starts in plan mode and uses a skill I created called "super plan". Super plan has the agent write the plan and then have it adversarially reviewed by three subagents, and hardened based on their feedback. I then read that plan and greelight it. Once the agent is done with the implementation, it then uses three subagents to do a code review of different aspects (like test quality, regression risk, security, etc.) and incorporate the changes. Then it does a live QA in the browser (if there are UI changes) to make sure the feature has good UX and the UI works as expected at different breakpoints and so on.

Then the Fable orchestrator does one last code review and gives a ship/no-ship verdict, along with a 1-10 rating.

This works incredibly well, and is almost completely hands off. I make all the major decisions and review the results. I never find myself "arguing" with the orchestrator. I might sometimes get frustrated at the implementation agent but that's mostly for UI fidelity issues and honestly pretty rare these days.

So like I get what you're saying but an LLM helping you code is just a personal search engine/autocomplete.

"Vibe coding" to me and others is just going "claude program me a wife that didn't leave with the kids and make no mistakes" and just rawdogging the output.

but that's just me.