Main image of article Will A.I. Take Over Your Programming Job?

Back in 1981, I graduated from university and got my first programming job. That year a program was released that would supposedly bring about the end of human programming. Called The Last One, it failed despite a lot of hype. But will A.I. succeed where that early attempt crashed and burned? A few weeks ago, Rice University researchers released an artificial intelligence application named Bayou that supposedly can help you write code. Partially funded by Google and the U.S. Department of Defense’s Defense Advanced Research Projects Agency (DARPA), Bayou synthesizes an application using Java code extracted from hundreds of thousands of open-source projects. Then comes the clever bit: the A.I. matches the code specification, which is a simple search phrase, and returns the most likely code equivalent (along with some lower-scoring alternatives). Is Bayou trying to follow in the footsteps of The Last One, promising to liberate humans from the tyranny of coding their own software? In reality, this new platform just assists you in programming with Java. It's certainly not going to put you out of a job; in fact, it might make you more productive. The hype comes from Bayou being A.I.-driven, which sparks the usual fears about A.I. replacing human jobs. But will artificial intelligence eventually take over coding? Let’s pick apart what programming actually is, along with the current capabilities of artificial intelligence.

Let's Actually Define 'Artificial Intelligence'

Most people unaware of the current state of A.I. consider it to be AGI (Artificial General Intelligence), also known as “strong A.I.” AGI is that theoretical point when an A.I. platform can think and reason like a human being; you’ve seen some variation of this in lots of sci-fi movies over the years. Of course, current A.I. can’t walk into a house and brew coffee, much less make the intuitive leaps that mark human cognition. While I have zero doubt that AGI may emerge someday, I’m not losing any sleep waiting for the Singularity. The A.I. that we see in real life is ANI (Artificial Narrow Intelligence) or “weak A.I.” This encompasses things such as categorizing images on Google, reading license plates, and powering the routines of Alexa and Siri. Boiling it down even further, ANI can be trained to use highly sophisticated methods of classifying data and recognizing patterns, but it can’t “think” like a human brain.

Complexities of Programming

Back in 1981, the whole programing scene was a lot simpler: there were just mainframes, minicomputers, the BASIC-powered CBM-PET, the Apple II, the Tandy TRS-80 and some other PCs. Now you have a diverse mix of computing devices (PCs, mobile, etc.) linked via the internet to a worldwide network of servers. A multiplicity of programming languages and diverse legacy code bases just makes everything that much more complicated. Software developers have to worry about user interfaces, graphics, audio, relational or NoSQL databases, the efficiency of algorithms, and maintaining existing software. In other words, you'd need a pretty strong A.I. to replace a human programmer, who needs to spend every day thinking of creative solutions to nuanced problems.

Programming Aids

Fortunately, weak A.I. can assist programmers in their daily tasks (Note: I'm not talking about toolkits that programmers can use to build A.I. platforms, but specifically A.I. tools to assist programmers). Let’s break down a few:

DiffBlue

Writing tests is one of the most tedious bits of programming, so it makes sense to automate it if you can. The Oxford company Diffblue, founded by two Oxford University computer science professors, has developed a system for doing just that. This platform reads your source code, analyzes it, reads any tests, and then generates tests to fill in the gaps. It can also suggests potential improvements from refactoring. Diffblue is available only for Java (at least for the moment), although the creators are currently recruiting C++ developers and have raised $22 million in “Series A” funding.

Ubisoft's Commit Assistant A.I.

You can expect video-game companies to use A.I. in their games for controlling virtual baddies, but Ubisoft has gone a step further with its Commit Assistant AI. When a developer commits code to their version-control system, the A.I. examines the code and, according to Ubisoft's figures, catches 60 percent of bugs with 30 percent false positives, saving developers about 20 percent of their time. This was developed in conjunction with the Canadian University of Concordia, which was given access to ten years of Ubisoft's code (presumably C++) to train the A.I. Later this month, at the Mining Software Research conference in Gothenburg, Sweden, the research behind Commit Assistant will be made public.

Microsoft

At this year’s Build developer conference, Microsoft announced IntelliCode for Visual Studio and C#. It’s a step up from IntelliSense, which provides an alphabetical list of available matching functions, as well as variables as you type. IntelliCode is A.I.-powered, and reduces the amount of typing to complete a line. Typically, some functions can have three, four or even 20 or so different overloads—these have the same function name, but with different types and numbers of parameters. IntelliSense just shows the list of overloads that you can scroll through; IntelliCode suggests the most useful overload. IntelliCode can do this because the A.I. has been trained on over 2,000 Github repos (each with over 100 stars). It’s still early days, but expect a lot more from this platform. Last year, Microsoft created an A.I. named DeepCoder (PDF) that, much like Bayou, synthesized programs from existing code bases to solve programming challenges. This was simpler in its functionality than Bayou, with a base of 500 programs solving relatively straightforward programming challenges. It leverages methodologies such as neural nets. (It's hard not to imagine that Google and Apple are working on the same kind of capability for XCode or Android Studio. What developer wouldn’t want an A.I. to locate bugs (and fixes) for them?)

Conclusion

Nobody with any knowledge of artificial intelligence expects it to replace programmers, but the A.I.-powered tools that have begun to appear will certainly allow programmers to become more productive. Keep an eye on how these platforms can improve your own workflow.