The self coding future is closer than you think

Daniel Kroening
© Shutterstock / barkarola

Who doesn’t wish we could snap our fingers and have the tough, labor-intensive part of coding be finished? In this article, Daniel Kroening imagines a future where AI codes for us, and we get to do all the fun parts. The self-coding future may not be very far away. Fact or fiction?

In the not so distant past, programming was a more enjoyable task than it is today. Previously, an engineer could sit down and write step-by-step instructions for a computer to follow. Now, with multiple layers of testing, integration, and complex deployment rules this once simple process is so complex that it has become cumbersome.

We need only look to 2008 to see why complexity at the macro level inherently carries risks; part of the reason the global banking market almost collapsed was the fact that the industry had highly complex products which few truly understood. This is not to say that the software engineering industry faces a similar fate, it is simply to note that – wherever possible – we must strive to simplify our processes.

Out of all of the processes that developers loathe, one stands head and shoulders above the rest: testing. For contemporary software engineers, testing is the most time-consuming element of the coding process. Complexity breeds boredom for engineers and that creates risk.

Testing is, in many aspects, dull. For many it has made a once beloved hobby tedious and tiresome. This is the very reason that software testers are in such high demand; a skilled tester is a rarity as talented coders continue to shun this type of work.

The effect this has on businesses is clear: an unnecessarily elevated level of capital is being allocated to this task. The effect this has on coders is similarly transparent: a reduced capacity to innovate.

SEE ALSO: Achieving real-time machine learning and deep learning with in-memory computing

But what if software developers could bypass this wearisome task altogether? Could we get to the point wherein programmers can train computers just as they would teach a human? Creating artificially intelligent ‘self-coding’ code could be the answer.

Testing, or how I learned to stop worrying and love AI

Suggestions of replacing human tasks with an AI naturally raise red flags. There is an ongoing debate amongst industry professionals, academics, media, governments and the population more broadly on whether or not AI will become a force for good in society. Some see the new technology as a liberator, others view it as a job destroyer or even a danger in ways we can’t anticipate. But no matter which side of the debate you fall on, one thing is clear: AI is coming.

Undeniably, in many areas it has already arrived. Artificial intelligence is helping doctors diagnose tuberculosis, power driverless cars, and even predict the music we will love.

In my view, we should approach AI as a form of assistance – a technology that will enhance our skills, not replace them. It’s not time to get scared, it’s time to be excited. And with the advent of intelligent digital testers, our capacity to innovate is set to greatly increase.

Development of AI solutions is generally very time-consuming. To hasten development cycles, we need to change our approach. One way to achieve this is to build a ‘programmer’ neural network which acts in a similar way to the human brain. Consider the way we teach humans to recognise what a car is. Do we tell someone to look for four wheels and steel body panels? No, we do not. Instead, we show them numerous images of a car, letting them categorize and define the object themselves. We need to teach the code in the exact same way.

This is not to say to that the algorithms supporting this ‘self-coding’ code are simple – far from it. It is to say that the end product will simplify the process of coding itself and ultimately broaden the base of potential end-users.

So when can we expect our devoted programmers to be liberated from their testing shackles? Well, we all see every day see that technology has accelerated at an astonishing rate since the turn of the century, and there is perhaps no greater icon for the digitisation of the world than the smartphone.  This device has permeated every corner of the globe, with computational power that would easily make NASA’s Apollo team blush.

However, you might object, computational power is not a sufficient ingredient for a brilliant AI. For example, despite a multi-core CPI in an iPhone, Apple’s flagship AI chatbot Siri remains frustratingly rudimentary. At the current rate of development, it’s likely we’re years away from away from developing a voice-assistant that can accurately accommodate our daily requests. But once we consider what this technology looked like just five years ago, we see the tremendous amount of progress that has been made.

This timeline differs from that of AI-driven testing. Unlike such fuzzy things as understanding the precise meaning of human speech, the semantics of computer programs is well-defined. In some ways, this makes code easier to deal with for AI. Thanks to this and a few other recent advances of computer science, we are very much on the cusp of eliminating the need for human testers altogether. Just as AI is set to revolutionise voice assistant and automotive technology, so too is it set to revolutionise coding.

SEE ALSO: ML 101: The rules of machine learning

Looking forward

The future of work remains bright; not in spite of artificial intelligence, but precisely because of it.

The trend is clear – the ‘dirty work’ humans engage in will continue to diminish; eventually there will be no more implementing and analysing test results, these tasks will be handled by AI-powered bots. Humans will still be unequivocally integral to the process however, we are the ones that must act on these findings.

So, what does this actually mean?

It means coders can get on with the actual interesting and creative aspects of their role. One day, it may even democratise the process of coding itself. As it stands, to be an effective software engineer requires education (be it formal or self-taught) as well as heaps of experience.

In the near future, we could potentially bid adieu to (the majority of) coding education altogether. The process could eventually become as simple as telling your computer what you want to create, and allowing it to design an algorithm that closely matches your description.

Beyond the obvious cost saving benefits and the democratisation of the process, artificial intelligence may even bring that elusive quality back to coding: fun.


Daniel Kroening

Daniel Kroening is a Professor of Computer Science at the University of Oxford and CEO at Diffblue.

Inline Feedbacks
View all comments
Valentin Grigoryevskiy
Valentin Grigoryevskiy
2 years ago

Daniel, great article!

Kevin Malone
Kevin Malone
1 year ago

Hi Elissa

1 year ago

really really useful!!! thanks!

1 year ago

FIT1049 anyone?

Reply to  droppingout
1 year ago

lol hey meee