Being replaced by artificial intelligence is the number one fear of developers today [Evans Data, 2016]. Fear of being rendered obsolete by a robot ranks even higher among this workforce than a lack of pension, platform obscurity, or bad management.
With the hype around AI reaching an all-time high this year, it’s not surprising developers are worried about its impact. With reports suggesting that up to 50% of low-level jobs might be replaced by machines or AI, are development jobs also up for the taking?
In this article, we look at what AI is already capable of and whether the robots are really coming to take our development jobs.
What can AI already do?
Ask the average person on the street what AI is, and they probably have a picture in their head of Arnold Schwarzenegger's Terminator, or Scarlett Johansson's Her. AI is generally thought of as an advanced, humanoid machine that can interact flawlessly with their human colleagues. However, the Hollywood version of Artificial Intelligence is extremely far fetched, and very far from reality.
In truth, AI isn’t anything like that advanced yet, and won’t be for a long time. AI exists on a spectrum from narrow to general intelligence, with narrow AI being very good at one thing. For example, an advanced narrow AI might be able to beat humans at a game of chess, or drive a car without error. However, ask these AI programs to learn a new language or write a book, and they would practically self-destruct as this task would be outside of their narrow scope. When we look at existing AI technology’s general intelligence, it’s still very low level.
Most AI teams today are focused on narrow AI. Here’s a few amazing things current AI programs can already do:
Play games and beat the best humans in the world
In March 2017 Google’s DeepMind AI subsidiary released AlphaZero Go. Go is an abstract strategy game popular in China, and estimated to be 2500 years old. The original version of DeepMind’s program could already beat the world champion. However, it required human input to develop better strategy and improve on its skill. It used a database of more than 100,000 previously played games of Go to find the winning strategy.
The newest version is self taught. AlphaZero Go plays against itself, starting with completely random moves. Every time it wins, it updates its knowledge and plays again. Over time, it becomes more and more accomplished at Go. After 3 days of self-play, AlphaZero Go was able to defeat the original version of itself that beat the current (human) world champion.
Paint the next masterpiece
Another Google project, entitled DeepDream, has been creating amazing works of art since 2016. DeepDream is a neural network that uses existing artwork to recognize visual patterns and create new masterpieces in the style of existing paintings.
A Google Deep Dream painting. Photo: courtesy Research at Google.
In 2016, 29 of DeepDream’s original creations were auctioned off at a San Francisco event. The pieces were compared to a “computer’s daydream” and received rave reviews. The top bid of the night? $8000.
Transcribe speech to text
Microsoft has invested in improving speech recognition software through the use of AI. While talk to type has been around for years, the error rate of transcription was so high it was almost unusable.
In 2017, Microsoft announced that their speech recognition software is now on par with human transcription, with an error rate of just 5.1%. New technology uses AI to analyze context and uses neural-net based acoustic and language models to improve accuracy.
Context is super important - take this example from Business Insider to understand why. For example, it might not always be clear if a recording says “that’s not fur” or “that’s not fair”. This ambiguity gets even more difficult when you bring accents into the mix. However, Microsoft’s AI can look at the context of the conversation and decide on the appropriate transcription. Talking about fashion? Fur is probably the correct answer. Talking about gambling? Fair is the more reasonable choice.
Can AI code?
If we can develop AI to play games, paint pictures and transcribe speech to text, can we teach it to code? Well, we’re certainly trying.
Andrej Karpathy wrote a blog post in 2015 showing how Recurrent Neural Networks (RNN) can generate chunks of text from a dataset of similar samples, including Linux source code. RNN recognize patterns by developing connections between units. This allows it to process items in an ordered sequence, which is much more efficient. Andrej trains RNNs to predict text one character at a time. For example, he feeds a RNN with a hundred Shakespeare sonnets and then asks it to create something similar. Here’s a sample of the AI’s work:
They are away this miseries, produced upon my soul,
Breaking and strongly should be buried, when I perish
The earth and thoughts of many states.
Does this work with code? Not exactly. After feeding the AI all of the source and header files found in the Linux repo on Github, Andrej asked it to generate a sample of code. Here’s what he got:
Does it look like code? Absolutely. It includes properly opened and closed brackets, comments, indentations and variables. Does it run? Absolutely not. Remember that this code was generated one character at a time. The global impact isn’t important.
Thankfully, most of us probably don’t program one character at a time. We make decisions by looking at a desired output and manipulating provided input to get to a solution. Researchers at Microsoft and Cambridge University used this strategy to build DeepCoder. Using fragments of code taken from existing software, DeepCoder can develop simple programs to solve the types of challenges seen at programming competitions. Just as you might go to Google and StackOverflow to find solutions, DeepCoder borrows lines of code to accomplish a set challenge. One noted advantage of using AI for this kind of work is that “it can search more thoroughly and widely than a human coder, so could piece together source code in a way humans may not have thought of.” An AI assistant of this kind could dramatically reduce the effort it takes programmers to piece together working software. Currently, DeepCoder is limited to creating very simple programs of about 5 lines of code.
So, should you be worried?
DeepCoder might make you feel very concerned for your job. But relax. Reports of the end of programmers have been greatly exaggerated.
DeepCoder has been compared to the infinite monkey theorem. If you put infinite monkeys in a room with infinite typewriters, eventually one of them would produce a Shakespearean sonnet. AI is making huge strides right now because the increase in processing power allows us to throw more theoretical monkeys at a problem. Just because AI can crunch through huge configurations of existing code snippets to see what works, it doesn’t mean that it’s “programming”.
As programmers, we know that the valuable work we do isn’t just smushing variables and functions together at random to see what sticks. Solving real human problems takes a human perspective. Developing a better user experience needs creativity. AI won’t be at that point for a long, long time.
What AI will do, very quickly, is eliminate development busy work. Boring monkey work like searching for answers on StackOverflow or debugging code will become tasks of the past as programmers begin to work with AI. Instead of eliminating developer jobs, AI will enhance them. As researchers have suggested: “Machines writing code under human direction will only further improve our ability to explore the universe, enjoy life, and stream Netflix, especially if it saves us the trouble of learning how to make extremely heterogeneous systems work together.”
Humanity is necessary to create things for humans. Creativity, empathy and originality are all uniquely human traits. Without them, AI will be unable to compete with human developers.