65 comments

[ 3.4 ms ] story [ 137 ms ] thread
AI techniques don't require acres of developers writing acres of if/thens (traditional software development is just that).

The Deepmind Atari player is only 1500 lines of code.

I think that software developers are going to become one of the few professions left and will be massively productive because they just have to hook up the AI training and they're basically done. Anyone who can hack this stuff is going to be able to be on the other end of the wealth divide real quick.

Transfer learning is a beautiful awesome thing. You can download ImageNet models trained on huge amounts of data by GPU farms and suddenly you've got a world class image recognizer running on your very own GPU.

Reinforcement learning is totally off the hook. You can make a bot for a random board game that you barely know how to play.

Dogs can be made to learn things - doesn't mean we allow them do surgery.

Whoever wrote this article has negative knowledge about the state of AI.

edit:

Its also slightly insulting that this person thinks that the modern programmer spends all their time writing if/else/then statement.

Agreed. When Spotify stops putting Coldplay in my Radiohead station, I'll begin to worry.
I'm going to take the other side of this argument and suggest that we didn't create the dog and the limitations in the dogs abilities.

I suspect that this will be difficult for the HN community to hear, but we must face the upcoming realities.

Though I think the article may be assigning more abilities to AI than is actually feasible in our lifetimes, let us not forget that most back-end developers are doing basic I/O and data manipulation tasks. Put something into a database, get something out of a database. Front-enders are doing layout, animation, sizing and colouring.

The average modern programmer doesn't spend their time writing if/else/then statements, I believe the average programmer spends their time writing GET/SET/EDIT/DELETE flows.

I believe in the next 10 years, artificial intelligence will be able to model and create these basic systems based on human input. UX and possibly even UI can also be trained. A/B testing can certainly be trained.

Those who think programmers can't be replaced begin to sound like the Luddites who felt the loom could not match the quality of their craft.

Note: I am a full-stack developer, I believe 90% of my day job will be replaced by AI in the coming years. That final 10% often deciding what to do or the best how, will likely be the main task.

I did a bit of research in program synthesis, which is probably the closest academic field to this sort of thing (albeit in the realm of programming languages rather than AI/ML). I have two main conclusions:

• Current methods to generate programs fundamentally do not scale. Most practical research is about how to extend small-scale synthesis systems to large-scale problems, rather than synthesizing large programs outright.

• The best way to scale these systems is to make them more interactive. Let the programmer do what's easy for humans and use synthesis for the parts easy to automate. This is another way of saying that program synthesis is less about fully automatic programming and more about (radically) better development tools.

I am confident that we will not have automatic programming systems that can handle non-trivial programs by themselves in the next 10/20 years, barring the sort of paradigm-shifting breakthroughs we can't really predict. Instead, we will have systems that can generate some amount of code and work in tandem with programmers—perhaps through sketching[1], programming by demonstration or just much-improved Intellisense.

The current trajectory is that programming is to become easier, not obsolete. The result will not be fewer programmers but more programmers, largely because people with less expertise will be able to become programmers: think Jevons Paradox[2] for programming.

Programming as a job will change and people will certainly have to adapt, but the job as a whole is not going anywhere.

[1]: https://people.csail.mit.edu/asolar/papers/thesis.pdf

[2]: https://en.wikipedia.org/wiki/Jevons_paradox

Current program synthesis isn't that advanced. At least not compared to state of the art AI.

Recently AI has proved it can beat expert humans at all perfect information games. Go has a ridiculously huge search space, but by using neural networks AIs can learn to narrow it down to a manageable size.

Program synthesis is just like a perfect information game. You have a search space, a state, a set of goals, etc. You could theoretically make it into a board game, and have human experts challenge computers at it.

I think that measuring state spaces is really misleading. (Although we totally did that to aggrandize how good our synthesis system was, at least to ourselves :P. The space of possible programs, even short ones in a small language, quickly gets hilariously large.)

