Ask HN: Is AI-Assisted Coding the Start of the Death of Software Development?

34 points by flyingsky ↗ HN
Been messing around with ChatGPT & I am sincerely amazed! I am wondering what the future will look like a couple years from now when these LLMs improve . Also, What fields do you think will be safe from the AIs

63 comments

[ 3.1 ms ] story [ 122 ms ] thread
as long as neural networks are not sentient developers should be safe because most of our work is not actually writing a code (even if its not CRUD but an actual R&D its usually simple and built on top of simple concepts) but understanding what owner/customer/boss/etc wants, planning and adapting the architecture and generally "seeing the future" to make something that will be expandable, upgradable and maintainable. GPT can't really do that (for now) and in the far future when the A.I will be advanced enough we will probably be the ones who'r writing promts and moderating the outputs
Maybe. It surely has to potential to eliminate the "hero" team setup (1 senior + n juniors doing all the boring stuff), which means people won't get junior jobs and seniors will thin out eventually. So, yes, maybe indeed the death of software development.

Or it could transform swdev into an AI-centricindustry where people take care of everything the AI can not.

That made me smile, I think a few teams may drop the juniors and keep the seniors but there's going to be a bunch of places that drop the seniors and proceed with an army of juniors equipped with GPT helpers.
> What fields do you think will be safe from the AIs

A new arm of Government will develop to regulate A.I. --- a need Elon M has been crowing about for some time. There's talk of writing spec for Wario bots along a gradient of danger levels.

No, because as good as it is at boilerplate, the domain specific stuff eventually becomes extremely important.

And without coding skills, that boilerplate will break or fail to get stitched together, too.

I absolutely see it making some parts of the development process vastly more efficient though.

I imagine over time, It will get better at even the domain specific stuff, No?
Sure but then we can replace nearly all non-manual professions.
It's creating a new market for consultants called to fix codebases written with an AI.
No. Software does not scale linearly.

I.e. 10 LOC -> 100 LOC -> 1000 LOC -> 10K LOC -> 100K LOC.

I failed to see AI moving behind 1000 LOC. I.e. 10*100LOC << 1000LOC.

Also, the AI is statistical, it does not have any notion of the real world. I.e. he might know how to write a function, but it does not know why you need the function.

To me it is like saying "AI can recognize faces but it can never be creative and make art".

That is true until it is not. As a long time art lover, I have seen more amazing art randomly generated on my own machine in the last 2 months than I could see at any art gallery near me.

I think we underestimate how statistical creativity is. For human artists and musicians we just call them influences.

Of course humans will still be involved in the loop but the productivity of one human is going to utterly explode this decade when it comes to knowledge work.

You need to separate creativity from logic.

One is subjective the other one is objective. To create something objective you need to understand the current world state, and this AI does not understand it.

I.e. this AI (might) work if he had seen all the possible states of the world , and their next state.

> but it does not know why you need the function.

Seen that many times in humans, too.

One place, we were upgrading the data storage in an app from a custom file format to a local database, and on some files the transfer process from old to new was taking 20 minutes. The other developer absolutely insisted it was as fast as it could possibly be, even though (1) the app loaded the data almost instantly when it was plain text, and (2) likewise after the data had been transferred to the database.

I looked through the transfer function and the tree of other functions that it called in turn, found it was trying to de-duplicate some data, asked the CTO if we cared about this, CTO said no, I removed that function, and measured the new time to transfer that specific data as, IIRC, 200ms.

My uncle started coding at a young age with punch card programming. He says that a developer was at least a hundred times more productive at the end of his career than in the beginning. And still, it did not result in the death of the programmer.

We are a long way from AIs that can operate independently. And until then the AI will just be a productivity tool. Maybe we will all become a hundred times more productive, and it will still not be the end of the programmer.

The real threat that I see is that the AI will leave the boring part to us: The code review of AI work. If I see this development I will plan for an early retirement.

