Hacker News new | ask | show | jobs
by LauraMedia 437 days ago
The problem with this little post is, that vibe coding just is not a "better" way to code. It strips development of something from all the fun developing, from circling around an idea, from figuring out something with your own brain, from trying and testing new stuff, from actually working as a developer...

If you genuinely "vibe-code 24/7", you don't develop software, you are translating business logic rules to a set of long explained commands and put it in a black box and hope it works...

Integrating AI in a meaningful way while keeping the same consistency and maintainability of a software project is hard, just throwing EVERYTHING at an LLM has not really worked out in the last few months to a year yet...

3 comments

Or you are like me and you love having ideas, you love solving business and technical problems but you don't like the "execution" part.

Because from my experiment at "vibe coding", LLMs for code are good at following the rules, not at being intelligent. They are especially bad at keeping the "big picture" in their context.

In fact you can talk to your IA at the level of abstraction you want :

1 - You can ask it to create an entire app and, for sure, that'll be a black box full of unknown bugs.

2 - Or you can just give it precise instructions : "create the model for x entity with exactly those characteristics". "Now let's create the controller for the API but pay attention to this or that".

If you are good at describing things, LLMs are excellent at doing what you are already good at. They'll write exactly the code you would have wrote, they'll take care of the boilerplate, they'll self correct if needed except they'll do it in seconds while it would have took you hours between just typing the whole thing, debugging your own mistakes, going back and forth files, refactoring your implementation ...

Sure it takes more time than just asking "make me a snake game in pygame" but it also takes so much less time than writing it yourself.

Also, but that's only my personal experience, working with LLMs, even with a lot of iterations helps me a lot with staying in flow.

That's literally what has been happening forever though. Think how complex the abstractions are from something like SQL to the actual CPU instructions that are being executed on a modern OS.

The thing I'm most excited about with 'vibe coding' isn't really existing software developers making things. It's people with deep domain knowledge who can't program can now build stuff. It's more of an excel replacement imo as it gets into the mainstream.

I am sure that most LLM generated software projects are more easily understood at a code level than the average excel 'megasheet' created by this kind of person, and certainly will be less brittle to a certain degree.

I think the problem with vibe coding though is it’s not bi-directional, like if you have deep domain knowledge, unless you know how to code, how do you know that the code it just created actually does what you want it to, especially as it gets more complex and your new code changes old code. You could ask, but the devil is often in the details, especially if your domain is highly technical.
> how do you know that the code it just created actually does what you want it to

I believe that problem can be solved, and will be with the correct new tools.

I think a new type of "low-code" programming language will evolve tailored for domain experts that don't know coding, but understand how to guide an LLM.

The development environment should be a crossover between a project-management tool (Jira or Azure devops style) with literate programming: something that allows organising all the separate parts that compose the program in a way understandable by the human and the AI bot.

Online notebooks are a good first step in that direction, in special the "reactive" kind where the runtime logic does not depend on the order you change things in the page.

Except vibe coding doesn’t work for non-programmers except in the hype propaganda. In reality these tools are only powerful in the hands of real programmers who are able to understand what is being produced and can adapt and maintain it.
To me, it's always wild to see people trying to prove this is "the future" and "no one will ever code again". And then they try to prove it by building a react todo app, something that has been done millions of times and is really just an advanced hello world project...

I've had great success using AI for some tough things, but not on an entire foreign codebase that requires domain knowledge, no matter how constrained my prompts are. As soon as your use-case goes above the average "building a small tool and make it a $4.99 saas startup", AI really only helps you with the exact code to transfer your already pre-planned pseudo-code/behavior.

And even then, you need the knowledge to understand that what the AI merged out of the millions of StackOverflow answers is actually outdated or a hallucinated API function that never existed.

I did this analogy in the past and I was way downvoted. Just for clarification, I use vibe-coding a lot in side projects where I don't know if I am going to release it at all, or when I know that a mistake in the code won't crash a business.

However, when I do vibe-coding, I feel like a PM asking a remote team to do code and I get back the response asap. It could be good or it could be bad, but if I don't check it, I am just a PM trusting 100% what my engineer (team) did. How did this work in reality before IA? Well, the engineers had to have some kind of responsability and testing, and assuring that what they did was OK. Now that part is completely "disabled", and the PM Is responsable for the tech aspect as well, without the knowledge (and I am avoiding all the deploy / infra perspective).

I may also just misunderstand the term itself. From what I've seen, "vibe coding" is used as a term for someone who does not want to go into the details, who does not want to check or adapt the code, who just wants to explain their idea to an LLM and expect a fully built feature, without doing any of the development themselves.

I myself use AI all the time, for smaller things, for more math-heavy things, for decisions I already thought about but want to check with best-practices (after all, LLMs are trained with the "hive mind" thoughts of programming). I use it as a companion, a tool akin to JetBrains refactor tools, something I can drop on a specific function to enhance my own work.