Hacker News new | ask | show | jobs
by mosburger 131 days ago
this is a great analogy despite it possibly coming off as snark.

I think it's hard for some people to grasp that programmers are motivated by different things. Some are motivated by shipping products to users, others are motivated to make code that's a giant elegant cathedral, still others love glorious hacks to bend the machine into doing things it was never really intended to do. And I'm sure I'm missing a few other categories.

I think the "AI ain't so bad" crowd are the ones who get the most satisfaction out of shipping product to users as quickly as possible, and that's totally fine. But I really wish they'd allow those of us who don't fall into that category to grieve just a little bit. This future isn't what I signed up for.

It's one thing to design a garden and admire the results, but some people get into their "zen happy place" by pulling up weeds.

7 comments

> people ... are motivated by different things.

I agree and would add that it's not just different people, it can be the same person in different modes. Sometimes I enjoying making the thing, other times I just want to enjoy having the thing.

Your grieving doesn’t have to shit all over my personal enjoyment and contentment. Me enjoying the use of AI in developing software doesn’t take anything away from your ability to grieve or dislike it. I’m not asking you to be excited, I’m asking you not to frame my enjoyment as naive, harmful, or lesser.

Your feelings are yours, mine are mine, and they can coexist just fine. The problem only shows up when your grief turns into value judgments about the people who feel differently.

I don't disagree, but I think it would benefit everyone to be clear, upfront and honest with themselves and others about exactly what's being lost and grieved. The weeds are still growing and our hands are still available to pull them, so it's not that.
I agree with this, I put myself in the "glorious hacks to bend the machine into doing things it was never really intended to do" camp, so the end game is somthing cool, now I can do 3 cool things before lunch instead of 3 cool things a year
But, almost by definition of how LLMs work, if it’s that easy then someone else did it before and the AI is just copying their work for you. This doesn’t fit well with my idea of glorious hacks to bend the machine, personally. I don’t know, maybe it just breaks my self-delusion that I am special and make unique things. At least I get to discover for myself what is possible and how, and hold a sliver of hope that I did something new. Maybe at least my journey there was unique, whereas everyone using an AI basically has the same journey and same destination (modulo random seed I guess.)
Essentially nothing we do as programmers is special or unique. Whatever we're doing, there's a 99.999% chance that somebody, somewhere did it first, just in a different context. The key point is, now we can avoid duplicating that person's effort. I don't see the downside.

Put another way: all of the code that needed to be written has now been written. Now we can move on to more interesting things.

What will really bake peoples' noodles is when it becomes apparent that the same is true for literature. I won't mind if I'm not around to witness that... but it will happen.

I think the people who like shipping quickly probably don't like building products in the first place and are looking for other aspects of entrepreneurship.

A huge benefit I find in AI is that it helps with a lot of things I hated. Merge conflicts, config files, breaking dependency updates... That leaves me more time to focus on the actual functionalities so I end up with better APIs, more detailed UIs, and more thorough tests. I do think it's possible to be relevant/competitive by only delegating parts of the work to AI and not the whole thing. Though it might change if AI gets too good.

This is a valid point, the good news is I think there is some hope in developing the craft of orchestrating many agents into something that is satisfying and rewarding in it's own right.
Having opencode doesn't preclude me from making elegant code. It just takes away the carpel tunnel.
> I created this with some kind of genai

To me, it just feels like plagiarism. Can you explain why it doesn't feel like plagiarism to you?

Plagiarism is claiming someone else’s specific work as your own. Using a generative tool is closer to using a compiler, an IDE, or a library. I’m not copying a person’s code or submitting someone else’s project with the name filed off. I’m directing a system, reviewing the output, editing it, and taking responsibility for the result.

If I paste in a blog post verbatim and pretend I wrote it, that’s plagiarism. If I use a tool to generate a starting point and shape it into what I need, that’s just a different kind of authorship.

> If I paste in a blog post verbatim and pretend I wrote it, that’s plagiarism. If I use a tool to generate a starting point and shape it into what I need, that’s just a different kind of authorship.

If you cloned chapters from multiple books, from multiple different authors, didn't decide on the sentence structure, didn't choose the words yourself, didn't decide which order your going to place these chapters, didn't name the characters. At what point do you no longer get credit for writing the book?