I think the AI will actually leave us with the exiting part instead. I'm already seeing this with CoPilot and ChatGPT.
I was really hyped when I asked ChatGPT to write some classes to encode some data, everything seemmed magical when the code was outputing and making sense to me at first glance.

But when a tried it didn't work and spent an hour tryin to fix it.

Then I decided to write my own code and stop wasting time.

I don't usually copy blocks of code they produce verbatim, it's either line-by-line work (CoPilot) when I check every line - the same way I check my own lines - or I just take rough ideas (ChatGPT). The main good thing is - it makes me think more about what I'm doing, like a second mind (granted not a very bright one, but with a vast knowledge database).
At one of my very first programming jobs (during the first dot com boom) an older developer took me aside and said “I’m going to tell you the single biggest productivity enhancer I learned in my entire career, ‘always number your punch cards’”.

I think he meant it just as a joke but it’s actually stuck with me as pretty valuable. At one point in his career being a programmer was as much about manipulating paper cards as it was systems thinking.

At some point in the future manipulating text may not be a central job of a programmer, but I doubt systems thinking gets replaced anytime soon by currently understood technologies.

I remember people claiming intellisense style code completion would be the end of developers, but I’m sure there are more developers now than when it was introduced.

Have you tried to use GPT with some specific requests for functions or classes? Then if you find an error, just tell them to fix it?
Ok but where is the AI that generates me those specific requests and finds the error and then tells the AI to fix it?
> The real threat that I see is that the AI will leave the boring part to us

Do you enjoy writing code just for the sake of writing code? The thing I enjoy about programming is the results of the programming. Code is just the language I have to speak in order to get the idea that's in my head onto the computer screen. If I could just speak English and have the same result, I would be just as happy.

Interesting. I was going to say something trivial like making the AI insert semicolons and fix typos in sloppily written code but now I wonder if this AI can be used to detect undefined behavior just by throwing the Linux kernel source into it.

Maybe it could be used to decompile code and automatically give it meaningful variable and type names.

In general AIs tend to be overhyped and tend to underdeliver when faced with the real world. I think AI in this field is no exception. It will be able to do the simple stuff better and better, but levelling up to the complex parts of SE (like turning complex requirements into functionally correct code) is probably very far away indeed.
The way I like to think about AI is to think about it in 3 dimensions.

There are 3 dimensions to any machine: input, implementation, and output. So something like DALLE has very impressive implementation-level intelligence. But as everyone knows by now, it still takes a crafty human to create the necessary input.

In my opinion, “turning complex requirements into functionally correct code” is an input problem, and I think AI has a loooong way to go on that front.

I doubt it in near term, because frankly, the people who ask for or design features frequently aren't very good or always logical. Someone who could prompt or specify the real business need would end up being an engineer/developer of some sort.

Mindless stuff like "add a column with birthdate in it" could be automated though.

I say this because look at some the garbage software produced by real humans/contractors that actually have reasoning capabilities, and it's still buggy and terrible.

Also I would add until AI can debug what it wrote? I doubt it. The current set generate things that look good. But will have interesting bugs. Until it can debug it, it will be a handy tool for developers to use though to 'get it close'.
(comment deleted)
It depends if you mean software development as in building software or "Software Development" as in the bloated and ridiculous industry that has evolved around building software.
I think it will come for the low hanging fruit first. Thing of all the simplistic code that gets outsourced to India. Banking applications, general mobile apps, internal time trackers, internal resource management tools, etc. It is going to reduce the costs of creating/maintaining those run of the mill business applications.

As you get more specialized, there is less example code, thus the AIs do worse. As you move to the cutting edge, there is almost no example code.

So things that have been done thousands of times, will get eaten by the AI coders first. Then it will move up the value chain, how fast it isn't clear.

(comment deleted)
How well does the AI on stuff that you would not find implemented online or in its training data?

Another important question is about scale, making a thousand times a 10 line application is not the same as making one 10000 lines application. How good will the AI be at that?