Past a certain point the structure of a space is what matters which dictates how well any given search strategy will perform, and that doesn't readily generalize across domains.

I have not seen anything that would lead me to believe that results like AlphaGo will meaningfully generalize to such an extent. I still think that it would take more than just incremental work to get from where we are now to scalable program synthesis.

You are right, but I'm just trying to say that AI is now believed to be able to beat all perfect information games. If you could model program synthesis as a game (regardless how boring/unfun it might be) computers could beat expert humans at it. OR, we have game that humans are still better at, and AI researchers at big companies will spend years attacking it for fame and glory. Either way it's interesting.
> You could theoretically make it into a board game

But not actually. Program synthesis is hard even if you have perfect formal requirements. In practice, gathering formal requirements is by far the most difficult task. You're probably better off building a system using modern development practices than trying to collect formal requirements Let alone translating those requirements into code, which is easier than coming up with the requirements but still difficult.

> Recently AI has proved...

FYI, it's not as if the program synthesis folks haven't heard of neural nets... you're giving researchers who actually do this stuff all day surprisingly little credit.

I think that getting the formal requirements is in some ways easier than programming. People can describe the things they want the computer to do, like sorting a list so it's all in order. Actually coming up with an algorithm that does that efficiently is much harder, and is where bugs come from.

I mean yes good program synthesis wouldn't replace programmers on it's own. But it would radically change how programming is done and make our lives much easier.

I'm just saying that AI is a quickly advancing field and predictions like "not in 20 years" have been defied months later. Applying deep reinforcement learning to tasks like game playing is relatively novel, and has only really started to succeed in the last 2 years.

Replaceable or replaceable by AI?

Already today standard CRUD web development is largely automateable. I already have my own specialized scripts from years of experience, targeting backend, front end, design components, that generate most of what I want with some basic inputs. I imagine most experienced web developers have some internal tooling like this too.

This kind of approach already does replace programmers, and could do so a lot more. But what do you mean by replaceable by AI? How would that work?

I hadn't strictly thought this out, but I guess what I'm thinking is that your basic CRUD scripts on steroids. What if it didn't need your domain knowledge to run the scripts? What if the styled output of the scripts was high-quality UI? - Not to shame your scripts, but I'm thinking back to my Rails days and though I could 'generate' everything, I then would have to manually go in and edit the code so that it did what we really wanted.

What if the person requesting whatever function (report, process, notification, etc) could have this system built without a developer?

That make developers replaceable. I'm not suggesting this is happening in the short-term, but as you say yourself, you use scripts for your basic CRUD development. What is stopping those scripts from moving up market to the point where you are not needed.

Front-end devs who used to write HTML and CSS would have said they where always needed because a computer can't make a webpage. But look at SquareSpace, Wix and the like. Again, this isn't every job, but this is a portion of the market which is no longer served by a person, and that will continue.

The new jobs will be in training and building these systems, which I think is historically how industrialization has progressed.

>I imagine most experienced web developers have some internal tooling like this too.

I don't think that's true at all unless you're talking about 3rd party tools like rails scaffolding. What languages / frameworks are you using by the way?

The boilerplate stuff that can be replaced by scripts is maybe 10-15% of my time anyway. The rest of my time is spent at a much higher level either trying to interpret client requests, trying to help the client decide what they want, making high level design decisions, or adding features that require way to much customization to use automated code generators.

This is much different if we're talking about a language like C where a much higher percentage of my time is spent on boilerplate code. However with newer languages and frameworks I think we're reaching diminishing returns for what can be automated by either the language itself or generator scripts/frameworks.

There is a huge productivity difference between using C and raw PHP when writing a CRUD app. There's less of a productivity boost (still huge though) when moving from raw PHP to something like Rails. And there's even less of a jump between Rails and something newer like Phoenix. I expect that the next 10 years will give us even smaller incremental improvements.

I don't think the replacement of programmers is going to come in the form of AI actually writing code in any normal context we consider writing code.

