I recently set up a local llm to see what the fuss is about and other than the few ringer solutions my experience is as you described. 2min promping, 5min waiting, 3hrs debugging or just doing it myself.
I am very likely doing it wrong, and it does speed up some aspects, but I wouldn't say I trust llm code any more than my own. Until it runs and throws an error, the llm is 100% confident that it has written perfect code.
So I asked Claude to first figure out a way to instrument GPU particle code so it could itself check his solutions. After that I left the agent running for 3 hours and it came back with a solution (continuous collision detection) and a bug fix (particles get their velocity applied an extra frame after colliding). I'm sure someone would find something to complain about the code (which is why I haven't upstreamed it) but it looks visually perfect and I had plan to fork the engine for my project anyway
Epiq solves this with an architecture that supports workflow auditing, allowing you to time-travel state in a filtered view to reconstruct what happened, when, by who, and where intent started drifting, while also allowing you to correlate the evolution of the board with the corresponding commits.
You will get a solution that works with a proper workflow, but you won't get one that scales or would be truly maintainable. Which is also what you get with random midwit drive-by contributors, but faster. I'll give it that.
But more importantly: isn't what you call "intent" just a series of optimization goals? You want your code to satisfy the constraint of being correct™, while also maximizing various other goals like being maintainable, easy to understand, having few lines of code, as little tight coupling as possible, etc. Goals that often conflict, but when given two implementations you could likely tell which hits the better tradeoff (in your engineering experience)
Those are all things that theoretically - with a tight enough specification and enough compute - a constraint solver could solve. No human intent necessary.
The issue is more that we can't fully specify all those side goals, and even if we could the LLM would struggle following them. A classic paperclip maximizer problem (where nobody told the paperclip maximizer to keep the planet inhabitable and all the other side conditions we implicitly assume)
The good thing is that you don't have to agree with that, as the fundamental technical reality does it for you. LLMs do work like that. They are just statistics and probabilities.
If can put properly engineered intent in the prompt that is verifiable, it works wonders. Anything that can defaults to the llm doing its way, you're right, it just can't converge to good, not with proper constraints.
So I wonder whether, in your experience, the results you've seen, could have improved by providing sufficient context? - or what context was given.
I.e. if you have the agent that same context, as one of your colleagues would have/require to solve a problem.
You've missed my point. I didn't dismiss agents. I did dismiss the industry.
I don't need to add more context to a statement that operates on a layer above where context injection would influence it. It is a conceptual impossibility. Not a technical roadblock.
Holy crap. Does your home have mirrors?
I always enjoyed writing code and I am very good at writing very performant and elegant code, but it would sometimes come at the detriment of focusing on the code and not the design.
I look at my colleagues' screens and they're prompting shit like 'restart this program' and 'is [service] running correctly'. I have below average prompt frequency because I know crazy shit like #!/bin/bash and ps aux. It's so goddamn insane.
And to top it all off, my token count is above the average, it's just the prompt count that is low. Got questioned about it earlier this week.
I think AI made everyone so dumb that I'm a 10x engineer now.
I couldn't agree more. These AI users go on and on about "tooling" but would never take a week to learn how to use vim. These people are addicts. Don't take their words at face value. They are dependent on AI code generation.
AI chatbots, like social media, condition you to become addicted to short-timescale intermittent reinforcement.
You need to break out of the dopamine spell and do something hard.
It used to be that one person had one to three codebases they knew intensely at my company. If you needed a bug in codebase X fixed, person Y was the one to do it and if they aren't available, person Z can do it, just not as quickly.
Now every person on my team has to handle tickets for every single codebase. There are about two dozen different large codebases involved here.
It's a ludicrous antipattern because person Y still needs to review the PR that person A generated for codebase X, and it will take them about as much time to wrangle the 2000 line PR (oh boy do LLMs love their mocks for unit tests) as it would have been for them to do the 50 line code change.
On top of that, it has "allowed" us to add feature after feature onto codebases not designed for them without refactoring. Is it good that this Flask API went from a purpose built service that interacted with the data analytics for product A stored in database X, and now our sales guys can sell product B, C, and D stored in database X? Uh, I'm sure it's great for them. Oh, and now it all can be stored in database X, Y, or Z depending on what the customer wants or what sales promised them. Great. Now I'm looking at a Flask app.py that's 12,000 lines of repeated code.
It has allowed poor designs to still produce working code. For a while. We seem to be getting a lot of bugs lately that look really bad to customers because it's for really simple shit. And I can't help but notice that happening to all the various products and sites I use too...
Do you have any users? Is the software important? I'd find a new job if I were you
> On top of that, it has "allowed" us to add feature after feature onto codebases not designed for them without refactoring. Is it good that this Flask API went from a purpose built service that interacted with the data analytics for product A stored in database X, and now our sales guys can sell product B, C, and D stored in database X? Uh, I'm sure it's great for them. Oh, and now it all can be stored in database X, Y, or Z depending on what the customer wants or what sales promised them. Great. Now I'm looking at a Flask app.py that's 12,000 lines of repeated code.
This is terrifying to me. I'm sorry.
But these days, AI just generates code following the existing patterns of the codebase. In the past, staring at a blank screen meant going through a checklist of things to design—starting from policies and writing everything down step by step. Now, I just ask AI and it gives me a template—which is great. Then if the AI makes a mistake, I fix it manually.
Of course, I still hand-code sometimes—but only in the areas I enjoy. Most of the time, I use AI coding. Both are fun, and they complement each other in interesting ways. Doing both together is actually enjoyable.
Is this sarcasm?
Even on HN, people don't comment purely out of 'rationality.'
I think AI generates well patterned code. Essentially, it handles a lot of situations with standardized code. But recognizing those patterns and knowing how to implement them are different things.
In programming, there are people who know how to implement something but can't explain the contract or the model behind it. For those people, AI might not be very useful, or they might be one of the rare few who write code far better than AI. Either way, the fact that an AI beat a top competitive programmer is enough to say it performs better than most people on HN. There's no point in arguing with them.
It's not that they're necessarily wrong. It's that they tend to generalize their own personal workflows.
AI can't do software engineering, but it can code well. Software engineering is the problem of transforming a complex open system into a closed one, taking a PM's requirements and building a single system out of them. AI can't do that. Why? Because AI can't adjust emphasis the way humans do. The design for frequently accessed parts and rarely accessed parts should be different, but AI treats everything uniformly, which makes it harder to modify later.
On the other hand, once a problem is closed and well defined, AI does much better than most people. It's logical and doesn't make the kind of leaps humans do, at least with frontier models. So there's no point in arguing with them at all.
Their experiences are based on their own workflows, so their perceptions naturally differ. And it's hard to tell whether they're saying it's bad because they truly understand it well, or because they don't understand it at all.
I'm not saying they should live in an echo chamber, but there's no reason to argue with them. It's better to trust statistical facts.
I could see it being true in a very regimented design, but I'm still skeptical, I'd like to see details of that design, and I question whether very strict adherence to design patterns limits the ability of the LLM to generate useful features.
For hobby projects or things I start casually, I usually do not think about errors and such at all. When it is a tool I want to build or need for myself, I really do not care about that part.
In my case, I do not contribute to open source at all. Mostly, I deliver code for factory systems or specific companies, and usually, there are strict enterprise requirements. (To be precise, there is always that mandatory code the lead developer on their end dictates, right?) That kind of code is mostly no fun, but it has to meet their requirements and often clashes with my own style. Having AI write that code for me is a huge relief.
In that sense, I think it is just a difference in personality and preferences. I originally became a programmer because I wanted to make games. I started programming because I found it fascinating to see things drawn and displayed on the screen. Becoming a programmer was all because making Flash games was so much fun... So in that regard, for me, writing code is just 'drawing what I want on the screen', which is why I guess I do not mind if the code is written by AI.
When I contribute to other people's projects, I do not use AI for anything other than English translation, but for my own projects, I have no hesitation.
Is this really just a difference in inclination? It is not that I did not enjoy writing code, but rather that seeing what I want rendered on the screen brings me more joy.
When the concept of 'vibe coding' first came out, I really hated it (since my knowledge was earned over 4 to 5 years of getting scolded by lead developers as a subcontractor and factory software provider). But thinking about it, what I really wanted to do as a developer was just to build the worlds I envisioned, so I decided not to let it bother me too much.
We talk often here on HN, and I really enjoy debating with you. I learn a lot from you.Mr."skydhash", I actually remember you quite often, and I even steal a few keywords from your posts sometimes. Because we have different tendencies, we occasionally clash, but having these conversations is exactly what makes it enjoyable.
Thank you for always replying. Have a great day, and I hope this does not offend you in any way.
I've been tinkering with things since a very young age, started learning about computers in middle school and really started with programming in college (I had the basics since high school, but I was interested more in 3D modeling). So writing code is more like tinkering for me and I don't really particularly care about the result other than making it happen (correctly). Once it's done, it's no longer a subject of intellectual interest.
So the joy of creating a program is in the creation itself. Once it's done I merely use it (or maintain it if it's part of the work).
I don't condemn AI use, even when doing vibe coding. My main issue is with the hypers stating that it's ok to lower a codebase quality or encouraging recklessness (and the dubious anecdotes) in a collaborative settings. If you can ensure quality and collaborate easily with your colleagues, go ahead. If you can't, then you shouldn't send PRs around.
> Thank you for always replying. Have a great day, and I hope this does not offend you in any way.
Have a great day too. I always appreciate the different point of views on a subject. It's a big world and everyone has their own perspectives.
I think this is exactly why our differences emerge.
I rarely collaborate with colleagues. In contract delivery work, that is simply how things operate. Usually, after the architecture is divided into modules, I take on the role of implementing one entire area from start to finish. Because of this, I actually have almost no experience with direct code level collaboration.
While multiple developers typically share a single code base and constantly exchange PRs, I take full responsibility for the internal implementation within the designed I/O interfaces, which seems to be where our divergence stems from.
When the modules are finally integrated, it only becomes a matter of accountability. In that sense, aside from my own website, I might not actually be doing any sustainable development. To be honest, as you know if you try AI vibe coding, the AI's abstraction and my abstraction are different. Because I am not used to its structure, it is not easy for me to manually fix the code generated by AI. Even if I do fix it, I mostly just tweak the surface level. In that regard, I completely agree that there are valid concerns regarding long term maintenance. However, since meeting strict deadlines and ensuring the required behavior are more important to me than long term maintainability, I tend to be more lenient toward AI generation.
It seems we reached different conclusions because we operate in completely different domains. It is always fascinating to see how perspectives differ depending on the field when having these conversations. Have a nice day.