The question in itself is pretty intriguing. Can the creations beat their creators in their own game? Can AI take place of the programmers who created them?

Programmers vs AI

What does the future look like?

A survey conducted by Evans Data Corp, California-based market research, market intelligence, and strategic planning farm, on this very specific topic yields interesting results. Among the 550 developers and programmers that were a part of the survey, nearly one third responded that the biggest threat to their carrier, in the long run, is the impending advancement of AI. Yes, that was the response of some of the professionals.

The Future of Employment study by Oxford University provides further insights. The study suggests that many technical positions including software engineers would no longer need human resources as the AI and ML advances. It would eventually become computerized as most of the design and optimization choices would be taken by them.

According to the researchers from the US Department of Energy’s Oak Ridge National Laboratory, the ML and AI techniques would be so powerful and advanced in the near future that they would even write code. Better code faster than any professional could ever write. According to their report, by 2040 AI would be used for creating software by the corporate giants instead of human professionals.

Can AI write code?

Now, before we go any further and talk about its aftereffects, let us investigate how much truth is in there. Just like everything else related to AI and ML, this claim is also heavily fueled by speculations and rumors rather than facts.

One of the most famous projects in automatic code generation was run by famous Computer science researcher Andrej Karpathy. In 2015, he used a recurrent neural network to generate code. He used 400 MB of existing GitHub code to train the model and then used the trained model to generate new code. Quite surprisingly, he succeeded!

The trained model was able to generate long-form code with almost no semantic errors (typos or errors due to misplaced keywords), proper braces and indentation, and, even more surprisingly, meaningful comments! There were some minor pitfalls though, like unused variables, undeclared variables, etc.

So, what is the conclusion? Machines are still far from even understanding code, let alone write it meaningfully. With our current understanding of intelligence, we are decades away from even make the machines understand what is code and what to do with it. In Karpathy’s project, although the model was able to ‘generate’ lines of code, it was not truly ‘generating’ them. It was merely putting together lines that it remembered from the training phase – one reason why it was unable to keep track of used variables.

How is AI used for coding?

Prior to starting the actual coding stuff, the developers and the team leaders need to jot down the technical specifications and the features. After they had gone through the specification phase, only then they can start working on the design and development, followed by testing.

Bugs surface every time you move from one step to the next. Taking care of these bugs need you to invest both time and effort. A software’s life cycle usually includes several rounds of testing and bug fixing. Only after the software has gone through the testing period, it reaches the deployment phase and it can finally be released. In short, the software development process is costly, and it involves a lot of risks. And that is precisely why it is a good candidate to be automated partially.

1. Assistance

Ubisoft, one of the biggest game developers in the industry, developed ‘Commit Assistant’, an AI-powered tool specifically made for determining errors in the code. The French giant uses this tool heavily in their software development process, and thus reduces the overall production time.

Commit Assistant helps find out incorrect code using the knowledge acquired from the earlier results. Other examples of AI assistance is intelligent auto-completion. This kind of intelligent programming assistance is ubiquitous in almost every IDEs.

2. Bug fixing

Many of the bugs present in the software does not surface until they have been released already. Facebook, for example, released a tool called ‘SapFix’ a while back to automate the bug fixing process. This AI-powered tool helps automate the creation of fixes that have been caught earlier.

3. Delivery estimation

Budget and schedules are fixed prior to starting a new project for a reason. But sadly, organizations hardly, if ever, meet those numbers due to everchanging market conditions. With the help of the AI, organizations would be able to estimate those numbers much more realistically. Using historical data and the performance metrics from previous projects, project managers would be able to produce more accurate schedules and budget requirements.

Is AI going to replace programmers?

In short, no. At least, not until we see something groundbreaking. That being said, AI might be able to write code one day. But that’s still a distant thing – nothing more than a pipedream. It is going to take time before AI goes to the level where it is able to produce production-grade code all by itself.

But when it does, it is going to become a trusted helping hand of the developers. It will be effective at understanding the needs and investigating the options. It will let the human developers decide how to optimize for situations that are beyond AI’s understanding.

In a nutshell, developers and AI are going to be helpers, not competitors. AI is going to help the developers produce better code while spending less time. Ultimately, the true value of a developer is not in creating stuff. The value is in knowing what to create.

Verdict

Software developers can lower their guard now because the conclusion is pretty clear: AI is not yet ready to take the places of the human workers. Developers still need to cooperate with AI tools in order to solve complex problems. Researchers believe as the AI systems improve over time, they are going to improve in analyzing and curating data.