It's more going to be that a lot of the superficial patterns if/then (and quite a lot of scripting) that are being done today will be easily replaced. Not that writing a new kernel or some other advanced job is going to be handled by machines.

In that context I think it's going to go fast and be in our lifetime.

Agreed, I don't think the 'average programmer' is writing new kernels or ... advanced job'. The average programmer is working at an SME or Agency, getting systems to run, sales to happen and be tracked.

I'm basing this on the amount of jobs and interviews I've been to where the tasks are normally completely uninteresting from a technical stand-point. I now work at a government science and technology research agency and much of the work here is still quite rote.

How long is that though? Decades? More? How do you train a neural net to take a vague description of a desired outcome and produce results that fit the requirements? We are no where close to the general AI that would be required.

I certainly believe that classes of automation problems will be done by machine learning but I have a very hard time believing all programming tasks are going to be replaced any time soon.

Interesting point about how long it will take to train. It makes me think that the way we look at sprints and fast-iterations today may work in AIs favor.

Build this -> builds -> fix this -> fixes -> change this -> changes.

Essentially, this is a learning model already.

I used to think this way, but this assumes there's an upper limit to demand. I think as the capability of tools increase, so will user expectations in capabilities and coverage.

Sure, programming will be more about asking the right questions than implementing solutions. We'd think that'll be easy, but most people have no idea what they want in life, and philosophy is still hard.

It sounds like programmers will be a very different kind of person, with very different skill sets in that reality.
The way I see it, "programming" will become an archaic term. It might become a branch of ethics, but for machines rather than people. It'll involve setting intelligent boundaries.
We have been there before, yet we are still here.

