No, but combine cloud APIs, AI, and market consolidation and you will indeed see a reduction in the demand for code. I write much less code than I did ten years ago. I spend more time integrating others' code now than I do writing my own.
In ten years most industrial coders will probably be down to a hundred or so lines of new production code a year...it will be the DATA arcitects who are calling the architecture shots as it becomes clear that data architecture trmps code architecture
I don't believe this to be true. We've seen quite a few technologies, which promised to "let anyone code", without any real success, whereas to "let AI code" is even harder than letting your boss. At the very least, I expect we'd need another 2 or 3 major, paradigm-shifting, breakthroughs to get computers sophisticated enough to program themselves, which is still 50-60 years away.
I mean, that's my gut feeling; we'll see how it plays out, but for now I'm still not really worried about my job disappearing.
I think that we can do a lot more with a lot less programmer hours today. React native is a good example. We have just finished rebuilding our app with maybe one third the time and cost of our two native apps.
This is of course offset by the overall huge growth in demand for all kinds of software. But if that demand curve ever flattens out, then I think we could definitely see a reduction in the need for programmers.
Funny how, in computing, every new idea is almost always a reiteration of an old one.
One of the arguments for John Backus to create Fortran was to allow non-programmers (of Assembly language) to program. In some sense he succeeded, it allowed a lot of scientists unwilling to understand registers, stack and heaps to program computers. Then Grace Hopper did the same with Cobol for business people. In the end they didn't extinguish the job of a programmer, they just enabled people that thought in higher levels of abstraction to program computers.
This is what Wordpress/Joomla did for HTML coders, what super-optimized C and C++ compilers did for machine-level coding, what Sharepoint is doing for intranet builders, etc. We are constantly moving to higher levels of abstraction and solving more problems but it only increases the need for people skilled with basic notions of programming.
Turing reportedly believed that programming would require “a great number of mathematicians of ability”.
I think if you want to find a trend in computing, it's the same as the progression in other industries. Tooling replaces raw ability, technique replaces skill, and jobs requiring skills are slowly replaced by jobs that don't require skills.
Consider Go, for instance. There's no doubt that the opinionated, overly-controlling compiler, absolute minimalism, and conventional structure of the language is designed so that a mediocre programmer can produce passable code. A good programmer doesn't really need gofmt, or a compiler that tells them off for not properly commenting their code. Good programmers don't tend to abuse generics or lambdas or all the other things Go doesn't have.
So what it does, compared to C++, or even Java, is allows you to employ less experienced, less skilled programmers, and equally, to expect them to actually be productive, and not to produce morasses of unreadable gibberish.
Don't get me wrong - I like Go. But if C was the only language in town, there's no doubt you'd need more programmers, they'd have to be better trained, and their job security and compensation would be better.
> designed so that a mediocre programmer can produce passable code
That's a little unfair, if accurate. Even the best of us are mediocre programmers when fixing a bug in the middle of the night or diving into a new code base.
You might as well say (and some do) that Haskell is for mediocre programmers because good programmers don't make type mistakes.
> a compiler that tells them off for not properly commenting their code
Are you still talking about go and if so would you mind sending a link because as someone who has written it professionally since pre-go1.0 and contributed multiple changes to the go repo I haven't the faintest idea what you are talking about.
Bertrand Meyer suggested you could split most code into decisions and actions and that makes the code more
maintainable. My own experiences seem to support this.
Machine learning only (partly) addresses one of those categories. There’s still plenty of work to do even if AI decision making is less buggy than human code.
I think it depends. If pointy/clickie programming I think this type well be the first to go to AI since all you are doing is linking blocks together. If programming that is only done using a text editor, I think it will be a while.
This is silly. We already have automatic code generation tools. We have for decades. They are called compilers, interpreters, standard libraries. These do not reduce the need for programmers. No AI can decide _what_ to build nor can they solve pragmatic tradeoffs between competing goals that real programmers have to deal with all the time. Some human has to be making the decisions about what the computer is going to do. And they'll need a means by which to inform the computer what it is to be doing. And that means is what we now call a programming language. Smarter compilers, code analysis tools, or library finders aren't going to remove the need to define the specification.
Anyway, it's not like there's a limited amount of programming to be done, and if we could only be more productive, we'd finish it all up sooner and go to the lake. No, the demand for more and better software will only increase to consume any productivity increases we achieve. Think about the software you use every day. Could it be made better? Of course! Most of it is terrible. There's an infinite amount of work to be done.
Honestly, programmers don't decide either. We build what we are told to build.
> Could it be made better? Of course! Most of it is terrible. There's an infinite amount of work to be done.
Of course, if our objective it to achieve perfection, then there will always be more things to do because we can never achieve perfection. But most of the time "good enough" is good enough.
But I agree with that AI won't be taking programming jobs anytime soon. But AI will certainly put pressure on the number of jobs and wages. As you said, "smart" compilers, debuggers, code analyzer, etc helps increase productivity. But sooner or later, it will eventually hit demand for programmers.
We are living in the golden age of tech. So it's hard to imagine it ever stopping. I think the biggest concern is the wages and prospects. As more and more people get into programming and as the profession gets more and more productive ( AI, tools ), it's inevitable that wages will stall and decline. Hopefully, just not in my lifetime.
Not everyone is told what to build. I‘m generally not. There is some direction and sometimes I implement specific features that were requested. Even then there is a huge gap between the need to have the feature and the nitty gritty details - and I‘m not even talking about implementation details.
Honestly, programmers don't decide either. We build what we are told to build.
If only. If the people doing that telling could elucidate clearly enough what it was that they wanted built, they'd be programmers (or, to be fair, requirements gurus - I have worked in a company that had someone really, really good with requirements; it was the only place I've ever worked in which the customer never reported a single bug).
Judging by how impacted CS programs are at colleges, and how hard working the interns I have been seeing come through my company lately, wages may be stalling sooner than you think.
Like many other skilled occupations in this country the future is probably going to be very highly paid elite workers and masses of low paid people who are just "good". Kind of inevitable in a capitalist society where human labor is losing its value.
I don't know how "impacted" CS programs are and I don't know how hard working your interns are, so I can't make out what you mean in the first sentence.
A massive increase in programming labor physically won’t fit in the Bay Area’s housing stock, and the industry already could have slashed costs anytime it wanted by hiring in the Midwest and South.
AI won't make coders unemployed. It will simply create a new type of job, like tensor flow programmers. This is same as C++ programmers who some way generate assembly code by using a tool called compiler.
The first iteration, maybe not. But the end goal for a general AI is to have it close over - i.e. have an AI capable of programming itself. At this point you enter the realm of recursive self-improvement, with no humans necessary in the loop.
Fact is though that instead of coding up an object detector, the machine is doing it now. This job is now being controlled by ML personnel, not (yet) your standard programmer. What is left is glue code and architecture, at least for some time.
I personally believe we will see artificial general intelligence demos in 2018 or 2019. They will be general but not initially have anywhere near the same level of capacity as animals or humans so people may deny they are intelligent. But by 2020 or 2021 most will not deny it. Within a few years of training, high level tasks like human equivalent AI programmers will be possible.
This is speculation obviously. Let me try to explain why I think it is so close.
The limitations and problems of neural networks, deep learning, etc. for creating AGI have been well documented. However, for each of these problems, there are successful projects addressing them. Things like capsule networks (Hinton), distributed training on shared experience (Deep Mind), fast online learning with time-based animal-like networks (Ogma).
At the same time, the advanced neural network researchers have become familiar with the existing body of AGI work. They are building their networks into virtually embodied or real-bodied robots that have fully general inputs and outputs and training them in varied environments.
Some generality has already been demonstrated. Based on the progress made so far it seems likely abstraction, depth of cognitive ability etc. will be increased as there are more innovations and integration of existing ones.
The reason the timeframe is relatively short is because of the exciting progress so far, the number of actual geniuses working on it, massive investments, improvements in hardware, and social expectation. The world now believes again this is possible which means there is an explosion of people working on it and ultimately those are two of the biggest factors pushing this into reality.
If tools are not released by researchers within a few years then I expect someone to release a tool or game online or on Steam etc. with powerful built-in AGI.
25 comments
[ 2.8 ms ] story [ 68.8 ms ] threadIn ten years most industrial coders will probably be down to a hundred or so lines of new production code a year...it will be the DATA arcitects who are calling the architecture shots as it becomes clear that data architecture trmps code architecture
I mean, that's my gut feeling; we'll see how it plays out, but for now I'm still not really worried about my job disappearing.
This is of course offset by the overall huge growth in demand for all kinds of software. But if that demand curve ever flattens out, then I think we could definitely see a reduction in the need for programmers.
https://xkcd.com/1205/
If AI makes all those targets achievable, the number of projects which will get wired up will be astronomical - but finite.
One of the arguments for John Backus to create Fortran was to allow non-programmers (of Assembly language) to program. In some sense he succeeded, it allowed a lot of scientists unwilling to understand registers, stack and heaps to program computers. Then Grace Hopper did the same with Cobol for business people. In the end they didn't extinguish the job of a programmer, they just enabled people that thought in higher levels of abstraction to program computers.
This is what Wordpress/Joomla did for HTML coders, what super-optimized C and C++ compilers did for machine-level coding, what Sharepoint is doing for intranet builders, etc. We are constantly moving to higher levels of abstraction and solving more problems but it only increases the need for people skilled with basic notions of programming.
I think if you want to find a trend in computing, it's the same as the progression in other industries. Tooling replaces raw ability, technique replaces skill, and jobs requiring skills are slowly replaced by jobs that don't require skills.
Consider Go, for instance. There's no doubt that the opinionated, overly-controlling compiler, absolute minimalism, and conventional structure of the language is designed so that a mediocre programmer can produce passable code. A good programmer doesn't really need gofmt, or a compiler that tells them off for not properly commenting their code. Good programmers don't tend to abuse generics or lambdas or all the other things Go doesn't have.
So what it does, compared to C++, or even Java, is allows you to employ less experienced, less skilled programmers, and equally, to expect them to actually be productive, and not to produce morasses of unreadable gibberish.
Don't get me wrong - I like Go. But if C was the only language in town, there's no doubt you'd need more programmers, they'd have to be better trained, and their job security and compensation would be better.
That's a little unfair, if accurate. Even the best of us are mediocre programmers when fixing a bug in the middle of the night or diving into a new code base.
You might as well say (and some do) that Haskell is for mediocre programmers because good programmers don't make type mistakes.
> a compiler that tells them off for not properly commenting their code
Are you still talking about go and if so would you mind sending a link because as someone who has written it professionally since pre-go1.0 and contributed multiple changes to the go repo I haven't the faintest idea what you are talking about.
Are you thinking about the right language?
Machine learning only (partly) addresses one of those categories. There’s still plenty of work to do even if AI decision making is less buggy than human code.
Anyway, it's not like there's a limited amount of programming to be done, and if we could only be more productive, we'd finish it all up sooner and go to the lake. No, the demand for more and better software will only increase to consume any productivity increases we achieve. Think about the software you use every day. Could it be made better? Of course! Most of it is terrible. There's an infinite amount of work to be done.
Honestly, programmers don't decide either. We build what we are told to build.
> Could it be made better? Of course! Most of it is terrible. There's an infinite amount of work to be done.
Of course, if our objective it to achieve perfection, then there will always be more things to do because we can never achieve perfection. But most of the time "good enough" is good enough.
But I agree with that AI won't be taking programming jobs anytime soon. But AI will certainly put pressure on the number of jobs and wages. As you said, "smart" compilers, debuggers, code analyzer, etc helps increase productivity. But sooner or later, it will eventually hit demand for programmers.
We are living in the golden age of tech. So it's hard to imagine it ever stopping. I think the biggest concern is the wages and prospects. As more and more people get into programming and as the profession gets more and more productive ( AI, tools ), it's inevitable that wages will stall and decline. Hopefully, just not in my lifetime.
If only. If the people doing that telling could elucidate clearly enough what it was that they wanted built, they'd be programmers (or, to be fair, requirements gurus - I have worked in a company that had someone really, really good with requirements; it was the only place I've ever worked in which the customer never reported a single bug).
Like many other skilled occupations in this country the future is probably going to be very highly paid elite workers and masses of low paid people who are just "good". Kind of inevitable in a capitalist society where human labor is losing its value.
This is speculation obviously. Let me try to explain why I think it is so close.
The limitations and problems of neural networks, deep learning, etc. for creating AGI have been well documented. However, for each of these problems, there are successful projects addressing them. Things like capsule networks (Hinton), distributed training on shared experience (Deep Mind), fast online learning with time-based animal-like networks (Ogma).
At the same time, the advanced neural network researchers have become familiar with the existing body of AGI work. They are building their networks into virtually embodied or real-bodied robots that have fully general inputs and outputs and training them in varied environments.
Some generality has already been demonstrated. Based on the progress made so far it seems likely abstraction, depth of cognitive ability etc. will be increased as there are more innovations and integration of existing ones.
The reason the timeframe is relatively short is because of the exciting progress so far, the number of actual geniuses working on it, massive investments, improvements in hardware, and social expectation. The world now believes again this is possible which means there is an explosion of people working on it and ultimately those are two of the biggest factors pushing this into reality.
If tools are not released by researchers within a few years then I expect someone to release a tool or game online or on Steam etc. with powerful built-in AGI.