The Robots That Will Put Coders Out of Work
snydeq writes Researchers warn that a glut of code is coming that will depress wages and turn coders into Uber drivers, InfoWorld reports. "The researchers — Boston University's Seth Benzell, Laurence Kotlikoff, and Guillermo LaGarda, and Columbia University's Jeffrey Sachs — aren't predicting some silly, Terminator-like robot apocalypse. What they are saying is that our economy is entering a new type of boom-and-bust cycle that accelerates the production of new products and new code so rapidly that supply outstrips demand. The solution to that shortage will be to figure out how not to need those hard-to-find human experts. In fact, it's already happening in some areas."
This time was different :(
Well, someone will have to write the detailed specification, and list of instructions for the system to use to know what the humans want it to code. We could call that person a 'Programmerator' and the system a 'Compileatron'.
Jokes one them. Uber's robot cares are going to put Uber drivers out of business.
The robot doesn't have to debug anything. All it needs to be able to do is write code like:
Problem solved!
This is nothing new. For instance, word processing consultants were put out of business by Word Perfect. If those former word processing consultants wanted to stay relevant, they had to retrain themselves. In software development, we're constantly trying to automate our own work and replace ourselves, until one day we're actually successful at it, and then we have to find a new problem to solve if we want to stay relevant on the open market.
I'm not sure why those guys are taking a jab at Uber thought. Uber isn't replacing Taxis. It's meeting the demands of the open market during peak hours, which Taxis are incapable of filling by themselves (at least, not in places like San Francisco or New York where it's absolutely impossible to get a taxi during the time when you most need one).
I read the article, and I'm not buying it.
I can see programmers in some small, well-understood niche markets replaced by complex applications (which require more programmers to write!) and causing some programmers to go looking elsewhere for jobs. But new technologies for computer-aided software design are not going to cause structural unemployment any time soon in the IT profession.
Some reasons include the cost of miracle software-building robots will be at a premium, which means only the biggest players would be able to afford them. And after they purchase them, they will only be able to work well within a limited number of tasks.
Imagine how many more programmers would be needed if we didn't have compilers. Or automatic code generators. And the whole point of machine learning is that you write software that teaches itself how to do something, rather than program it directly.
Software developers have been quite good at moving up into higher levels of abstraction each time we multiply our productivity. There's so much work to do that I doubt our tools will ever "displace" us.
Any good software architect or engineer should have the goal of minimizing the needed code / work for a project. If it takes metaprogramming, then fine. If it requires creating general purpose run-times (such as auto optimizers, such as simple hill climbers or as advanced as large neural nets) thats fine too. If the general purpose runtimes can code and thus are meta programs, great.
The idea of declarative programming for specialized run-times is nothing new. If you apply it to a general runtime that can do programming, you then have a system that makes functions that meet specs: programming moves to producing what ever declarative specs such a system consumes. Once again its just a move to a higher level language and abstraction. If (and thats a big if) its trivial to write in such a language, and all us coders no longer need skill or experience to develop new applications and we all become unemployed, well, thats the goal right: make developing your applications trivial?
Every advancement we make, assemblers, higher level languages (like C), and all those language paradigms (OOP, functional, generics/templates etc) are supposed to help with this. So are libraries. We make software hundreds of thousands of times more complex than we used to because of these advances. Much of the software of today may become trivialized by the coming advancements just as much old software has been since we started programming. Maybe we will just keep making software more complex, or maybe well will create more different applications, or maybe we will just have time to catch up, optimize and fix all the broken shit? Or most of us could become unemployed because we have enough complexity, and new tools will make the work needed go down not up.
This is a "we'll all have flying cars" sort of paper by people who could not make flying cars but were convinced that they'd be here any moment.
Strong AI is the first "computer program" that has the potential to automate the act of creativity. Everything less can be a compiler, a pattern recognizer, an Uber driver, and in general a tool that does what it is told .
And we are not particularly closer to Strong AI than when it was first theorized.
I would be more impressed with a paper by people who could actually make the software these guys theorize about, rather than sophomoricaly discussing it.
Bruce Perens.
Anything that can be automated will be. An awful lot of programmers are already doing nothing more than running macros and "smart commands" with IDEs like Eclipse to produce the bulk of their code. Given a sufficiently detailed application model and an appropriate rule engine, the need for that "skillset" becomes obsolete.
Eventually only the highest level functions will need to be coded "by hand", themselves driven by the application models instead of class and structure definitions.
Throughout my career as a programmer and even after I retired, programming has consistently and constantly evolved to higher and higher levels of abstraction. It's only a matter of time, effort, and the question of who will be first to market.
But it will happen.
I do not fail; I succeed at finding out what does not work.
I'm not sure he will be laughing - he never said that Capilism was all-out evil, only that it will by necessity come to an end, because it causes growing instability. In his opinion it was inevitable that the gap between rich and poor will grow under capitalism, and that this will lead to violent revolutions, but now a days this scenario has got competition from things like resource shortages and the fact that we will eventually reach some physical limit on this planet. As he pointed out, a sustainable society is one where we move beyond the dogma of capitalism and address the limitations in that system. It may well end up looking like a form of communism.
the first, due to happen right now, is a bunch of smug posts claiming that programmers are too smart and talented for anything like that to happen to them. obsolescence is for the merit-less poor, people doing crappy non-programming, non-geek jobs - people who actually deserve to be treated like shit. it could never happen to them, they're far too important.
in a few years, when it is actually happening to them, there'll be a bunch of whining posts about how unfair it is that programmers have to compete with machines for their jobs, that was never supposed to happen to the super-smart, super-talented entitled rich white dudes...they'll all be crying something like "Google, why hast thou forsaken me?"
even then, these stupid entitled fucks will cling to their idiotic libertarian beliefs and refuse to believe that the owner class, the 1%, the bosses, the venture capitalists don't give a fuck about them and never have - if they think of programmers at all it's with resentment that they currently need some people who are difficult to replace....all worker units are meant to be slot-in replacements for each other, and they'll invest large sums of money to make sure that's the case for everyone.
A lot of coding is busy work. And I'm sure the AIs can do a lot of it. But who hasn't been sitting there doing it and thought "I'm too smart to be doing this stupid job."... because that happens all the time for a lot of people in a lot of jobs. And yeah... a computer or a monkey could do those jobs so long as they were taught how to do the trick.
But the nifty problem solving that only humans are still capable of doing? That's a different matter.
Rather then getting all upset about people losing jobs they hate to machines rejoice that the jobs of the future will be more interesting because the only things you'll need humans for will be more interesting work.
Here someone will say "but there are a lot of stupid humans that can't do interesting work!"... yes and no. A stupid human isn't going to do anything that requires high level human intelligence. But even low level human intelligence is actually very useful if properly applied.
At some point, low human intelligence is going to be a barrier to entry to the job market. But really, it is already a huge problem for someone if they're stupid. Lots of jobs simply are closed to them and that is likely going to get worse going forward.
Anyway, I'm not worried about it. I'm just looking forward to the expert systems that I can use to help me cut out the busy work in my coding. Sounds like fun.
I've decided to stop wasting my time responding to AC trolls/sockpuppets... so if you want a response from me... login.
...laser printers are never out of work. :(
Sent from my ENIAC
So, the model is proven. Score that one for the robots.
As long as they remember to program them to demand wages and spend the money, everything will be alright...
Otherwise, the economy will be hosed and they'll have to think of something new.
Back in my FoxPro days I cranked out smallish biz apps like lightning with 1/4 the code I use now. The multi-layered client-server and then the HTML/CSS/JS/foo++/SQL stack gummed up that and turned CRUD into a mini bureaucracy.
Blow up the HTML stack and create GUI and CRUD-friendly browsers and markup, and database-integrated table-driven languages, and many internal biz coders will go gone. (No, MS-Access didn't integrate the database and code side well. I don't count it.)
Table-ized A.I.
Let's see them work with PHB's and clueless users to nail down "requirements". Automating logic is easy, automating prediction of random idiots is not so easy because randomness is by definition not predictable.
You have go to lunch with and sit in boring meetings with them to figure them out, and the robot will be booted out of the room because it will ask good but embarrassing, ego-shattering questions; and not get the design analogies that use Kardashian asses as reference points, asking silly questions in an attempt to figure it out. The business world is bunches of social institutions much more than it is think tanks.
You are trying to replace humans, not Vulcans. Kirk ran the missions better than Spock because he could identify better with illogical and petty aliens.
Table-ized A.I.
The article does not have anything even worthy of consideration. It is just bloat with a snappy headline. The story goes like this: we know there is technical progress, software developers are in as high demand as never before, with wages 70% above other 'induatrial workers'. In the past, such high skilled workforce lead to investment into automation, and that's already happening. Case in point: standardized sports events are written by computers, not journalist. See? If you can replace journalists, sure developers are in immediate danger. After all, not much difference, developers and journalists alike type on keyboards and sit in offices and are good at exressing their thoughts in words. Developers beware!!
Again, just plain and utter BS. Makes me wonder if that article was written by a bot, too.
The solution to that imaginary shortage will be to figure out how not to pay those easy-to-find human experts. We call part A of this solution "offshoring", and part B the "H1B Scam." And it's working just fine.
FTFTFS.
I've fallen off your lawn, and I can't get up.
This story comes up every few years. They are all written off the same template, like how this new generation of tools will allow everyone to write their own apps, and you don't need professional programmers, and here's an example of an 8-year old who made an app in two minutes etc. These stories are written by people who don't have a clue what the working day of a programmer looks like, and imagines something sitting isolated at his desk typing in code all day
The programmer's job is to translate the requirements from other humans into requirements that a machine can understand. For very well-defined domains of applications, it is indeed possible for non-programmers to use tools that can achieve the same thing. That was the same with VB 1.0 or equivalents prior to that. I don't think the scope of possible applications that can be written in this way has broadened much in the decades after. Applications that is just a dialog with very simple logic can be written by drawing the dialog and copy-pasting and adapting small statements etc.
Beyond that there's not been much progress in "auto-writing" applications. The reason is, that the current programming languages are actually fairly efficient and precise ways of explaining to a computer what it should do. The job of the programmer is to translate the "business" requirements into that specification.
Even for a fairly trivial stand-alone program computers can't do this today. Even if that were to happen, consider that much of the programmer's time is not spent writing code within some confined, well-defined environment, just writing line after line. Rather, it is spent understanding the customer-specific requirements, realizing if they are impossible/inconsistent and working out a solution together with the customer, integrating multiple systems and many different levels in those systems using completely different interfaces and paradigms, and figuring out how it is all going to work together.
My experience is that most automatic code-writing and analysis tool stop working when you add this layer of complexity. They may work well for a completely stand-alone Java application with a main() method, but how does it work when you have client code, native code, server code, 10 diff. frameworks, 3rd party libraries some written in other languages, external web services, legacy systems, end-users who think about things in different ways than the internal data models etc, implicit contracts/conventions, leaky abstractions, unspecified time-out conditions, workarounds required due to bug in other systems and difference in end-user setups? The complexity and bugs here is always resolved by human programmers and I suspect it will be that way for a long, long time even if computers manage to be able to write stand-alone programs themselves (which IMHO will be the point where we have something approaching general AI). While you can take individual aspects of these problems and formalize them, the amount of combinations and the diversity in scenarios is so big, that it becomes impractical.
If you have competent programmers, most of the bugs are going to be in these areas, since it is also easy for a competent human programmer to write a stand-alone program that works well on one machine.
Yes, all of these things you mentioned have resulted in less software jobs. Oh wait.