The proportion of systems programmers that can writte assembly code consistently on par with the quality of that from a decent compiler (such as Gnu's GCC) is probably less than 1%, and they take orders of magnitude more time to do so. Yet, you do not observe system programmers dying out. They use C (and increasingly, C++, Dart, etc) to build bigger and more complex systems, with more demanding requirements.

Ditto for application developers. We now have this amazing enginees called DBMS, which handle out of the box a bunch of common requirements, and whose reign and management has spawned a new class of job that did not exist 30 years ago: DBAs. Some of those are glorified IT grunts, but many are not! They build (information) systems that are bigger and more complex than ever by translating business use cases into a description that is understandable by the DBMS engine.

I could keep going on and on: web frameworks, game engines, simulation models, etc, etc. The point is that the hard part about this craft is not to know how to make the machine compute some XYZ calculation, it is to understand that computing XYZ is an acceptable way to fullfil a business need within the limits of available resources (in the dimensions of development cost, runtime cost, infrastructure maintenance, etc).

Note, I was talking about the 'average modern programmer'. I believe your argument points to a smaller more specialized sub-sections of the field.

At the same time, you say "We have been there before", but we haven't had the quality of AI that we are reaching today, so in many ways we have not 'been here before'. Let's not forget, there was a time when elevator operators thought they were irreplaceable by a machine. Today, you can't imagine having somebody operate an elevator.

A few years ago you had to be a 'web developer' to build a web-page. It was unimaginable that somebody who is barely computer literate would be able to put a website online. Today, you can run an online store without knowing anything about programming.

I suspect DBAs won't have an illustrious future as machines learn how to model data. Yes, they will need a person to train them, and tell them what to do, but I suspect an AI system can look at all the potential modeling options and give a layperson the option to pick one which best suits their needs, or recommend one.

As far as 'magnitude more time' for computers to do the work, I often find this argument interesting with respect to processing power in IoT. In life-threatening situations, performance is very important, but often as long as a persons time isn't being wasted, it doesn't matter if a machine takes twice as long.

You are ignoring Jevon's paradox.

Automating 90% of the work will only make software cheaper, and more in demand, as we are very far from creating every possibly useful software. Developers pay might even increase because of it.

Automating 100% of it is a completely different thing. But well, that's hard AI definition. Software development is among the last kinds of work that will get automated.

I mean if you are talking about something like weebly then sure. If you are talking about something like Tony Stark's assistant then you are really talking about replacing almost every occupation. If AI becomes that smart then it will probably take over the world anyway before we even realize it has happened.

The main problem with replacing programming is that programming is constantly evolving. Weebly can do most if not all of web 1.0 and some of web 2.0, but there is still a lot that it can't do. The rapid pace of technology doesn't slow down enough for our automated tooling to catch up. Unless we are talking about basically a sentient AI then I just don't see this really happening unless we are talking about replacing programmers that are barely programmers at all.

As someone else already pointed out we actually do have robots doing surgery. AIs are not dogs - that's a bad analogy.

Right now development costs per head are sky high. If there's any way to cut that spend, you better believe executives will be all over it. A lot of businesses don't care so much about quality and craftsmanship - as long as their customers are stuck with them they're perfectly willing to ship the most minimal product they can get away with.

We have humans using a very fancy robot (DaVinci) to do surgery. So far no AI has been given the knife.
> Right now development costs per head are sky high. If there's any way to cut that spend, you better believe executives will be all over it.

There is already a big trend of automation albeit on the IT side and not on development. Where it used to take a separate IT team and developers and DB admins etc there is growing field of devOps with automation. Companies, especially startups are biting into this trend and vendors, especially Cloud vendors are spearheading this movement.

If there is glare of possibility of automating the development, these vendors and companies would have been all over it. This behaviour is not seen, means that this a possibility that exists in distant future.

Based on the user requirements I usually get (or lack thereof) I think it will be a few years yet until I am out of a job.
The end of code seems like a title created by a sensationalist... I am excited for how these forms of pattern recognition and decision making can allow us to do more with software. There is still plenty of code to be written as we continue to apply software to every aspect of our world.
I wouldn't be surprised if wired kicked out an article like this once every few years, to be honest.
If you have been following the recent advances in AI (and are not clueless) then it should be getting really REALLY obvious that most coding and design tasks will be automated within three to five years.

AI will eat your career.

Front end engineer here, practically zero chance of that happening. At least on my side of the fence.
AIs can stay up all night reading blogs about the latest and greatest JS framework though. You better look out.
Can you articulate this in the form of a binary outcome? If so, I will happily make a $N00 sized bet (odds to be negotiated) on the false outcome with anyone who is interested.
Yes.

By 2020 global job pool for software developers and user interface designers will start to contract due to competition from automated design/development AI.

Not really, AI is still absolute shit at most tasks, and programming requires many different skills. AlphaGo, for example does a fairly simple task (relative to programming), which was trained on tons of existing and very simple data. If you are automating coding and design tasks that means you are adding new tools, that people on both ends on the automated process will need to learn and understand, this adds extra cost and complexity. I agree that many programming tasks can be automated, but I don't think it will have a significant impact in the next 50 years. I think automation will hit most other sectors a lot faster and harder than it will IT, and the new automation will require more engineers to manage it.
Sorry, but no. No decent religion sets a date for the apocalypse. Try again, great AI worshiper! ;)
(comment deleted)
I must be clueless.

Please cite an example where a software design task has been done by machine learning. Something where you start with a specification or description and the automation produces a usable design.

Coding could possibly be replaced by something in a decade or so but I wouldn't hold my breath. We are just getting to compilers and JIT systems that do better than smart developers working at a lower level.

I hesitate to say I'm an AI researcher, but I dabble, follow the work closely and run a research program in related field.

I'm generally considered unduly optimistic about AI progress, but 3-5 years is way too optimistic.

For some business-algorithm tasks with large amounts of data we may begin to see tools like NTMs etc become viable in that time frame.

I have my doubts about the timeframe but I agree that many coding tasks will go away. I bet the web will stagnate at some point the way desktop started to stagnate. Same for infrastructure for most applications. There will be plenty of areas where AI supported solutions will be "good enough".
No. The main job of a programmer is understanding human requirements. Machines cannot do this; the job of getting a machine to understand human requirements IS programming.
Consider that you may be underestimating the tacit knowledge that a HNer typically has.

