30 Jun 2020

AI is expected to have a significant impact on coding. One such AI is Zoea which creates software automatically from a specification that looks like a set of test cases. This will enable many more people to produce software but it will also fundamentally change our relationship with code.

It used to be that if you wanted to do anything with a computer you had to use some sort of programming language. There were (and in some cases still are) specialist programming languages for word processing, drawing pictures, composing music and virtually anything else you can imagine. What happened was that most of these got superseded by better abstractions such as user interfaces. This was great news for people who weren't programmers as the abstractions are a lot simpler to learn and use. Even a lot of programmers prefer to use them.

The natural conclusion of this trend will be to replace general purpose programming languages with some sort of abstraction and people have been trying to make this happen for a long time. For example some systems allow the user to draw a flowchart instead of typing a program. The trouble with this is that you still have to be a programmer to use them. A better abstraction lets the user specify a program as a set of requirements such as test cases composed of input-output examples. Virtually anyone can do this as it doesn't require any programming skills. Zoea is the first AI to make this approach feasible for programs of any size.

Some people are also looking at how AI can be applied to improve the productivity of conventional languages. A recurring example of this is the smart autocomplete. Here the text editor uses AI to guess what the developer is going to type next based on the current file and a model trained on lots of examples.

Being able to finish the current line is clearly a step in the right direction but where does it go next? The same sort of approach could perhaps be applied in a few more areas like dependency management. What would be even better is if the AI could predict the next function that the user is going to write - or even the whole program. Sadly that's never going to happen with conventional programming languages. The reason is that the user would have to indicate somehow what the program is supposed to do.

The future of AI in software development is about requirements rather than code. If a user is going to offload some or all of the coding effort to an AI helper then it follows that they must be able to specify the program in some way. This is what Zoea was created for.

AI is going to have a huge impact on software development. The economic pressure is enough to ensure it will happen. There will also be a massive first mover advantage. 

Tools like the smart autocomplete will raise people's expectations about what AI can do for software development. To get to the next level we will need to move beyond conventional imperative languages and start describing software in terms of requirements. Once that starts to happen software development will never be the same again.