Ask HN: How to Deal with AlphaCode Anxiety?
ML code generation systems like GitHub Copilot and now AlphaCode are impressive. Part of me finds them super interesting and exciting, including everything else that's happening in the larger deep learning/language models space.
However, a different part of me gets hit with a wave of anxiety whenever these advancements make the news. I've been coding since teenage days and will graduate in a few months. I have a job lined up and am thrilled about working there. Now it feels like I'm running against a clock until the career I am working very hard for will automate itself away.
Are my feelings reasonable? How do you deal with this? Do you feel threatened?
19 comments
[ 2.9 ms ] story [ 60.9 ms ] threadI wouldn’t worry about it. AI may simplify some tasks and give us new tools, but I don’t see human programmers going away. Demand for skilled programmers is higher than ever.
Something almost everybody is forgetting is that this kind of technology has an asymptote embedded in it's structure and it will always be a bridesmaid but not a bride.
But the job of a software engineer is to solve problems and add value w/ software. A small part of that is writing code. Most of it is designing the right level of abstraction, the interfaces and so forth.
Lastly, as mentioned elsewhere, we will probably always need human debuggers.
Personally, I enjoy solving problems with computers and rather dislike the tedium of actually writing and debugging software. If a ML model could take that off my hands I'd be ecstatic.
What we humans do which is of great value is understanding problems and needs, considering known and possible unknown constraints, and finding a balanced solution which hopefully best meets the need.
Ironically, since most problems are described by humans (who tend not to be great at communicating), that big phase where we attempt to understand the real need is difficult and likely impossible for a computer to ever do. Just look at how underwhelming and frustrating current digital assistants are…
I look forward to being able to specify a class of need and some details and allowing the computer to code an implementation.
The first is that we could end up with a programming language that can accept natural language as its syntax. The best case scenario of this is that more people learn how to code as they don't need to learn strict specialized syntax to program. However, whenever this topic comes up it always turns out to be more of a pipe dream, because when you are programming you want precision, and to have precision you need strict specialized syntax. In other words, the advantages of not needing strict syntax are small unless you are not a programmer, and the disadvantages are massive as you might be misunderstood and end up with hard to fix bugs.
The second possibility is that we could end up with generation systems that can build small, well defined functions for us, similar to the problems that AlphaCode is already solving. The problem with this is verifying correctness. As mentioned before, the code that AlphaCode outputs is unreadable. As such, verifying correctness would likely take longer than building it yourself. As a result, anyone needing to use small, well defined functions would be better off using the existing solution of human built libraries. Because libraries are shared between so many programmers, it is much easier for bugs to be discovered and fixed.
So for my summary, all AlphaCode really is, is yet another attempt at a natural language type of compiler, which even if it succeeds wouldn't affect programmers much as languages being well defined is critical for making sure everything runs correctly.
Just read the latest reports on what is happening with IBM and Watson. That is a straight-forward use case, a simple classification goal with some decision support, and the real world has hit it like a steam train hitting a bowl of jelly.
Do you know who did, and had to deal with it decades/ centuries ago? Every other type of workers. Farmers, metalsmiths, artisans, etc, etc. Everyone gradually moved to better jobs and now everyone agrees automation is great in the end, of course.
Frankly, I’ve thought for some time that Software engineers are about the most luddite group around at this point, and I have no problems at all to say this on this website.
Seriously, every other answer in this thread offers true and valuable insights, but as always, about everyone seems to thinks Software jobs should be “different” or “more safe” than the others for Some Reasons.
Which, to me, it’s Doubly sad: for the reason that, at the beginning of computers (less than a century ago), the dream was Already to reach full automation. AI was Always the plan. What happened to that?
Why are many software engineers the ones with most problems with it now? (To the point of denying that AI will ever replace large parts of their current daily job. Of course it will- which doesn’t mean it will replace us ofcourse, just like there’s still farmers around- but the job will be pretty different. And we should be the first to know)
When did the annoying daily job of building boilerplate and knowing arcane syntax by heart become a career anyway, and an untouchable one at that?
Of course it’s easy for me because I’m fairly young, but tbh the sooner we enter the mindset that our job will change Exactly how all the others have, the better…
Sorry if this was ranty but I’ve followed these discussions for a while
The historical Luddites were not anti-tech. They were lashing out against automation reducing their status in society and financial security
If programming is "a big part" of your identity, get help for that. People work to make money. We are all in charge of our career choices, and we should pay attention to changes that might affect our work future. Having been in the programming business for four decades I've had to pay attention to the possibility that my job would get outsourced overseas -- that was a big thing a couple of decades ago, though it never happened to me because I made sure my skills weren't easily outsourced overseas or fobbed off on juniors with less experience.
Getting worried, feeling uncomfortable, having a "visceral reaction" won't do any good. Nor will trying to push back against progress. What will do some good is paying attention to actual trends that affect your career, and figure out what you can safely ignore (like AI writing production code anytime soon). Everyone who doesn't want to end up out of a job has to continually adjust their skills and career path. None of us has a guaranteed "place in the future," it's up to us to position ourselves for reasonably likely futures.
The goal of out right automation has been consistently taken backseat to the advances of augmentation - tracing back to Englebart's lab at Stanford vs. SAIL and all of the other AI research labs. One laid the foundation of personal computing, the other, umm, surely some important things, but nothing nearly as radical.
It's a subtle difference between automation and augmentation. Both are rooted in eliminating labor, but that does not necessarily mean replacing people. Despite tools like compilers, databases, and frameworks having eliminated plenty of programmer labor, there are more programmers than ever. Very few need to write machine code or implement a b-tree though.
Copilot and AlphaCode can easily be viewed as extension of that. Much like an IDE can fill in the blanks while refactoring, copilot can go and fetch a method implementation from the hive mind that's been written a thousand times before.
Like you said, the end goal is automation, not writing software. Writing software isn't a goal in and of itself.
Of course you could say these tools will reduce demand for software developers but you could have said that for just about any other advancement in our tooling. You could have called the top of the market for software and developers in the past several decades and you would have been wrong every single time.
As our tools solve our existing problems, we focus on solving new ones, and as long as we have problems we'll need problem solvers.
That's one of the strongest safety nets you can get for you career. No one can predict whether their industry is going to be fully automated in x years or not. But knowing the right people, having a strong network, will increase your chance of survival tenfold if not more.
You're young, you already know how to code, you've got the tech part covered. You're likely competent enough to be hired. But if you're anything like most tech people, your social skills are an untapped reservoir of growth.