Discuss HN: Software Careers Post ChatGPT+
Some threads that come to mind:
- Are these language models better than current offshore outsourced coders? These can code too, sort of, and yet they don't threaten the software industry (much).
- What would SEs do if any layperson can say "hey AI slave, write me a program that..."? What would we, literally, do? Are there other, undersaturated professions we'd go into, where analytical thinking is required? Could we, ironically, wake up in a future where thinking skills are taken over by machine, and it's other skills - visual, physical labour, fine motor skills - that remain unautomated?
- Are we even the first ones in the firing line? Clearly, for now AI progress is mostly in text-based professions; we haven't seen a GPT equivalent for video comprehension, for example. Are lawyers at risk? Writers?
- What can SEs do, realistically, to protect themselves? Putting the genie back in the bottle is not, as discussed many times in other threads, an option.
- Or is it all bogus (with justification), and we're fine?
No doubt ChatGPT will chip in...
147 comments
[ 4.2 ms ] story [ 229 ms ] threadChatGPT+ will definitely have some affect on junior devs but us more experience folk should be fine... for now..
First you'll cut the bottom 10%, then the bottom 20% etc. The pie will only be shrinking.
The point is exactly that most of those meetings are happening everywhere for the same reason and thus GPT25 might already know all the answers that you need.
Also given enough general framework skills, I'm pretty sure the AI will be able to build stuff like a good junior dev.
It can generate something that looks like what a person would have wrote based on its compressed probabilities, but that's very different from being an "an artofficial intelligence". At best it's a Chinese Room.
Im pretty sure we could train an AI to suggest the correct API for the intended purposes. Given the fact that we have support of datatypes and documentation what is left to do is to map what you have to what you want.
Also we can reasonably generate classes and controllers already through cli, so why not combine all the nice things we have to something usefull.
Kubernetes is simply an api too
With some framework to compose various prompted endpoints using the same types and conventions, a junior engineer would be totally unnecessary. They couldn’t code as well, and they couldn’t architect as well as a more experienced engineer doing the prompting.
You could even prompt from a spec and begin iterating upon the outputs, revising each manually or with GPT’s suggestions. Say “take this endpoint and refactor it based on the conventions of this endpoint, and make sure (some logic) accounts for (some potential problem)” and boom, it will probably work okay.
If this technology evolves to be able to reliably generate working code to a prompt, the entire field of software dev will shift dramatically. Some junior and some senior devs would prove better at meeting deadlines by AI whispering, and others would have to find new career paths.
It affects both. If a single team was to be split with 5 juniors and 5 seniors, ChatGPT significantly reduces that headcount from 5 juniors to 0, and 5 seniors to 2 or 3.
With many companies cutting costs and with the cheap money getting dried up, no-one is safe. HN may not like it but, the same thing that has happened to digital artists with Stable Diffusion which was welcomed on this site, now has happened to programmers and I see lots of worrying and frowns everywhere.
It appears that StackOverflow (which lots of juniors and senior developers use) has just become irrelevant.
Citation needed. I haven't heard of any massive disruption in the commission art market since stable diffusion went public, and I don't think something less-impactful(a different way to search old stack overflow posts) is going to cause a massive disruption either.
Stack overflow still beats chatgpt in one area that it can never compete. Coming up with new solutions to new questions. If all we needed answered was the same questions, chatgpt would be sufficient since it's essentially a compressed version of our current knowledge. We don't really have a way to update it with "new knowledge" other than "train it again".
I once spoke to an illustrator who said her work was definitely shrinking due to low cost human competition, so much so that she was leaving her profession. I can imagine this did in fact get worse.
Luckily we're in tech, which doesn't work this way at all.
One thing about GPT is that it only knows what we know at the moment. That indicates to me that it won’t be great for learning new technologies until humans generate content it can regurgitate. That alone might give juniors an edge against it (assuming they are gradually replaced by a robot pooping out dumb logic) - they might be able to specialize in learning what models don’t yet know, or what they can’t be good at.
Just guessing here. I’d love to hear a rebuttal to get a sense of where people think things are going.
Though I don’t think GPT is “there” yet, I can see it getting there by 2030. I think it’s seriously worth considering: how will people learn to program in 10 years, how will they remain relevant through periods of their career where an AI can generate better solutions than they can, and how will more experienced engineers adapt to those changes?
Two things happened: one, blacksmithing effectively was taken over by a different skill, that of configuring, servicing and operating industrial machines. There were no junior or senior blacksmiths anymore, seniors probably migrated their knowledge, and the whole field was taken over by non-blacksmiths.
The other thing is that a small proportion remained. Initially perhaps for niche goods that were too difficult or uneconomical to automate. Now blacksmiths do exist, a bit like craft coffee blenders and horse trainers. But the industry was nonetheless wiped out.
Will we see that crafting software will become a job for people trained in AI whispering? Perhaps they will never, or hardly ever, write any code, but will train extensively in software design. Much as a metallurgy engineer might know all crystalline forms of steel but have never swung a hammer.
Day 1 these jobs would likely get filled by senior devs, but there may be no new devs, junior or senior, except for niche applications.
As many of us cannot read machine code and hex anymore many of the juniors won't be able to parse the code output - but it may not matter anymore.
The obvious conclusion is that you're gonna need less engineers overall and especially on the junior and mid level.
At least I will be able to build some cool software on my own or with a small team!
Position yourself to be at the open of the next door. :)
Interesting angle is testing where successfully tying a "real program" to one of these AI tools would look a lot like a fuzz tester. Possibly a better one than the current state of the art.
Philosophically I'm not hugely worried about automating the wisdom of Wikipedia and Reddit for mass application. Seems more likely to rot than improve itself. But we'll see.
It is certainly possible that in the future, language models like GPT-3 could become advanced enough to compete with human programmers. However, it is important to note that these models are still limited in their capabilities and are not yet at the level of human programmers.
At present, offshore outsourced coders do not pose a significant threat to the software industry, and it is unlikely that language models like GPT-3 will be able to fully replace human programmers anytime soon. However, it is possible that these models could be used to automate certain tasks and make the work of human programmers more efficient.
If language models were to become advanced enough to compete with human programmers, it is likely that software engineers would need to adapt and develop new skills in order to remain competitive. This could include focusing on areas where language models are not yet advanced, such as visual and fine motor skills.
As for protecting themselves from potential automation, software engineers can stay up-to-date on the latest technology and continue to develop their skills in order to remain competitive in the job market. It is also important for the industry as a whole to advocate for policies that support workers and ensure that they are not displaced by technology.
Overall, while it is possible that language models could become advanced enough to compete with human programmers in the future, this is not currently the case. Human programmers still have a valuable role to play in the software industry, and it is important for them to continue to develop their skills in order to remain competitive.
It does a pretty good job with factual questions, in my experience. It gives good, if shallow, answers about history.
But I mean if you ask it for opinion or analysis, of course that's silly. It can't analyze anything.
In addition to classically trained, self-taught, we're going to have AI-taught programmers. There will be some curious cultural differences there.
We're the old guard now: "Listen kiddo, in my days, we had to google for stuff! We were lucky if there was any documentation to read, manually!"
Currently it can work at function level, and can make reasonable modifications to existing code (sometimes buggy, but that may be fixable with a larger model and better training data).
The current chat UI isn't suitable for working with larger codebases, but it seems within realm of possibility to extend it to be an IDE like CoPilot with tooling that feeds it your whole codebase and documentation to work with.
A simple example, and not 'perfect', but it's quite impressive. Even a simple case of throwing your code 'over the wall' to the AI for review before going to an actual person is a huge time-saver.
The token size limit is the killer here, it means larger files, let alone projects, can't be fully processed in a single prompt.
Initial code produced: ``` def sum_of_digits(n):
```I didn't save the exact code review, but essentially it was just a list of suggested code changes. The prompt was:
``` prompt = f'Python3. Act like you are a senior engineer writing a code review comment on the code. Write at least two specific changes to make, being sure to check for any errors first: {prompt}. Be as concise and correct as possible, and also be sure to write in a way that is easy to understand.
```
The resulting output code was:
``` import unittest
def sum_of_digits(n):
# Unit tests using built-in test suiteclass TestSumOfDigits(unittest.TestCase):
if __name__ == '__main__':unittest.main() ```
Edit: trying to cleanup hn formatting for readability
HN code formatting is simple, prefix each line with 2 spaces and then you don't need any extra blank lines like with normal paragraphs.
``` does nothing, it's just noise here.I felt kind of offended by this biased view (especially the “sort of" part). Just because one is not from the same country as the OP, it doesn’t mean they are any inferior.
I'm talking about outsourcing software to the lowest bidder - who is almost always "somewhere" abroad. And isn't really a competition to a skilled SE.
Rephrase it how you like, but it's a real effect.
I bet it has (or can have) a similar level of capability when it comes to chemistry, biology, finance, law, etc. - all human knowledge that is expressible as text or formulae.
With regards to software engineering, a great amount of time is currently being wasted by coders trying to solve problems that have already been solved by others. Some of the solutions for that previously included libraries, SaaS, and Stack Overflow.
Now we have another tool at our disposal to 10x all software engineers (and perhaps the same for other industries).
A lot of software is crappy. The extra productivity could go partially into quality improvement.
Coding is nice for AI to overtake because it's all abstract (apart from context). The problem domain is literally just string to string mapping.
Finally the most common reason why the "stack is hard" in startups is because there was an "all knowing" coder who build a system which he cant be replaced out of.
As a freelancer is always nice to see how quickly they shift their mannors if you show them that "you can do it too" and that all that is needed to break a stack like that is reading up on the 15 frameworks they used to build it.
All in all i dont think AI will replace us, but mainly because its going to be cheaper to hire a studied IT veteran than to use the AI.
Are the times where we are treated specially over? yes indeed. We never where more than handyman for computers.
I have used many of the approaches you mean for years with symfony, but its not the same. Text replacement is clearly less adapdable to begin with
It's already writing Haskell [1]
[1] https://twitter.com/runarorama/status/1598940278190395392?s=...
All an LLM has to do is generate one out of hundreds of potential programs which solve the problem. It doesn't even have to generate perfect code, lots of profitable businesses are built off of buggy software.
What's wild about this is that for now ChatGPT seems to have the most benefit for 'stack overflow' programmers who rely on copy-pasting solutions to problems other people wrote. Now they can effectively generate a stack overflow answer to their specific question instantly!
For now AI seems like it will empower them.
Ex: "How can I create a webserver in python" will generate all of the boilerplate instead of me going and looking at the flask documentation.
This is mostly my take. We are at the stage of truck drivers ten years ago who might have been freaking out about self-driving taking their jobs, and here we are in 2022 with a truck driver shortage.
I don't think GPT can be useful to the point of replacing software engineering without a consistent mental model of itself, time, and the world, and I predict it will approach the limits of what advanced-search pattern-matching can do without getting anywhere near those AGI capabilities.
Software reiterates a lot, and generated solutions can be quickly vetted. A truck driving to the wrong destination or locking up en route is a much larger issues than a few seconds spent determining that a generated solution has a bug or doesn’t match a spec exactly.
If AI can stand on the shoulders of giants and people can vet its outputs, I’m fairly sure it will become more capable and safer to implement than self driving trucks, much faster.
The question I have is that if we can build more, faster, will we run out of work or will more people simply make more things?
There are huge incentives for wealthy companies to run more and more code on their infrastructure. Can we do more business digitally? Will it scale to provide more programming work, even if it’s heavily AI-assisted?
Well sure. That's why we have Wordpress. Javascript frameworks. And ten thousand other things. All the plug-ins of the last ten years have made me a more productive developer. But it hasn't reduced the demand for developers.
IMO it's the former, simply because it's still a human world (a la "it's an analog world" ca. the DSP revolution) and nothing will replace human agency, accountability, and, ultimately, skin in the game.
I agree that human accountability is something not likely to ever disappear.
My knowledge of exact functions is poor. I might know that I can use Framer library to animate on-page elements, but I have little to no understanding of the exact function needed to animate an object from, say, left-to-right on hover.
My normal workflow was to either read the documentation or search StackOverflow for answers. I would then have to rework the function to fit my current use case.
Now, I've been asking chatGPT directly to build the exact function for me.
So far, it's been a massive timesaver. I'll probably learn more if I dig through the documentation, but since I'm a hobbyist, not a professional, it's much more convenient for me to just get the information I need, without digging through Stackoverflow or documentation.
Obviously this doesn't matter if we think chatGPT is so good that you'll never need to read documentation yourself, but I think this is one of those situations where you need to be an expert before you're allowed to break the rules. Without experience, you won't know if chatGPT is really giving you everything you'd get from reading the docs yourself, or only a small and potentially inaccurate slice.
As a software dev of 10 years, I've done the "googling and reading documentation" a fair bit, which is kind of like stumbling around in the dark and feeling around to get a sense of where things are. For some well-defined, well-documented things, using ChatGPT to do the same is like having having an overconfident junior-intermediate dev to pair with who's familiar in a stack that I'm not. I still have to guide it a fair bit, and adjust my expectations to account for that overconfidence. But it can absolutely guide me as well, and teach me new things.
It's a little bit like "you won't always have a calculator in your pocket". We do always have a calculator these days, but it's still useful to know how to do arithmetic so you can do things in your head, and notice if an answer doesn't make sense because you made a typo or something. Maybe in the future we'll all have chatGPT running locally on our phones or brain interfaces or whatever and be able to quickly train it on new datasets, but even then it will still be useful to know how to do things yourself.
Also I'm senior and sometimes don't get to program for long periods of time. What I find is that when I don't program I get worse and solving higher level problems. The important part of programming is not about knowing APIs etc. It is modeling a problem and its solution in a domain that forces you to be precise. For that reason I would say to junior developers: Keep programming. It will make you a better problem solver and it will make you better at the things that chatGPT can't do.
Have to say I'm a little jealous of people who get to do this for a living.
My point is that it's making newbies like me way more productive than we have any right to be.
What really annoys me is that it will probably further train itself on this text I'm writing now. I am writing it in the spirit of exchange with other similar people. Not in the spirit of some mechanical turk worker for OpenAI.
Scale matters, and robot and human inspiration are not ethically equivalent even if you think they are mechanically equivalent.
Even if you have some thing generating amazing code you still need the energy to deploy it and check that it works and put the docs in the correct folder and email somebody.
So IMHO the future we all need to be looking it is how these tools can make us all more productive and then the juniors just get a different bunch of shit to learn. Maybe we develop more focus on writing tests to "prove" the software is correct as opposed to reviewing the code output? Idk, but I don't see the industry suddenly replacing devs given that the problems are not entirely reduced to simply writing code.
Coding is probably a pretty restricted problem space. After all, there's only so many ways you can handle a string until something throws an error.
They would look correct to someone who knows how to program, but does not know iOS. Most of them even compile. But they're very wrong, even when I tried dozens of different inputs in an attempt to get the correct solution from it.
Also, ChatGPT doesn't really work for any UI based programs at all. For example, if you want help using Excel, you'll get a list of instructions, but nothing visual to help you out.