my argument is that lazy devs use the tool because that’s what it was designed for.
just calling a hammer a hammer.
Some tools deserve blame. In the case of this, you’re supposed to use it to automate away certain things but that automation isn’t really reliable. If it has to be babysat to the extent that I certainly would argue that it does, then it deserves some blame for being a crappy tool.
If, for instance, getter and setter generating or refactor tools in IDEs routinely screwed up in the same ways, people would say that the tools were broken and that people shouldn’t use them. I don’t get how this is different just because of “AI”.
Okay, so if the tool seems counterproductive for you, it’s very assuming to generalize that and assume it’s the same for everyone else too. I definitely do not have that experience.
It’s not about it being counterproductive. It’s about correctness. If a tool produces a million lines of pure compilable gibberish unrelated to what you’re trying to do, from a pure lines of code perspective, that’d be a productive tool. But software development is more complicated than writing the most lines.
Now, I’m not saying that AI tools produce pure compilable gibberish, but they don’t reliably produce correct code either. So, they fall somewhere in the middle, and similarly to “driver assistance” technologies that half automate things but require constant supervision, it’s quite possible that the middle is the worst area for a tool to fall into.
Everywhere around AI tools there are asterisks about it not always producing correct results. The developer using the tool is ultimately responsible for the output of their own commits, but the tool itself shares in the blame because of its unreliable nature.
Copilot produces useful and correct code for me 5 days a week. I’m sorry you don’t see the same benefits.
removed by mod
removed by mod
removed by mod
removed by mod
Using a tool to speed up your work is not lazy. Using a tool stupidly is stupid. Anyone who thinks these tools are meant to replace humans using logic is misunderstanding them entirely.
You remind me of some of my coworkers who would rather do the same mind numbing task for hours every day rather than write a script that handles it. I judge them for thinking working smarter is “lazy” and I think it’s a fair judgement. I see them as the lazy ones. They’d rather not think more deeply about the scripting aspect because it’s hard. They rather zone out and mindlessly click, copy/paste, etc. I’d rather analyze and break down the problem so I can solve it once and then move onto something more interesting to solve.
They rather zone out and mindlessly click, copy/paste, etc. I’d rather analyze and break down the problem so I can solve it once and then move onto something more interesting to solve.
From what I’ve seen of AI code in my time using it, it often is an advanced form of copying and pasting. It frequently takes problems that could be better solved more efficiently with fewer lines of code or by generalizing the problem and does the (IMO evil) work of making the solution that used to require the most drudgery easy.
removed by mod
Why are you typing so much in the first place?
Software development for me is not a term paper. I once encountered a piece of software in industry that was maintaining what would be a database in any sane piece of software using a hashmap and thousands of lines of code.
AI makes software like this easier to write without your eyes glazing over, but it’s been my career mission to stop people from writing this type of software in the first place.
removed by mod
removed by mod
removed by mod
Lol, it couldn’t determine the right amount of letters in the word strawberry using its training before. I’m not criticizing the training data. I’m criticizing a tool and its output.
It’s amusing to me that at first it’s “don’t blame the tool when it’s misused” and now it’s “the tool is smarter than any individual dev”. So which is it? Is it impossible to misuse this tool because it’s standing atop the shoulders of giants? Or is it something that has to be used with care and discretion and whose bad outputs can be blamed upon the individual coders who use it poorly?
sometimes working smarter is actually putting the work in so you don’t have to waste time and stress about if it’s going to work or not.
I get Dreamweaver vibes from AI generated code. Sure, the website works. looks exactly the way it should. works exactly how it should. that HTML source though… fucking aweful.
I can agree, AI is an augment to the tools you can use. however, it’s being marketed as a replacement and a large variety of devs are using it as such.
shitty devs are enabled by shitty tools.
shitty devs are enabled by shitty tools.
No, shitty devs are enabled by piss-poor hiring practices. I’m currently working with two devs that submit mind bogglingly bad PRs all of the time, and it’s 100% because we hired them in a hasty manner and overlooking issues they displayed during interviews.
Neither of these bad devs use AI to my knowledge. On the other hand I use copilot constantly and the only difference I see in my work is that it takes me less time to complete a given task. It shaves 1-2 minutes off of writing a block/function several times an hour, and that is a good thing.
so your argument is because shitty devs exist that AI can’t be a shitty tool.
Shitty tools exist. shitty devs exist. allowing AI code generation only serves as an excuse for shitty devs when they’re allowed to use it. “oh sorry, the AI did that.” “man that didn’t work? musta been that new algorithm github updated yesterday.”
shitty workers use shitty tools because they don’t care about the quality and consistency of the product they build.
ever seen a legitimate carpenter use one of these things to build a house?
yeah, you won’t because anything built with that will never pass inspection. shitty tools are used by shitty devs.
could AI code generation get better? absolutely! is it possible to use it today? sure. should you use it? absolutely not.
as software developers we have the power to build and do whatever we want. we have amazing powers that allow us to do that, but rarely do we ever stop to ask if we should do it.
I get Dreamweaver vibes from AI generated code.
Same. AI seems like yet another attempt at RAD just like MS Access, Visual Basic, Dreamweaver, and even to some extent Salesforce, or ServiceNow. There are so many technologies that champion this…RoR, Django, Spring Boot…the list is basically forever.
To an extent, it’s more general purpose than those because it can be used with multiple languages or toolkits, but I find it not at all surprising that the first usage of gen AI in my company was to push out “POCs” (the vast majority of which never amounted to anything).
The same gravity applies to this tool as everything else in software…which is that prototyping is easy…integration is hard (unless the organization is well structured, which, well, almost none of them are), and software executives tend to confuse a POC with production code and want to push it out immediately, only to find out that it’s a Potemkin village underneath as they sometimes (or even often) were told the entire time.
So much of the software industry is “JUST GET THIS DONE FASTER DAMMIT!” from middle managers who still seem (despite decades of screaming this) to have developed no widespread means of determining either what they want to get done, or what it would take to get it done faster.
What we have been dealing with the entire time is people that hate to be dependent upon coders or other “nerds”, but need them in order to create products to accomplish their business objectives.
Middle managers still think creating software is algorithmic nerd shit that could be automated…solving the same problems over and over again. It’s largely been my experience that despite even Computer Science programs giving it that image, that the reality is modern coding is more akin to being a millwright. Most of the repetitive, algorithmic nerd shit was settled long ago and can be imported via modules. Imported modules are analogous to parts, and your job is to build or maintain the actual machine that produces the outcomes that are desired, making connecting parts to get the various components to interoperate as needed, repairing failing components, or spotting the shoddy welding between them that is making the current machine fail.