I understand your skepticism 100%, but I suspect you might change your mind if you, say, rented a car with it for a week. It's definitely a net positive for safety, and it probably costs the auto maker less than the seat belts (literally).
I've owned cars with backup cameras since about 2014. I still mostly back up the old fashioned way, and really only use the camera for very tight situations where a few inches matter.
ive owned two cars. the modern backup camera means the new one has small "stylish...." rear windows. it is wayyyy more dangerous than the older one with no sensors
i only have those two data points; but give me an older car with larger windows every. single. time.
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.
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.
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.
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.
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?
Well I'm not a coder so maybe my opinion doesn't count, but I did help build digitalocean so I know a little about them. I think the reason so many people don't feel embarrassed is simpler and less sinister than a lack of integrity... they jsut never had the relationship to craft that you have. You very clearly care about the decisions.. you care where the function goes, errors up and down stream the accumulation of small choices that make something yours!! From what I've seen that's a craftsman's relationship to work. It's valid, it's fair, and it's commendable. That said: most people who work generally, including writing code don't have that. They never did. Before LLMs they were copying from stackoverflow without understanding it, which by your own definition was already the problem. But another thing I learned in art school, at great craftsman never blames their tools, the existence of people who use a tool badly has never been a good argument that the tool is the problem. As i said earlier, film school was full of people passing off purchased presets as their own creative work. They weren't shameless because Final Cut existed. They were shameless because they were shameless!!! lol The dean told me to stop fixating on them but because it was consuming energy I could've spent on my own work. An extreme, but just like I accept gay people are gay when I'm stright, trans people are trans when I'm cisgender, I accept other people are not like me and find joy in very many divergent places, and I am nobody to judge another's joy in life.
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.
> 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?
You've made a straw man of how people use codegen and are not willing to change your opinion even though people are telling you this is not how they use code gen.
I've replied much deeper in the other thread. But my concrete problem is that insubstantial arguments can't override the overwhelming evidence I've already acquired. Just trust me bro; I'm different from every other vibe coder you've seen dump slop on somebody, might be true but is not very compelling.
I don't care about how you use codegen, I want to understand why you discard all of the process, while still claiming credit for writing it? Perhaps you don't say I wrote this. Or I made this. Perhaps you do say, I asked an LLM to create this. Or disclose an LLM generated most of the lines. Or perhaps you do modify most of it, but I've never seen the latter in real life. And even then, that doesn't help answer my question about when people who aren't built different like you, why isn't that plagiarism?
Because when I look at something created by the team, I do give the engineering manager credit for their contributions, they helped build the team. But I definitely don't think they helped create the thing.
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.
Oh my god. This is me. If I were any better at writing, I could have written this, the author is even the same age as me (well, a year younger) and followed a similar trajectory. And a lot of what I've been feeling lately feels similar to burnout (in fact I've been calling it that), but it really isn't burnout. It's... this, whatever this is... a "fallow period" is a good term.
And I feel like an old man grumbling about things changing, but... it's not the same. I started programming in BASIC on my Tandy 1000 and went to college and learned how to build ISA cards with handwritten oscilloscope software in the Computer Engineering lab. My first job was writing firmware. I've climbed so far up the abstraction chain over a thirty year career and I guess I don't feel the same energy from writing software that first got me into this, and it's getting harder to force myself to press on.
I think (I'm an American so take with a grain of salt) even the "proper lawyer reviewing terms" part can be deferred quite a while by being conservative with PII (which you should be doing anyway) and using a service like iubenda to deal with terms and cookie warnings when you first start out.
I didn't do this, but I did use a spare unsigned short (used for memory alignment) in the Quantum Atlas 10K II disk drive's servo firmware to store my wife and I's anniversary date just for yucks. :P
It used to be the case that the middle digit of an area code had to be a 0 or a 1. All the O.G. "cool" area codes like 212 are in this format, and the less desirable new area codes like 646 are not (yes, this is an accidental Seinfeld reference).
Yeah, see also: Digital Equipment Corp until the mid 90s (where I did my co-op). Lots of brilliant people there, coasting on their legacy until they fell hopelessly behind from mismanagement and bloat. I was lucky to catch a glimpse of it at the end.
reply