104
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
this post was submitted on 11 Sep 2023
104 points (68.7% liked)
Technology
60130 readers
2751 users here now
This is a most excellent place for technology news and articles.
Our Rules
- Follow the lemmy.world rules.
- Only tech related content.
- Be excellent to each another!
- Mod approved content bots can post up to 10 articles per day.
- Threads asking for personal tech support may be deleted.
- Politics threads may be removed.
- No memes allowed as posts, OK to post as comments.
- Only approved bots from the list below, to ask if your bot can be added please contact us.
- Check for duplicates before posting, duplicates may be removed
Approved Bots
founded 2 years ago
MODERATORS
The difficult part of software development has always been the continuing support. Did the chatbot setup a versioning system, a build system, a backup system, a ticketing system, unit tests, and help docs for users. Did it get a conflicting request from two different customers and intelligently resolve them? Was it given a vague problem description that it then had to get on a call with the customer to figure out and hunt down what the customer actually wanted before devising/implementing a solution?
This is the expensive part of software development. Hiring an outsourced, low-tier programmer for almost nothing has always been possible, the low-tier programmer being slightly cheaper doesn't change the game in any meaningful way.
Yeah, I'm already quite content, if I know upfront that our customer's goal does not violate the laws of physics.
Obviously, there's also devs who code more run-of-the-mill stuff, like yet another business webpage, but those are still coded anew (and not just copy-pasted), because customers have different and complex requirements. So, even those are still quite a bit more complex than designing just any Gomoku game.
Haha, this is so true and I don't even work in IT. For me there's bonus points if the customer's initial idea is solvable within Euclidean geometry.
Now I am curious what the most outlandish request or goal has been so far?
Well, as per above, these are extremely complex requirements, so most don't make for a good story.
One of the simpler examples is that a customer wanted a solution for connecting special hardware devices across the globe, which are normally only connected directly.
Then, when we talked to experts for those devices, we learnt that for security reasons, these devices expect requests to complete within a certain timeframe. No one could tell us what these timeframes usually are, but it certainly sounded like the universe's speed limit, a.k.a. the speed of light, could get in our way (takes roughly 66 ms to go halfway around the globe).
Eventually, we learned that the customer was actually aware of this problem and was fine with a solution, even if it only worked across short distances. But yeah, we didn't know that upfront...
If you just let it do a full rewrite again and again, what protects against breaking changes in the API? Software doesn't exist in a vacuum, there might be other businesses or people using a certain API and relying on it. A breaking change could be as simple as the same endpoint now being named slightly differently.
So if you now start to mark every API method as "please no breaking changes for this" at what point do you need a full software developer again to take care of the AI?
I've also never seen AI modify an existing code base, it's always new code getting spit out (80% correct or so, it likes to hallucinate functions that don't even exist). Sure, for run of the mill templates you can use it, but even a developer who told me on here they rely heavily on ChatGPT said they need to verify all the code it spits out, because sometimes it's garbage.
In the end it's a damn language model that uses probability on what the next word should be. It's fantastic for what it does, but it has no consistent internal logic and the way it works it never will.
Mate, I've used ChatGPT before, it straight up hallucinates functions if you want anything more complex than a basic template or a simple program. And as things are in programming, if even one tiny detail is wrong, things straight up don't work. Also have fun putting ChatGPT answers into a real program you might have to compile, are you going to copy code into hundreds of files?
My example was public APIs, you might have an endpoint
/v2/device
that was generated the first time around. Now external customers/businesses built their software to access this endpoint. Next run around the AI generates/v2/appliance
instead, everything breaks (while the software itself and unit tests still seem to work for the AI, it just changed a name).If you don't want that change you now have to tell the AI what to name things (or what to keep consistent), who is going to do that? The CEO? The intern? Who writes the perfect specification?
Management and sound technical specifications, that sounds to me like you've never actually worked in a real software company.
You just said what the main problem is: ChatGPT is not perfect. Code that isn't perfect (compiles + has consistent logic) is worthless. If you need a developer to look over it you've already lost and it would be faster to have that developer write the code themselves.
Have you ever gotten a pull request with 10k lines of code? The AI could spit out so much code in an instant, no developer would be able to debug this mess or do a code review. They'll just click "Approve" and throw it on the giant garbage heap whatever the AI decided to spit out.
If there's a bug down the line (if you even get the whole thing to run), good luck finding it if no one in your developer team even wrote the code in the first place.
You misunderstood, I never said management is worthless. The product managers know what customers want. The product owners keep 8 out of 10 dumb ideas away from the development team. And management again leans on the development team to find out what is actually technically possible and in what time frame.
If management just threw every customer wish into a magic black box to get code out, even if that code was perfect, you wouldn't have a product. You'd have a pile of steaming crap.
I've done plenty of code reviews, they only work if they are small human readable increments. Like they say: A code review of 100 lines might take an hour. A code review of 10000 lines takes thirty minutes.
AI would spit out so much code with missing context for the developer, it would be impossible to properly review.
You really don't get the issue. Give real developers pull requests with 10, 100, 1000 and 10000 lines of changed code. I promise you, 100% that the quality on the latter two pull requests will be abysmal. No matter how good you are as a developer, you can be the best of the best, after a few hundred lines of code you're unfamiliar with you'll overlook obvious issues.
And let's be honest, most developers will try to quickly get it done, read over it, hit the approve button and go back to their own work. This is how it works in the real world.
A small pull request with 10 or at most 100 lines will get a lot more scrutiny where developers actually have the mental capacity to think and reason about the code and its context.
If you let AI write a full system, or even a full module at once, spitting that code out, you'll get large pull requests. Too large to do a meaningful review. It's like if I threw you a pull request right now for a software you're not familiar with and it's 2000 lines of code. How well do you think you'll do?
You can't have your cake and eat it too. The entire point of AI would be to off-load the development work. You write a specification, throw it into the magic AI box, then get a working code base out.
Why the hell would you invest ten times the amount of organization work to break every feature down into small human sized parts? The AI doesn't need bite sized tickets like humans do, you can throw a complex 100 page specification at it and get out working code an hour later. But you'll get out 100k lines of code at once in that case.
You're treating the AI like a junior developer, give it tiny tickets it can work on, then let a human review the work. The human will do badly because they have no context (they'd have to read the entire specification first, then read the pull request, then try to reason about code that a machine wrote). Reviewing code is always more difficult than writing it, the writing part is easy.
Which is why plenty of companies merely pay lip service to it, or don’t do it at all and outsource it to ‘communities’
Absolutely true, but many direction into implementing those solution with AIs.