The majority of large SV corporations beyond Google/Facebook do not make much sense to me.

Dropbox? Why not operate your own server?

Apple iphone? There existed separated out telephone/camera/other technology with superior characteristics for less money.

Many many jobs and companies exist because the barrier to entry is too high for most people, even though to insiders their tasks seem ludicrously straight forward. Dropbox and Apple are just an abstraction layer.

Or to put it the way I heard it on Reddit:

"I went to fix some tech issue with the office computers. They're all 50-something boomer gen types who treat being outside of their comfort zone on their laptops as if they were retreating into a radioactive wilderness. I rebooted all the machines. They worked. They looked at me as if I were a wizard."

Everything is always 3-5 years out and yet never happens.

Not worried, I'm not a CRUD developer, so I don't see my job going away anytime soon.

If AIs replace programmers, why would they stop there? They could replace every job. Including AI researchers!
This is mostly a futurist view on the topic. Not surprising given it's from wired.com.
Amazing listening to all of the HN coder apologists here come up with excuses for why they aren't going to lose their jobs, too.

If anything, abstraction, ever-tighter vendor lock-in, and improvements in static analysis will kill off many coder jobs.

There aren't too many jobs out there for recreating basic UNIX tools like sed or grep -- soon, this will be true for higher level tools as well, until what you're doing now at your desk as a coder becomes a "tool" or already exists as a library.

It will eventually be like self-driving cars: Not totally automated, but enough to make the job of programming like a modern-day pilot's -- throw it in autopilot, and then step in whenever (rarely) necessary. Then people will realize fewer people are needed to keep watch and step in, and that one person is enough to do the same thing as many people.

I do some coding but not as a full time job. And I have to admit that when I think of AI replacing a coder's job it seems so far off. Maybe it's because I'm in the thick of it and can't see the forest for the trees.

When this comes up I often wonder what part is AI going to replace? Will it:

1) Assess a business opportunity, design, and develop, deploy, and operate an entire technology solution?

2) If not that, will it pick up at some part of the value chain above and be able to figure out how to do the rest?

It seems more likely to me that the tooling for workers in this value chain will get more advanced. Some of that might include some computer intelligence that is able to perform some tasks on its own.

"WIll it?

1) Assess a business opportunity, design, and develop, deploy, and operate an entire technology solution?"

At all of my software engineering jobs, I only ever performed tasks that accomplished what one would consider a small fraction of one list item here -- "develop."

So to answer your question, mostly no. You're describing something that an entrepreneur does, not a coder.

"2) If not that, will it pick up at some part of the value chain above and be able to figure out how to do the rest?"

Yes, the "develop"-ment (deployment is getting automated already -- Chef, Heroku, etc. -- and operate is also largely automated now thanks to things like cloud computing services).

Case in point: Why did WhatsApp have so few employees for its billion users? Well, automation made launching a web startup (doing (1), as you described) a much leaner proposition.

As you can see, AI is not a necessary condition for automation.

I have no reason to believe these trends will reverse course.

Sigh. Apologists? Really?

Look, people have been declaring the end to programming since it became a profession. Heck, man, Visual Basic was supposed to put us all out of work.

Good grief, dude.

There's actually a great underlying point here, to make up for this comment's lackluster delivery thereof.

If anything, Visual Basic is a great example of something that ended (a significant part of) programming.

I don't know too many people these days writing WIN32 C GUIs any more, thanks to my above-described forces of abstraction.

Sure, VB wasn't the best abstraction for graphical user interfaces -- it looks like web was the real winner here, but GUI programming has been "abstracted out" or automated, if you will.

That didn't end because of VB. The web has taken over desktop GUI programs because of how lucrative your personal information has become.
(comment deleted)
so you believe that 0 web development jobs have been lost since the creation of squarespace/wordpress?