What if it's code? what if you didn't decide which order you should call these functions. Didn't make the decision about if you're gonna write var i, or idx, or index. Didn't make a decision if this should be an u32, or an i64. Didn't read any of the source code from that new dependency you just added. Didn't name the functions, oh but no, you did have to edit that one function because it wouldn't compile, so you just renamed it like the error suggested... At what point does the effort you put in become less significant than the effort duplicated from the training set? How much of the function do you have to write yourself, before you take credit? How many chars have to by typed by your fingers, before you claim. You made this?

What I described was directing, reviewing, and editing. You’ve ignored that entirely to construct a version of me who pastes “write me an app” and ships it unread… then spent three paragraphs righteously tearing that down. I own the intent, the spec, the judgment about what’s correct, and the blame when it breaks. That’s authorship, and that’s why using a generative tool isn’t plagiarism. The rest is breathless gibberish dressed up as moral clarity.
> “write me an app” and ships it unread…

That is in fact, the behavior I see most often.

> What I described was directing, reviewing, and editing.

You didn't actually describe any of that though? You asserted that's what you do, but didn't describe any of those steps.

If you do, you'd be the first person I see actually do that when using LLM codegen. Most people who advocate for it, do behave that way. You're mistakenly taking my rhetorical argument against the more common, and substituting your own interpretation of how things are. Which is the very thing you're attempting to chastise me for doing. Just as you're unconvinced by my rejection of your hypothetical, I'm unconvinced by yours.

I might agree if you spend the same amount of time and effort, it wouldn't count as plagiarism. But if it's not faster, then what's the point?

> The rest is breathless gibberish dressed up as moral clarity.

Sure, that's a fair interpretation if you want to feel like a superior asshole. But really I was attempting to describe how I view the way most people interact with LLM codegen, before claiming they did all the work. Which if you recall, was my original question; why is that view wrong? What details would convince me I've misunderstood something?

The same reason why using a generator like antlr doesn't feel like plagiarism to me. I don't outsource thinking to these models, only coding. My spec files contain the architecture, and details of intent on each interface. That is the part of the work that actually matters, rest of it is just code monkey stuff. While I am sad I don't get the peace and satisfaction of churning out code, my primary goal is to make cool things not coding.

edit: typo.

Where do you draw your line between plagiarism and creativity? I learned in art school this question is more difficult to answer than it appears when taken seriously.
That's a great question, I've never tried to draw a concrete line before. Code is inherently creative. But it's not art, it doesn't map 1:1 like that.

But I wouldn't consider attempting to duplicate a painting, plagiarism if you painted it yourself with your hand (assuming you mention or reference the original author, or it's well know e.g. starry night) . I would consider it plagiarism if you duplicated it via photo, or other automated method.

I'd translate it to code as; if you're looking at stack overflow for the answer, if you understand it, before writing your own implementation, that's learning, and not plagiarism. But if you copy out the whole function without understanding how to implement it yourself, that would be.

The person I replied to said

> Having opencode doesn't preclude me from making elegant code. It just takes away the carpel tunnel.

I assume he's asking the LLM to generate upwards of multiple hundreds of lines of code. Let's assume he's does understand all of it. (Something that defies my understanding around how most LLM users use codegen.) Then you have a sister comment who claims you can write multiples more code/projects using LLMs. At a certain point your ability to understand the code must fall away. And at that point, if you didn't have the majority of the creative input. Why call it your work?

I assume you're an artist, if you have an LLM generate you a picture. Do you feel like it's work you've created? Did the inspiration for where each line should start, and end, come from the contents of your mind? Or was it sampled from a different artist? Given the exact same prompt, would you draw the same lines next week? Next month? Because the LLM would.

There's no doubt it's easy to draw parallels in any creative work, both from art an code. But if you didn't make the decision about where to place the function, about which order you want to call them, if you're gonna do error handling deep down as close to the error as possible, or you're optimizing for something different, and decided long ago that all errors should bubble back up to the main function.

One, or two, or even a half dozen of decisions might seem insignificant, but together, if you didn't really make any of them. How can you claim it's code you wrote? Why do you feel proud of the work of others, sampled and mapped into a training set, and then regenerated into your repo, as if it's work you put forth? All of that should be read as the rhetorical you, I know you're not making that argument. But would you make it? When you share a meme with your friend, do you claim you created the meme? Even if you use a memegen, and change the words to reference your in joke. Do you feel like you've created that art? Or are you using the art of someone else to share the idea you want to share? I assume it's the latter, but

