no comments (yet)

sorted by: hot top controversial new old
there doesn't seem to be anything here
17 comments in c/programming@programming.dev view that post
[–] 21 points 3 months ago (14 children)

as someone who uses ai to help on researching an issue/question - i have no understanding whyvpeople just submit generated code. i realize i just dont use it to generate stuff. i use it to find stuff.

when this forst came out, i thought non devs would use it for creating an app that they use at home just for them. but no, i constantly see people posting about their project and trying to getvpeople involved. a project fully generated by an llm. or as in the issue here, generating code to be merged into a project..why? i jist dont get it.

  • source
  • hideshow 14 child comments
  • [–] 4 points 3 months ago (8 children)

    I don't think it's very hard to understand. It reduces the up-front cost of development.

  • source
  • parent
  • hideshow 8 child comments
  • [–] 9 points 3 months ago (7 children)

    To be more specific, it trades up-front development cost and building competence for knowledge gaps and maintenance hell.

  • source
  • parent
  • hideshow 7 child comments
  • [–] 0 points 3 months ago* (6 children)

    Not always. Prototyping can be valuable in many circumstances when you don't know the shape you'd like the code to take. Sometimes you need to try something before you know if it's right. I'd rather throw away prototype code written by an LLM than code I had to write the hard way.

  • source
  • parent
  • hideshow 6 child comments
  • [–] 0 points 3 months ago (5 children)

    Not always.

    Yes always. To paraphrase Feynmann: What you did not create, you have not understood.

    Prototyping can be valuable in many circumstances when you don’t know the shape you’d like the code to take.

    Yes

    Sometimes you need to try something before you know if it’s right.

    Yes

    I’d rather throw away prototype code written by an LLM than code I had to write the hard way.

    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.

  • source
  • parent
  • hideshow 5 child comments
  • [–] 2 points 2 months ago* (4 children)

    What you did not create, you have not understood.

    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.

  • source
  • parent
  • hideshow 4 child comments
  • [–] 1 point 2 months ago (3 children)

    So just because I didn’t write a book means I could never understand it from reading it?

    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.


    Are editors useless in the world of book publishing? Then what is the point of code review?

    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.

  • source
  • parent
  • hideshow 3 child comments
  • [–] 1 point 2 months ago (2 children)

    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.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 1 point 2 months ago* (last edited 2 months ago) (1 child)

    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:

    • "LGTM" the changes (in which case it wasn't actually reviewed),
    • Read through the entire change to try and comprehend it until you find a part that you don't understand
      • Sidenote: If you didn't find a part that you didn't understand, then the change isn't actually non-trivial, so you can refer to the "trivial change example" below. This section is about non-trivial changes.

    When asking the LLM a question about the part that you didn't understand, it will either give you:

    • A completely different changeset, so now you have something completely different to review. And by the fact of the longest part of programming being digesting code you didn't write, in effect you've taken a long-cut and could have written it yourself faster. (This is part of where the "LLMs make programmers take longer" observation comes from)
    • A post-hoc justification for it. Which would by it's nature not have take place before the code was written, which makes it unable to have actually affected the code, and thus not actually be a valid reason for why the code is the way it is. So you don't get a valid answer, you just get a convincing one.

    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 problem of the word "review":

    You get the LLM to write code quickly and then you review it and perform experiments manually.

    • Non-trivial reviews require back and forth communication. Reviews can be convincing without being valid. The review's validity depends upon the validity of reasoning within that communication.
    • Trivial reviews are trivial, so there's no point to using an LLM in the first place

    That means that reviews of LLM outputted code by their nature are either invalid and/or non-optimal.

    My advice: cut out the crutch/middle-man and do the hard work of establishing that rock-solid understanding. You'll be much better off in the long run.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 1 point 2 months ago

    And by the fact of the longest part of programming being digesting code you didn’t write, in effect you’ve taken a long-cut and could have written it yourself faster.

    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.

    So you don’t get a valid answer, you just get a convincing one.

    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.

    When asking the person why they did it...

    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.

    That means that reviews of LLM outputted code by their nature are either invalid and/or non-optimal.

    Not convincing. I've given my reasons

  • source
  • parent
  • [+] -15 points 3 months ago* (last edited 3 months ago) (4 children)

    Ok it occurs to me that people use this like they use a spellinng/grammar checker in a word processor.

    Spellcheck:

    • They have an idea.
    • They type up the idea.
    • They run spellcheck and it churns through their document and it fixes mistakes that it can see.
    • They send it to someone for review.

    LLM coding:

    • They have an idea.
    • They type up the idea.
    • LLM churns on the idea and spits out a solution-of-sorts.
    • They send it to someone for review.

    Regardless of other opinions of it, they see it as a tool that helps take the effort out of getting ideas into reality.

    Edit: Oh wait, this is c/programming. Fuck. Ok, give me 5 minutes for me to sharpen my pitchfork and come up with something that matches the groupthink, I'll be right back.

  • source
  • parent
  • hideshow 4 child comments
  • [–] 5 points 3 months ago

    You missed the part where they are SUPPOSED to meticulously review the "solution" themselves and have deep foundational understanding of what's going on to know if it's a good solution or not.

    Ideas are a dime a dozen. It's not useful when the person lacks the ability to fully vet the solution before passing someone else to review. That just makes them middlemen. When instead the actual maintainer or reviewer could have done the same thing but have that foundational understanding.

  • source
  • parent
  • [–] 1 point 3 months ago

    Seems like a good policy. Especially if they're bottlenecked on review, which most large open source projects are.

  • source
  • [–] 0 points 3 months ago

    Harassment is not allowed. You may not harass people for using an LLM, regardless of whether or not their use is banned by the policy. You must follow the Code of Conduct at all times when interacting with the Rust project.

    Lol, I think that will be as lost on the LLM haters as the contributing policy will be lost on LLM-only users.

  • source
  • 9 comments in c/rust@programming.dev view that post
    [–] 29 points 3 months ago

    Oof, lots of valid points, especially that the value of a contribution is in the decisions it makes. Having an LLM guess those decisions makes the resulting code significantly less valuable.

    Hell, one could argue pretty much entirely worthless, because the maintainers could prompt an LLM themselves, if the decisions didn't matter.

  • source
  • [–] 13 points 3 months ago

    Seems like a good policy in general, open to changes, i hope this will make reviewers' job easier, considering how hard reviewing PR's for a university project with partners who insist on using LLMs for almost everything, i can barely imagine how frustrating this all must be.

  • source
  • [–] 13 points 3 months ago (2 children)

    The policy summarizes itself this way: It's fine to use LLMs to answer questions, analyze, distill, refine, check, suggest, review. But not to create.

    Saying that "it's fine" seems a little overly broad, because sometimes it isn't, but I suppose that by "fine" they simply mean that it's not forbidden by the policy. A more complete summary would also mention that where it is allowed, disclosure of LLM use is required.

    Personally, on the few occasions where I've resorted to querying an LLM it's been very much the same kind of experience that using Stack Overflow used to be. It's a quick way to see one way that other people have done some thing, but you wouldn't want to rely on it being the right way.

  • source
  • hideshow 2 child comments
  • [–] 13 points 3 months ago (1 child)

    I guess that the purpose of the one-line summary is to communicate the spirit of the policy. The details that you are asking for, is what constitutes the majority of the the policy document itself. While you could probably summarize the body of the policy in more detail, having multiple lists with different levels of details would likely lead to confusion. So I think that the approach they've taken makes sense

  • source
  • parent
  • hideshow 1 child comment
  • [–] 5 points 3 months ago

    As was said elsewhere on the Internet:

    Don't get me wrong, I welcome this policy, I just wish the "one line zinger" was a little more detailed, because if you come away from the article without reading on (or, more realistically, if secondary sources pick up this quote without the surrounding context), one could easily get a wrong idea.

  • source
  • parent
  • [–] 8 points 3 months ago (3 children)

    Seems pragmatic and well-written. But it doesn’t say “LLM’s are hot garbage in all circumstances and people who use them are all smelly turds,” so I’m guessing there will be backlash in this community.

  • source
  • hideshow 3 child comments
  • [–] 20 points 3 months ago (2 children)

    Hey, I know you are probably trying to help, but when you talk over/about other people and categorize them/put them in boxes, it never helps open opinions and discussions. Maybe don't put your expectations first, especially if they may be wrong.

    Sorry. Thought it's worth saying, and my hope with this message is to reduce the volume of assumptions people make about each other here.

    💯 1
  • source
  • parent
  • hideshow 2 child comments
  • [–] 2 points 3 months ago (1 child)

    Fair, but I was making a general comment with tongue firmly in cheek. I didn’t mean to denigrate anybody. Certainly not any individual. It was broad commentary on the general, though certainly not ubiquitous, view on LLM’s in the larger communities on Lemmy.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 4 points 3 months ago* (last edited 3 months ago)

    Hey! I'm a person who specifically wants to hear that LLMs are always flaming garbage. Thanks for the explanation. Intent and tone is hard online. Your original comment, which probably read as a joke and firmly tongue-in-cheek to you, read as a frustrated and resentful snarky one-liner zinger to me until I got this explanation that you didn't mean it that way. Of course, I'm carrying my own biases (anti-LLM, frustration with harshness and generalizations and insults that I perceive to be happening more frequently on the Fediverse than back on Reddit or in real life).

    I wonder if there are more jokesters than actual harsh people and I'm just misinterpreting it. (I have been stepping back from the Fediverse because of how many generalizations and frustrated, resentful, snarky comments I've seen; and how many LLM discourse posts I see on programming.dev that I, who have that as a trigger topic, end up rabbitholing down instead of doing something more useful. Me even clicking and commenting on this post is an example of the latter, I fear.)

    Thanks again for clarifying your intent and going de-escalation mode, I think we need way more of that energy.

  • source
  • parent
  • 3 comments in c/programming@programming.dev view that post
    [–] 20 points 2 months ago

    Moreover, this is a breach of trust between the reviewer and the author. Our assumption when we review is that we're talking to a real person who wants to do their best work.

    I think this is a really excellent point and gets at a general feeling I've had towards LLM-generated PR comments for a while now. I can understand the desire to use LLMs to generate changes (my company pushes AI super hard and it genuinely is a helpful tool in many cases), but to delegate discussion of those changes to an AI model feels extremely antisocial to me. I don't really like the idea of vibe-coding in general, and this practice really distills down everything I don't like about it with an added layer of deception.

  • source
  • [–] 7 points 2 months ago
    2 comments in c/opensource@programming.dev view that post
    [–] 26 points 2 months ago*

    We will often get people who respond to review comments by copy-pasting them into their LLM, then copy-pasting its response back onto GitHub. Bluntly: this is a waste of everyone's time. If we wanted an LLM's opinion, we could have asked it ourselves. We want to hear your thoughts, not a machine's.

    Imagine being so naive you actually think you're contributing anything by being the middle man between a real dev and an LLM.

  • source
  • [–] 3 points 2 months ago

    I wonder when bun will migrate to something else

  • source