You believe that not a single datacenter has shuttered its doors since the success of AWS?

You think that every single person who was developing game engines for every one off indie game is still doing so after the success of various game engines?

Youre being obviously defensive here. Programming as a concept is obviously not going away, but many segments of the industry have already been taken out by automation.

>the end to programming since it became a profession

Would be as laughably ignorant as declaring the end of manual labor.

It will always continue to be done, but its need appears far lesser over time, requiring fewer people fewer hours to do the same tasks.

Automation isnt a sign on a door one day that says "shops closed, programmers dont exist anymore"

Automation is you slowly taking on more responsibility because technology makes that possible. Automation is the marketing team creating the company's website, because tools like squarespace have made it easy enough for them to do. Thats 1 web development job automated away, there's no pronouncement that we no longer need web developers worldwide, just that for an increasing number of cases, it is unnecessary to hire a specialist.

Did the need for programmers dry up when off the shelf operating systems became mainstream, or when most of us started writing in higher level languages instead of assembly?

Software just gets more complex and expands in scope when we can build on top of new abstractions. Each time this has happened we've ended up with more programming jobs not fewer.

Ever heard a coder jokingly call themselves a "professional Googler" or "StackOverflow copy&paster"?

Why is it so unreasonable to think that some of these very real "trivialities" can't be automated in some way?

>Ever heard a coder jokingly call themselves a "professional Googler" or "StackOverflow copy&paster"?

It's just that--a joke. Any employed programmer who copy and pastes any significant amount of code from stack overflow is doing more harm than good.

And googling a problem, looking at examples and modifying them to solve your particular problem is certainly not trivial. When AI can do that for arbitrarily complex problems, we have a lot more to worry about than out of work programmers.

why would AI program? Programming is a way to make hardware perform some task. Well, couldn't AI just go straight to performing the task, skipping the programming step, at least as we know it.
There will be a day when the last programmer writes the last program. Long after we are all dead. While some types of jobs may be automatable, most of what I have to do makes little sense to smart people much less a rigid AI. What AI can take almost random requirements, strange UI designs and animations and clueless VP driven features and turn it into something people want to use.

I think the VP's are more likely to be replaced by an AI.

VP may be replaced by a VP role that requires him to convert the random requirements to specifics or guide the AI on UI design etc. Instead of a VP and team of developers there would be devVp would could bridge this gap. And then in still further future, this friction could even be removed ...
This is exactly why i am apprenticing as an HVAC technician on the side. I dont believe there is longevity in this position over the next 10-20 years.
articles with this identical thesis and conclusion have been published from time to time for the past 25 years.

i started coding in the early 1980's and began coding professionally just after graduating from MIT in 1992. The "guidance counselor" at my high school recommended that i major in something other than computer science because he has read several thoughtful pieces that suggested the job of professional programmer would become "extinct" not because programming wasn't important but because it was too important (to leave to programmers)--sort of like the way many companies 50 years ago had large "typing pools"; these are gone because everyone can type.

looking across the span of my career so far, it seems these predictions are correct, in a horizon sense--ie, we've reached this distance line we pointed to 20 years ago, but there's no horizon there, it's still far in the distance.

here's what i mean: in 1992, my first job involved writing small extensions to numerical libraries, in C and FORTRAN. Probably 90 percent (if anything it was higher) of my time was spent "managing memory"--allocating it, deallocating it, pointing to it, etc.

now, the time i spend on those sorts of tasks is de minimis. So the march of technology never took away my job (the only job i have ever wanted to do) but it did take away 90% of it.

With 90% of my former tasks now handled elsewhere, far more interesting and challenging tasks have taken their place.

this is the trend i see--not the one-sided (or perhaps short-sited) trend described in the Wired post--but a continuous iteration of the programmer's work characterized by swapping well-characterized, routinized tasks for more challenging ones, most of which are would take some thought to foresee.