Right now it is the same as "googling the answer", just faster. Which is impressive, but far from career ending.

I think another important aspect is that a lot of SW development is building upon already existing code bases. One benchmark for an AI would definitely be its ability to take in an entirely novel code base and make edits to it. I would guess that any current language model, no matter how well trained can achieve that. The tendency for it to invent by itself seems to make that destined for failure.

>Also, What fields do you think will be safe from the AIs

Any industry which is more than a bit hesitant about change. E.g. aerospace and defense.

yes and it should have been a long time ago. You need to see AI's as frameworks and then we will go from there.

No job will be safe and thats a good thing. People value themselfs to highly and i bet from experience all of us know at least one guy who could have been easily replaced with a shell script.

That is not meant in a way that that person is not able to do other things or is impaired in anyway, buutttt imagine how many jobs in general could be replaced by very small shell scripts. Coding aint gonnna be any different.

Not disagreeing with your experience, but I personally can’t think of anyone who could have been replaced by a shell script. Although, my work history is mostly startups. I’d imagine there is some cruft at larger companies.
“Some cruft” is quite an understatement. Years ago a large client was moving HQ locations and expected to lose about 20% of its staff in the process. My team was tasked with documenting business processes for different departments. Basically what people did on a regular basis, the tools they used, inputs and outputs with other departments, etc. Easily 15% of the roles (not processes, the full job) could have been replaced with some basic scripts and off the shelf tools. Entire sub-departments were basically cruising doing as little as possible to collect a paycheck, mostly copy-pasting stuff between spreadsheets, Word docs, and PowerPoint presentations.
Interesting you mention people who could have been replaced by a shell script, but presumably weren't?

So can we conclude that if coding won't be any different, there will still be a lot of humans who could be replaced by an AI, but won't be?

Healthcare will probably be safe for the foreseeable future (not a long period these days). This is because (1) current AI models need an enormous training set relative to humans, and (2) medical information is treated with relatively high levels of confidentiality, making it difficult to get a training set big enough for current AI to become really good with.

There will be specific exceptions with specific medical tasks, though I can’t really forecast which or how many tasks. Being able to triage arrivals at A&E based on their symptoms is different from having a database of known pharmaceutical interactions, and both are very different from being able to tell which mole is cancerous and which is benign.

But overall, I expect the domains with limited or absent training sets to be those that go longest before being automated, and I think medicine has a lot of specific tasks in that category.

> This is because (1) current AI models need an enormous training set relative to humans

They need an enormous training set compared to humans because they can do a lot more than any single human. The breadth of knowledge that ChatGPT can synthesize across all sorts of subjects from politics, to poetry to programming would need at least 1,000 humans working in concert.

I'm not sure a training set specifically tailored to healthcare would need to be quite so large.

Not only, but also. I tried training a facial expression classifier on one of the Kaggle data sets, and although it passed against its own self-managed test set, it thought absolutely every real-world example (not from the Kaggle set) was a smile.
The density of information that needs to be processed matters. Images, video and audio are all very information dense with potentially low signal-to-noise ratio, differential diagnosis on the other hand could be done with a text description of the symptoms which is an input with high signal to noise ratio (a text description written by a medical practitioner is even better).
No, it will probably yield much better tooling, so with the same manpower you can build much larger systems.
and bigger bugs. Interesting times indeed.
We also though that with phonographs people wouldn't go anymore to concerts
The string of developments that started with the phonograph have ended the generational handing-down of musical and vocal cultural artifacts, and have degraded music to the endless repetition of the same fixed recordings.
hahaha i dont really know if its true, but yeah. I was listening to the "newest" in eletronic music recently and was noticing how 80% of it was remixes from the 90 :D
I look forward to that day. More like giving you superpowers to get the mundane stuff out of the way.
Most of the code I write is highly focused on the APIs and concepts specific to my own company. Anything general enough to be amenable to ChatGPT I feel I could generally get from a third party library or StackOverflow. Maybe it will replace StackOverflow? But if it does, where will it get the next generation of answers from?