They said "Having opencode doesn't preclude me from making elegant code." They're taking credit for making the elegant code, just as if they were taking credit for inventing the meme. There's a different amount of effort involved, and that effort, or the source of it, is significant when talking about who deserves the credit, and the sense of pride.

Thank you very much for your thoughtful reply and I may come back and comment again as I digest it. I struggled with the same things in film school, I almost dropped out because I was frustrated at the the level of what I considered, very many different names... "unfair", "cheating", "plagiarism", I used to get very worked up about it. "They used full auto here I can tell" - "Those vectors are downloaded" - "That filter is a preset they bought" - especially so when I came second. Our dean would regularly say the most creative people simply do the best job of hiding their source of creativity.

I agree with you code and art are not the same thing, but I do suspect it can get a bit complicated, it still is for me. Even on your question about how I feel - I don't have a good answer for you because I won technical Emmy awards for working on abstractions, lots of people said our work was cheap and gimmicy, cool, we won Emmy's. I go back and forth often on what is "fair" (whatever that means).

Of all you said the last paragraph I can connect with the most, I tried to have someone thrown out of film school for the same type of thing, but as that same dean told me "life is too short man, you gotta chill out".

> But if you didn't make the decision about where to place the function, about which order you want to call them, if you're gonna do error handling deep down as close to the error as possible,

I still make all those decisions. I decide what my error handling structure is, and I have it finally exactly the way I like it in python. I usually discover the "right" way for a piece of software while writing it, then it is a chore to refactor to make it consistent across the code base again. Now I just make a spec (edit: for the refactor which defines this new abstraction and its interfaces), let it run and go grab a coffee. Yes I dont decide anymore exactly which line number the function is in, but that never mattered did it? What matters is how your objects compose and how you handle edge cases. I still do that.

> Yes I dont decide anymore exactly which line number the function is in, but that never mattered did it? What matters is how your objects compose and how you handle edge cases. I still do that.

I would say it does matter, and always did.

Obviously, not every single line order matters with performance results that you can measure. That's not what I'm saying. But every decision does add up to who deserves the credit for the thing. Especially with how you describe your role. And then you assure me for each of those critical decisions, it's you who makes that decision.

In another thread you accuse me of constructing a strawman and then ignoring any counter evidence. But not a single person has ever provided anything above a token "I'm just built different", contained within a response as if the fictional person, sorry, "strawman" I've created is a personal attack. If it doesn't accurate represent you, why does it bother you? I'm getting strong, thou doth protest too much vibes.

Again, I'm not directly accusing you. I try very hard to believe someone when they tell me something. So I am actively trying to believe the things you've said. But you offer nothing above "nah man, I'm different, promise". Meanwhile I have dozens of examples of people vibe coding, and responding to the answer of, 'why' with: "I don't know, the LLM did that". Your example I've never seen, not once. My example is terrifyingly common.

When I try to merge what you promise yeu do, with what I've actually seen occur out in real life. I end up with, what I'm sure you'll angerly object as, just another strawman, but again I'm asking for something other than hollow reassurances: Because what you describe is close to an artist, teaching an apprentice. The apprentice does the work, perhaps exactly as instructed by the artist. But then when the artists sells the work. They claim that it's their creation. As if the apprentice never existed. It's disgusting behavior when the apprentice is a person, but shameful for an entirely different reason if the apprentice is a large block of token weights.

I don't for a second believe, all you have opencode do for you is refactor based on a specification you wrote (belief != disbelief) but still feel you deserve the assumption of the best possible interpretation. If all your apprentice did was clean the brushes, and take the pottery out of the kiln. Then yes, you created everything. But given my assumption that's not actually what reality looks like, help me understand the delta between these two examples?

They don't say, My team did this. Or Look how good I am teaching, my student created this. Or anything of the nature. They pass off work and effort, and expertise, As if they wrote every line of code. Some people do sheepishly admit the used an LLM when writing some patch. But many MANY more, don't.

If you actually don't feel like you're misrepresenting how much credit you deserve. Then I'm hoping you can explain to me, why so many people who don't try, and just blindly trust the vibe slop, don't feel embarrassed? Because I'm so far from it, that I don't have the context required to understand that lack of integrity. But perhaps someone who does it the correct way can explain it to me?