this post was submitted on 05 Aug 2026
39 points (100.0% liked)
Programming
28084 readers
379 users here now
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Rules
- Follow the programming.dev instance rules
- Keep content related to programming in some way
- If you're posting long videos try to add in some form of tldr for those who don't want to watch videos
Wormhole
Follow the wormhole through a path of communities !webdev@programming.dev
founded 3 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Yes always. To paraphrase Feynmann: What you did not create, you have not understood.
Yes
Yes
No.
If you consider writing your own code "the hard way", then your goal should be becoming better at prototyping yourself. It's a skill that you need to requires purposeful effort to strengthen. But once you have it, you get both the understanding behind the code and the prototype.
So just because I didn't write a book means I could never understand it from reading it? Are editors useless in the world of book publishing? Then what is the point of code review?
You act as if my LLM-assisted prototyping implies I made no decisions and didn't read any code. That's obviously a terrible way to use LLMs.
Reading a book does not give you the same knowledge as the author.
The author may have had to choose between two different pieces of exclusive information to add to the book, they may have written information then had to remove it for some reason, or may have had to exclude certain information it altogether.
You would never know if they did, or the reasons behind why they did what they did if you only read the book.
The difference between your book analogy and human code review is you can actually talk with the author in a bi-directional channel to gain a deeper understanding of what they did, and why they did it.
Book editors and human code reviewers are the same in that respect, they develop the deeper understanding that simply reading does not provide.
When it comes to LLMs: that bi-directional channel doesn't exist, only the illusion of one.
LLMs don't have the capacity to think things through, their reasoning is actually post-hoc justifications for their previous output, not a result of a priori thought. There is no actual understanding that could be gleaned because it literally doesn't exist.
To train an LLM you need more data and feedback than can be manually tagged, so tags and feedback are generated automatically. This means that they are not being trained against ground truths, they're being trained against a confidence checker. To an LLM, there is literally no difference between a correct answer and a confident answer.
That's why they seem so stupid when they give an answer that is obviously incorrect.
They are confidence machines, they produce confident sounding answers.
The problem is that human psychology is wired not to be discern the difference when the output's falseness isn't immediately obvious.
Again, no one suggested that I would prototype with the LLM and then completely trust what it tells me about the code and what it learned from writing it. That is stupid.
You get the LLM to write code quickly and then you review it and perform experiments manually.
I think this is where the issue is, the word "review".
Reviewing comes in two different types: non-trivial reviews and trivial reviews.
Non-trivial change example: Create a presentation where the user flow follows a flow chart.
Someone could go to an LLM, prompt it with "create a presentation that follows this flow chart" followed by the mermaid syntax of the flowchart.
The LLM will give you back an array of slides where certain functions/actions/triggers/etc... navigates to a different slide based on its index within the array.
But if you ask a person to do it, they might sit there for a while, try a few different attempts to understand the problem better, then come back to you with some typed generics and a map/dictionary/object/associative-array/etc... with slides in it, and functions/actions/triggers/etc... that navigate to a flow chart by a slide's id.
Two different bits of code to review from two different sources.
You can choose to do one of the following:
When asking the LLM a question about the part that you didn't understand, it will either give you:
When asking the person why they did it, they'll tell you they tried a few attempts to get their head around it, and mid-attempt they accidentally commented-out one of the slides which created an unseen error when one of the functions/actions/triggers/etc... tried to go to a slide that didn't exist. So to prevent that problem from occurring again, they wrote another attempt where they used types/generics such that every slide's id and reference to every slide's id was type checked. That way, if a reference was ever incorrect or initially correct but made incorrect by a later change somewhere else, the editor would alert you before you even tried to compile your code. With that response, you now have the reasoning behind the non-trivial thing you didn't understand.
Trivial change example: Changing a color from "orange" to "red".
Someone could go to an LLM's chat window and type, "Change the color to red".
But it'd be faster to just double click the word "orange" to select it, then type the word "red".
So for trivial examples, it doesn't really make much sense to use an LLM, it's literally faster to do it yourself then review your own trivial changes in a diff.
Coming back to the word "review":
That means that reviews of LLM outputted code by their nature are either invalid and/or non-optimal.
The conclusion doesn't follow from the premise. Just because an LLM may need to tweak something doesn't mean it necessarily would have been faster to do it manually. Humans need to tweak things all the time, it's called revising, and it's an important part of improving code.
But I wouldn't claim that using LLMs is always faster than coding manually, nor the opposite. There are times when LLMs do slow me down. It's important to recognize when that risk is high.
But I'm quite certain that for prototyping specifically, i.e. building a desired UX to get a feel for it and experiment with whether the ideas are sound, LLMs are faster.
That's why you shouldn't trust an LLM's reasoning; it doesn't actually have sound reasoning abilities. You shouldn't rely on an LLM to reason about problems, you should use it to generate code quickly when the reasoning has either already been done by a human and/or it exists in its training set. LLMs are closer to a search engine than a problem solver.
I see no reason why this process is mutually exclusive with using an LLM. You can use both human reasoning and LLM code generation.
No disagreement from me about trivial changes. I make them in my editor all the time, assuming I even have an editor in front of me. Sometimes I don't, and it's possible to use dictation to an LLM to make trivial changes without touching a keyboard.
Not convincing. I've given my reasons