6 ms·
Software Complexity Is Why AI Won't Replace Software Engineers
- exabrial 4y agoWriting code is the easy part. Requirements are the hard part.
- DoingIsLearning 4y agoRequirements are easy. 'Requirements elicitation' is the hard part.
- vba616 4y agoA magical form of artificial intelligence was invented that eliminates all this busy work. End users can now type whatever they can imagine into a computer and it will program itself. This miracle technology is called a "compiler". If this upstart AI is going to compete, people had better start testing it on the Linux kernel source rather than the SAT or bar exam.
- lagrange77 4y agoRight. You can see it as yet another level of compiling. For languages (natural ones), that are not constructed for this purpose and suffer from a lot of ambiguity and fuzzyness.
- vba616 4y agoI can't see it as compiling. It has nothing to do with compiling that I can see. If it did, then wouldn't it have been released as a compiler update?
- lagrange77 4y agoWhat about 'transpiling'?
- euroderf 4y ago> Requirements are easy. 'Requirements elicitation' is the hard part. Rephrased as: Requirements in your head are easy (or at least seem so); requirements expressed in AI-grokkable form are less easy.
- purple_basilisk 4y agoGood point about hallucinations - low accuracy, high confidence. I wonder if AI will develop the ability to nuance its own confidence. It would be a more useful tool if it could provide a reasonable confidence level along with its output. Much like a human would say, "not sure about this, but..."
- Robotbeat 4y agoI wonder if multiple, independently trained LLM‘s could be used in a voting system to determine confidence, or simply call out each others’ bulls**.
- deleted 4y ago[deleted]
- worrycue 4y agoIt needs to be able to evaluate its own output. We human do a quick sanity check most of the time before we speak - “On what do I base this assertion?” … etc.
- unknownsky 4y agoI'm not an AI expert so I could be wrong, but it's my understanding that there is a confidence score behind the scenes. It's just not shown in the current UI. An automated AI system should be able to ask a human for help whenever the confidence score is below a certain threshold or even spit out a backlog of all the tasks it can't confidently handle itself.
- ldjkfkdsjnv 4y agoI work on very complex software, and am basically using ChatGPT all day. I have somewhat stopped figuring how to do things like read from a file, serialize data, etc. Focussing on high level logic, and have chatgpt give me the code snippets I assemble together. Its still difficult, but its pretty clear software development is going to change
- ThorsBane 4y agoI can see myself using ChatGPT as a search assistant to help me with proof of concepts and snippets, but I would still manually write all of the code that I'm putting into production. So far I've not found a reliable predictable way to incorporate ChatGPT or Copilot into my daily workflows as a pair programmer or code generator. But for generating templates or snippets or helping me with documentation for proof of concepts...or being an amazing search friend with great abilities to format data for me, absolutely an amazing friend to have onboard.
- worrycue 4y ago> I have somewhat stopped figuring how to do things like read from a file, serialize data, etc. Shouldn’t that stuff be in a library or API call with examples a quick google search away?
- raincole 4y agoYes. And in my experience Bing Chat/Copilot are simply faster.
- scrubs 4y agoFor chuckles I asked ChatGPT to write me a sort function on integers. It dutifully served up code to call a library sort function. Technically correct, but I am and remain unimpressed.
- nomel 4y agoI think that’s more of a prompt problem. It answered in a realistic, and I would even claim “correct” way. You should not be writing a sort by hand in 2023. If you don’t want it to use a library, ask it to not use any library calls. And, of course, ChatGPT 4 gives much better results.
- NoPicklez 4y agoThese titles are the exact titles I expect to laugh about in years to come.
- outofpaper 4y agoYes, it's like when people were saying blacksmiths would continue to exist. They do albeit at very reduced numbers. In their place we have mechanics. It will be the same in other industries.
- inconceivable 4y agomechanics, welders, CNC operators, CAD operators, industrial designers, materials engineers, metallurgists... really it was an explosion of roles once the technology was there.
- gwoolhurme 4y agoThis is the positive take I hope to see with AI. Because yes, blacksmiths no longer exist, but all the professions you named above have their roots in smithing.
- euroderf 4y agoLet a thousand varieties of codesmithing bloom !
- ChatGTP 4y agoOn the other hand, a lot of jobs that were supposed to go away exist still, people just get paid less and no one really cares about them because they're not promising to eradicate hunger in Africa, which is also a job that shouldn't exist but still does mind you. So laugh all you like.
- turtleyacht 4y agoPrompt OS: prompts so huge and chained in convoluted contexts, accreted over a generation of ChatGPTs, backwards-compatible to other models, the text file is megabytes in size. ChatGPT gets an import statement. Prompt Engineers will have to maintain that. It will be written in a nightmare of English, without comments, and heaven help what it means for the tool to "break production." The reference manual contains a chapter on Forbidden Phrases, but it's marked up on paper, scrawled and crossed out by various predecessors. Initialization is invoking special phrases, runtime feature flags, to disable whatever behaviors were previously tagged. Yep: we humans will need to tag behaviors of the AI to describe what is happening, without the benefit of breakpoints. Where are the breakpoints, anyway? What's our `gdb` of ChatGPT, I wonder.
- cyanydeez 4y agoEh, scapegoating is why software engineers will still exist.
- QuadrupleA 4y agoThe whole premise seems off. The article claims that AI could only ever help with code editing/typing, and not with navigating, understanding the codebase, etc. Which current AIs can already do to some extent. And therefore, according to major-citation-needed pie chart, editing code is only 5% of the job, thus AI will always and forever only be able to save us 5% or less of our time. Seems pretty wooly.
- ChatGTP 4y agoLet's not pretend that there isn't some truth to software complexity though, and let's not pretend that the faster we can copy pasta solutions into codebases using "AI", the more complexity we'll likely be introducing. A 10x productivity increase could introduce a 10x+ complexity increase. One reason I think ChatGPT is so impressive is because it's remixing and suggesting code, from already well structured code bases, functions etc, calling on well designed libraries etc. My gut feeling is that MS have allowed all of Github to be "sampled", which is why the code ChatGPT is serving up seems to "familiar". Unless these models start to actually improve the code, ie suggest better, less complicated paths and architectures, there is a chance software will go backwards to the point where just getting LLMs to pattern match a change into a 500,000 long line codebase of auto-generated, randomized solutions stops working, then of course, we'll need a "bigger" model to grok it all, explain what the code is doing etc. We could call it "drift" or similar, but I think the fact we write code that is easy to understand for others, including LLMs is actually a feature and not a bug. Anything "cognitive" would have to agree at some stage, unless we have unlimited cognition, for every code change available, which is honestly a fantasy at this stage. I might be wrong, and I'm happy to be wrong, but this is probably the best time in history to be using auto-completion for coding. There's plenty of well thought out, nice training data available, I don't think that will hold water if we just get copy-pasting, neglect using nice libraries etc. One interesting example I saw recently was someone showed me how they were using ChatGPT-4 to check their code for vulnerabilities, it actually did quite well, albeit it was very basic / best practices stuff everyone should know that needed fixing. Then i watched someone else in a different context, use it to generate code, that was vulnerable and susceptible to the same problems. We could automate the vulnerability checking (many people already do), but then it becomes an interesting back and fourth between systems writing and fixing code, at some stage it probably becomes inefficient to do this in it's own right. Brute forcing.
- mycall 4y agoThe first lesson in CS101 is divide and conquer. Once the LLMs start doing this from needs assessment, iteratively breaking down each problem to be small enough to become functional in description, I could see them begin to create working large prototypes or solutions. Perhaps genetic algorithms will fine tune the code produced (and quickly).
- steve_adams_86 4y agoI’m not sure I agree. Over the last few days I’ve been cobbling together a little service which asks GPT to identify issues with code, then if it can generate solutions, the service attempts to apply the solution and run the code. I’ve been learning to dial in prompts and finding this truly is a major factor of the job that needs to be just right. I went from unreliable response formats, hallucinated solutions, naive solutions, and so on all the way to fairly conservative, pragmatic, consistent responses. My success rate isn’t as high as I’d like, but I find it absolutely remarkable. My key takeaway so far has been that a lot of perceived limitations are in fact a lack of exposure to what effective prompting makes possible. Another feature that’s powerful yet overlooked is what recursive prompting can accomplish. This is what makes me think complexity might be overcome in the not-so-distant future. For example, if I apply a solution and it breaks something else, I can then reform a prompt based on the previous prompt along with a new one informing it of what went wrong. These little recursive exchanges have actually yielded useful results in multiple tests. That’s a huge deal in my opinion; this is totally automated by a smooth brain like me. As token limits increase and the models become more capable, I suspect this tool will actually improve without me changing much. I suspect it could still work quite a bit better and more efficiently if I could more succinctly provide context about the code in my prompts, too. That would overcome token limitations for the time being and likely improve accuracy quite a bit. So, if things like this are possible already… I have a feeling we’re going to overcome the complexity issue sooner than it currently seems.
- turtleyacht 4y ago> dial in prompts > effective prompting... recursive prompting It feels like you are massaging a giant library of macros :) The way you describe interacting with GPT by iterative attempts, constructing working primitives is pretty much programming, right? AI might get more folks into computer science, or even programming; more hackers, more inquisitive minds, and maybe--just maybe--this "assault on complexity" earns some real victories.
- adave 4y agoSo you are converting your code into english and then asking GPT to convert it back to code? Might as well right the code at that point.
- lincpa 4y ago[dead]
- blumunk 4y agoInteresting ... I wonder if a good analogy would be to the music "industry". Without even diving into the potential impacts of AI, the building blocks of music that are available to folks wanting a music product, along with the tools to piece them together into that product, have become so sophisticated that what it means to "make music" is fundamentally different today than it was 5, 10, 15 years ago (let alone 20, 30, or 40 years ago). Today there are musicians who play instruments or compose music in "traditional" ways, and there are other composers who have maybe never touched a piano, but are very adept at assembling high-level building blocks. Both are musicians, though their skill sets might overlap in only the most basic of ways. Both can write/deliver music. But the one whose expertise is centered around assembling high-level blocks can only make certain kinds of edits, changes, and fixes. The challenge in education and implementation becomes: as these creation toolkits become more integrated into the way we learn how to make music (or code), do we remove opportunity for folks to develop skills at a deeper level? Do we end up with a big but shallow pool of talent, as opposed to a smaller but deeper pool? (I fully recognize here that this is a question that might apply to any "shortcuts" introduced into any skilled field of work)