While software development is taking over the world, artificial intelligence (AI) is exploding. Intelligent robots have become such an integral part of our everyday lives that we would be in serious trouble if we had to spent 1 day trying to carry out our day-to-day functions without them. Not only are they integrated into our everyday lives, but they are so in a way that makes them almost seem human. 21st century robots are becoming so human that they can play board games, paint pictures, write music and compose songs, diagnose cancer, and even tell us jokes or explain to us how to find true love. Machine learning takes this computer brain to a whole new level, allowing machines to ‘learn’ using data, without an explicit algorithm.
So what does this mean to the software development community? If robots are developing personalities, why couldn’t they develop the ability to reproduce - or write code? Well, they can. Tesla director and Stanford Computer Science Ph.D. student, Andrej Karpathy demonstrated this in 2015, when he used Recurrent Neural Networks to generate code. Trained with 400 MB of Linux repository, the RNN created in 1 night, code including functions, function decorations, parameters, variables, loops, correct indents, opened and closed brackets – and the code even comments. There were mistakes. But nevertheless this is a huge step for AI – a movement toward an age when we won’t really be writing code anymore, per se; but rather just “finding data and feeding it into machine learning systems.”1
The hope is that, rather than replacing us, AI will help us to progress father than we could otherwise, by ourselves. Here are a few examples of ways that this can happen:
Code ‘spell check,’ and ‘autotext’
When you write a text or email in your phone, your phone highlights incorrectly spelled words and suggests a correct version and or changes them to that version. In this scenario, in which AI is helping developers, a ‘supercharged IDE feature’ does this same thing, but with code. In the future, this could expand a little more, so that Ai suggests even better code completion by basing the suggestions on its master developer’s style, using high-level predictive analysis. This trend could continue until the AI is writing the code for the developer, after which the developer approves it.
In this scenario, the human developer is writing tests, and AI is iterating these tests millions of times, until it finds or creates the piece of code that correctly solves these tests. With extra time freed up for the software developer from having to both write, and solve the tests, he or she can focus on understanding and solving business problems. Later, AI may even be able to learn how to suggest which tests need to be done.
The question of whether AI will replace the developer is one of level, rather than a simple binary answer. The fact is that AI already has begun replacing the human developer. But we have seen that the relationship is one in which man and machine work in harmony together, as machine improves efficiency, but the human eye is always needed.