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:
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.