I do see lots of positives and use cases for more narrowly defined tools that help the programmer and make him/her more productive and powerful.

For example, I've been playing with a new Terminal app (Warp) the lets you type plain English at the prompt. It then translates it to the proper bash command using GPT3. It's brilliant, it works, and it doesn't put me out of a job. It just makes me more productive and more able to focus on the problems specific to my company.

I think it’s the end of all the jobs.

The job of most programers is to understand a problem and to create a few kb of text per day. On this front GPT is already a million time more productive. Maybe it doesn’t understand all the subtleties, but I don’t see a reason why it can’t.

But if you look at most office, the job of people is to shuffle a few kb of text per day. Email to customers or suppliers, a bit of documentation, etc.

Add an humanoid robot for the manual tasks and one or two year of improvement of the AI.

No, this will just lead to more software being developed, with more requirements for devs. Jevon's paradox, perhaps.

It's like any tool, it multiplies the effort of a designer. Previously we had shovels, so we needed a lot of healthy guys to shovel dirt. Now we have earth movers, and we use a more trained person to operate it. But it also means there's a lot more projects that become viable, so more people will end up getting sucked into them.

Personally I'm looking forward to being able to specify software without having to deal with minor issues like forgetting what to import, off-by-ones, and that kind of thing. I can spend more time thinking about the requirements.

Make sense. We could be like architect of a 1000 programmer company. Specify what you need, see the result, improve the requirements, get a new version, etc.
It's going to be a tool to help developers get things done faster for a while. Stuff that has been done a million times and has lots of stack overflow posts will be easy for AI to "get". Asking it to develop an application to very specific requirements (ie, specific data queries, specific UI designs, interacting with internal company services, etc) is not going to work so well and programmers are still needed. Personally I would love if I could just feed in a bunch of specs and requirements and have a program be spit out for me to review. I wonder if we could train an AI to take a bunch of test cases and a description and it could generate the code that passes the tests (ie TDD).

Could AI reduce the need for programmers? Probably.. I could see some "low code / no code" services built around AI. They could make their own programming language and/or training data in a specific domain to be more easily digestible by a LLM.

I think the situation for programming is pretty similar to the AI art situation, tho arguably programming is the more difficult problem.

You can give ChatGPT tests and ask for code that passes them. Same with specific data queries and specific interactions with APIs.
It's kind of just an ide on steroids. You'll probably still need someone to make sure the code _actually_ does what is supposed to. Also, interfacing with weird APIs or writing drivers for physical hardware where you need the datasheet to know what to do are probably still far away from being outsourced.

I'm more worried about everything becoming even more of a buggy mess than it already is. Wonder how good something like this can get at predicting weird edge cases.

I think there are two roughly important rates to consider here:

1) Peter Thiel’s 10x improvement concept from Zero-to-One.

2) The exponentially increasing rate of AI research and improvement.

additionally, a third point is relevant:

3) Max Tegmark’s idea that the best AI agents will have been generated by AI.

I think we’re seeing an ‘intelligence’ explosion begin to rustle from its sleep. It’s difficult to predict when it’s coming, but I don’t think SE’s are the ones with the safest jobs. The inflection point will be a ChatGPT that costs $10k/yr to run, as that’s basically a 10x improvement in the cost of devs.

Yes, AI will no doubt relieve Software Developers from the tedious task of glueing together existing libraries to solve clearly definable problems.
It's the death of the boilerplate code. Ai is just statistics, remixing code that was written before. It will not be able to produce new ideas.
I don't think this is quite correct. Current AIs can consume two difference concepts that have never been combined, and then combine them semi-coherently. That would be considered somewhat novel if a human did it.

I'm also not convinced that "new ideas" are not also just statistical reasoning, so it too could fall to AI advancement.