As stated in the article, this has less to do with using AI, more to do with sloppy code reviews and code quality enforcement. Bad code from AI is just the latest version of mindlessly pasting from Stack Overflow.
I encourage jrs to use tools such as Phind for solving problems but I also expect them to understand what they’re submitting and be ready to defend it no differently to any other PR. If they’re submitting code they don’t understand that’s incredibly unprofessional and I would come down very hard on them. They don’t do this though because we don’t hire dickheads.
We used to have these shit developers and I accepted a lot of bad code back then – if it actually worked – because otherwise “code review” is full-on training, which is an entire other job from the one I was hired to do.
The client ditched that contracting firm, and the devs I work with now are worth putting in time on code review with – but damn, we got hella shit code in our codebase to deal with now. Some of it got tossed, some of it … we live with.
Bad code from AI is just the latest version of mindlessly pasting from Stack Overflow.
Humans literally can not scan all of SO to make a huge copypasta.
It takes much more time, effort, and thought to find various solutions on SO and patch them together into something that works well.
Yeah but… i asked chatgpt once how to style something in asciidoctor. It proposed me html syntax (some inline stuff can be done with html tags in asciidoctor, if output is html) instead of the external style.yml After the usual apology, it suggested some wrong yaml. Third try, because something was wrong in code, it mixed them both.
I mean, sure, some niche usecase in a somewhat obscure (lots of moving parts) lightweight markup. But still, this was a lesson.
Computer write shite code and the human still gets blamed.
The human turned the code in. They deserve 100% of the blame.
this has less to do with using AI, more to do with sloppy code reviews and code quality enforcement.
They are the same picture.
More specifically: the same kind of decision makers are behind both.
Shift-left eliminated the QA role.
Now we have AI generated shit code, with devs that don’t understand the low level details of both the language, and the specifics of the generated code.
So we basically have content entry (ai inputs) and extremely shitty QA bundled into the “developer” role.
As a 20 year veteran of the industry, people keep asking me if I think AI will make developers obsolete. I keep telling them “maybe some day, but today’s LLMs are not it. The AI bubble is going to burst, and a few legit use cases will make it through”
Also it is pure junk. Chat-GPT code may come out fast on the screen but it’s garbage. I tried python and c++ both just pure garbage. Sure I got it to do what I wanted but only after a day of hair pulling repetitive madness. Simple task, open an image and invert it . Then we’ll it opened the image but didn’t invert. Or maybe it’s upside down. Can you open the image right side up and invert it…fuck fuck, why is the window full screen? Did I ask for full screen, shit heavens no! Anyway it’s a fuckin idiot just rambling code at me.
I use it for Ansible, so not for code, and just to reduce the time my brain is exposed to Ansible.
If old you said to me was open an image and invert it, I would probably turn it upside down as well. What are you trying to get it to do?
Probably make the bright pixels dark and the dark pixels bright.
So what they should have said is to make the image negative.
That’s being a standard image editing function since the days of film but you have to use the correct terminology.
It’s called invert in Photoshop:
https://www.adobe.com/creativecloud/photography/discover/invert-colors.html
Open it how using what at what size what codec where, for how long, for what purpose, using what data structures, use what libraries, what versions. You sound like my PO trying to request an update to software they have no comprehension of.
Where’s the articles about humans doing the exact same shit for the last 40-50 fucking years and no one bats an eye. Looks at the prompts from people complaining about ai responses and see they don’t know how to use this shit any better than my grandparents can use a touchtone phone.
“Build an app”
Fails
“This ai is shit”.
Just like ever other piece of technology. Garbage in garbage out. If you can’t reliably describe what you want then no one is going to be able to do it. AI just blatantly points out your descriptive failures.
I’ve yet to see generative AI make an error that a human couldn’t make. Maybe that’s why people seem so hateful of it; they were expecting it to be superhuman but instead it’s too much like us.
That’s on them though. The other ones making the claim that it’s supposed to be The Culture, but I don’t think anyone at the companies is saying that it is.
Ai llms have learned from us. Good and bad. It doesn’t know the difference between good and bad unless you tell it.
So you have to know what’s good or bad from the get go before using it and trusting it yet.
And some blindly trust ai already… Which its far from that level of trust
What a surprise, right?
Eaxctly my point as well here… https://kbin.melroy.org/m/technology@lemmy.world/t/461269/-/comment/4095583
How come the hallucinating ghost in the machine is generating code so bad the production servers hallucinate even harder and crash?
You have to be hallucinating to understand.
I’ve licked the frog twice! How many does it take?
A-one. A-two-hoo. A-three… *Crumch*
I take it that frog hadn’t been de-boned.
I’m not sure how AI supposed to understand code. Most of the code out there is garbage. Even most of the working code out there in the world today is garbage.
Heck, I sometimes can’t understand my own code. And this AI thing tries to tell me I should move this code over there and do this and that and then poof it doesn’t compile anymore. The thing is even more clueless than me.
Randomly rearranging non working code one doesn’t understand… sometimes gets working code, sometimes doesn’t fix the bug, sometimes it won’t even compile anymore? Has no clue what the problem is and only solves it randomly by accident?
Sounds like the LLM is as capable as me /s
Sometimes you even get newer and more interesting bugs!
As a senior dev, this sounds like job security. :)
You know you’re Sr. when it doesn’t even bother you anymore. It amuses you.
My boss comes to me saying we must finish feature X by date Y or else.
Me:
We’re literally in this mess right now. Basically, product team set out some goals for the year, and we pointed out early on that feature X is going to have a ton of issues. Halfway through the year, my boss (the director) tells the product team we need to start feature X immediately or it’s going to have risk of missing the EOY goals. Product team gets all the pre-reqs finished about 2 months before EOY (our “year” ends this month), and surprise surprise, there are tons of issues and we’re likely to miss the deadline. Product team is freaking out about their bonuses, whereas I’m chuckling in the corner pointing to the multiple times we told them it’s going to have issues.
There’s a reason you hire senior engineers, and it’s not to wave a magic wand and fix all the issues at the last minute, it’s to tell you your expectations are unreasonable. The process should be:
- product team lists requirements
- some software dev gives a reasonable estimate
- senior dev chuckles and doubles it
- director chuckles and adds 25% or so to the estimate
- if product team doesn’t like the estimate, return to 1
- we release somewhere between 3 and 4
If you skip some of those steps, you’re going to have a bad time.
LLMs are not supposed to understand, they are supposed to pretend to understand.
Can confirm. At our company, we have a tech debt budget, which is really awesome since we can fix the worst of the problems. However, we generate tech debt faster than we can fix it. Adding AI to the mix would just make tech debt even faster, because instead of senior devs reviewing junior dev code, we’d have junior devs reviewing AI code…
AI can be a useful tool, but it’s not a substitute for actual expertise. More reviews might patch over the problem, but at the end of the day, you need a competent software developer who understands the business case, risk profile, and concrete needs to take responsibility for the code if that code is actually important.
AI is not particularly good at coding, and it’s not particularly good at the human side of engineering either. AI is cheap. It’s the outsourcing problem all over again and with extra steps of having an algorithm hide the indirection between the expertise you need and the product you’re selling.
Good. This is digital Darwinism at its finest. Weeds out the companies who thought they could save money by relying on a digital monkey instead of actual professionals.
The point of the article isn’t that AI is outright useless as a coding tool but that it lulls programmers into a false sense of security regarding the quality and security of their code. They aren’t reviewing their work as frequently because of this new reliance on AI as a time saver, and as such are more likely to miss any mistakes that they or the AJ made.
It basically just turns coders into debuggers.
Everyone is QA now.
Devs care to debug code only if they believe in its quality. Otherwise they write the code again from scratch. This is also cheaper than debugging.
I dare to say it: 70% of the devs are not quality focused to start with. They are already happy if something, somewhat, sort of, works. And then not even ship a unit test with it.
The point of the article isn’t that AI is outright useless as a coding tool but that it lulls programmers into a false sense of security regarding the quality and security of their code.
Lulling them into a false sense of security is half of what makes it useless. The fact that it makes shitty code is the other half.
But the job of a software developer is not to write good code, it is to deliver features. People have been writing bad code without any AI for decades. Businesses often prioritize speed over quality, rewarding teams that deliver features quicker.
A computer lets you make more mistakes faster than any other invention with the possible exceptions of handguns and Tequila.
Now Even Faster™ with no exceptions thanks to “AI”
Now now, AJ may not know everything, but he’ll learn
No, it isn’t. Poor code quality peer review checks and QA policies are more to blame. We shouldn’t care how an individual developer generates a solution, it should be irrelevant whether they wrote it in reference to docs, copy pasted from stack overflow or generated by AI. I encourage Jrs to use AI as I think it can be a great problem solving tool, but you better understand what you’re submitting to PR otherwise you’re an absolute schmuck.
But are the shareholders pleased?
I’ve been laughing at this quote for 5 minutes straight
It’s so good
He knows he’s right
Also: I code sometimes, and all of my code is of masterpiece quality. I cannot debug my own code, I ask for outside help and we have to dismantle the NT kernel to find out what’s gone wrong
as opposed to human-generated code
no common sense allowed in this thread, sir. only AI hate bandwagon please.
But at least that crappy bug-riddled code has soul!
Good. Maybe if the stuff trashes enough of our infrastructure somebody somewhere will actually figure out that it’s bad and get rid of it forever.
I know, it’ll never happen. But a man can dream.
trashes enough of our infrastructure somebody somewhere will actually figure out that it’s bad and get rid of it forever
thinking Neoliberlism.
and here’s me learning C programming language from a selfhosted AI :/
It’s a great launching pad to learn how a language works, but beyond simple things, it get bad very fast.
I also use AI to look for terms in specific domains, which is really helpful as well.
If I was still in a senior dev position, I’d ban AI code assistants for anyone with less than around 10 years experience. It’s a time saver if you can read code almost as fluently as you can read your own native language but even besides the A.I. code introducing bugs, it’s often not the most efficient way. It’s only useful if you can tell that at a glance and reject its suggestions as much as you accept them.
Which, honestly, is how I was when I was first starting out as a developer. I thought I was hot shit and contributing and I was taking half a day to do tasks an experienced developer could do in minutes. Generative AI is a new developer: irrationally confident, not actually saving time, and rarely doing things the best way.
Even worse than it being wrong, is that by nature of the tool it looks right.
I’ve found they’re great as a learning tool where decent docs are available. Or as an interactive docs you can ask follow up questions to.
We mostly use c# and it’s amazing at digging into the MS docs to pull out useful things from the bcl or common patterns.
Our new juniors got up to speed so fast by asking it to explain stuff in the existing codebases. Which in turn takes pressure off more senior staff.
I got productive in vuejs in a large codebase in a couple days that way.
Using to generate actual code is insanely shit haha It is very similar to just copy pasting code and hacking it in without understanding it.
What setup are you using for junior devs to be able to query your codebase?
You make a good point about using it for documentation and learning. That’s a pretty good use case. I just wouldn’t want young developers to use it for code completion any more than I’d want college sophomores to use it for writing essays. Professors don’t have you write essays because they like reading essays. Sometimes, doing a task manually is the point of the assignment.
Eh, I’m a senior dev, and I don’t ban it (my boss, the director, does that for me lol; he’s worried about company secrets leaking).
In fact, we had an interview for a senior dev position, and the applicant asked if they could use AI, and I told them to use whatever tools they normally would for development. It shouldn’t come as a surprise that they totally botched the programming challenge because of it (introduced the same bug twice, then said they were very confident in the correctness of the code…), and that made it so much easier to filter them out from our hiring pool. If you’re going to use a tool in an interview, you better feel confident with it. If that dev had solved the problem significantly faster than our other applicants, I would’ve taken that to my boss to have the team experiment with it. We target budget 30 min for our challenges, and our seniors generally finish in under 20, and it took them more than our allotted time to get the code to actually run properly (and that’s with us pointing out certain mistakes the AI generated).
But no, I haven’t seen an actually productive use of AI for software development, beyond searching for docs online (which you can totally do w/ Bing or Google w/o involving our codebase). You may feel more productive because more code is appearing on the screen, but the increase in bugs likely reduces overall productivity. We’re always looking for ways to improve, but when I can solve the same problem in my bare-bones editor (vim) faster than my more junior colleagues can with their fancy IDEs, I really don’t think AI is going to be the thing that improves our productivity, actually understanding logic will. If someone demonstrates that AI does save time, I’ll try it out and campaign for it.
Anyway, that’s my take as someone who has been in the industry for something like 15 years. Knowing your tools is more important, IMO, than having more tools.
I had my suspicions before but the moment I realized for certain Elon Musk couldn’t run a software company was when he judged people by lines of code written.
Not trying to defend him, but I thought the reasoning behind doing that was to get the least obedient people to leave the company so that there won’t be a delayed push back from the employees.
In my experience working for almost 3 decades in software development, passive-agressive shit from upper management just causes the best people to leave (as they’re the ones who easilly find better jobs) leaving behind mainly a mix of the incompetent and those who never worked anywhere else (who are either already incompetent or will become so, as only ever having worked in just one company is far too narrow professional experience for anything beyond junior/mid level - you need to have seen more than one way of doing things to understand certain higher level concerns and choices in software development).
Sorry, I think you’ve responded to the wrong comment.
Yeah and I’d say these people left are exactly those Elon wants, he doesn’t want white guys in their 50s, he wants obedient young guys.
The one time some manager voiced such an idea, I very overtly in front of everybody offered to make “loop unrolling” software working at the source level (compilers already do it at the Assembly level in some cases for performance) for me and my colleagues to really boost that code line count (while totally screwing maintenability).
Mind you, all devs in that meeting were loudly against measuring performance by code lines, but I like to think that suggestion of mine really hammered down the coup the grace on that “brilliant” idea.
Ew, I would hate to be in charge of code reviews at an org like that.
The proper metric is success of the actual product. We have our engineers give estimates, then hold them to those estimates and evaluate based on consistency of on-time releases and number of production bugs. At the end of the day, predictable, high quality delivery is usually more valuable than faster time to market, unless you’re in a startup or something and just need to get early adopters on-board. Judge QA by defects discovered in production and devs by defects found by QA and in production. It’s really not that hard.
I’ve worked as a freelancer (specifically as a Contractor) in Software Development for over a decade and more often than not I ended up having to work with some existing code base, having to deal with the design choices, coding style and bugs of somebody else, often multiple somebody elses.
There’s nothing quite as “entertaining” as having to deal with 3+ different code and design styles in the same code base because all previous developer thought their own way of doing things was the superior way so just added one more layer of their style (not just coding but, worse, software design) on top of what was already there increasing the mess, rather than work within the existing structure and style and doing some refactoring.
Anyway, in my experience having to read, understand and work with existing code that you yourself did not made is way more time costly and less pleasant than actually doing your stuff from scratch.
I have a lot of empathy for a lot of people. Even ones, who really don’t deserve it. But when it comes to people like these, I have absolutely none. If you make a chatbot do your corporate security, it deserves to burn to the ground