Author: Liam Hackett (Head of Development)

AI is the buzzword of the decade.

The most downloaded app on IOS and Android uses an AI algorithm to cater people’s content. Nvidia, a leader in graphics processing, just announced their next generation technology, DLSS, that improves video game performance using AI. Artificial Intelligence has even moved from the lab to the mass media; the winner of the Colorado’s State Fair’s annual art competition was won by an AI generated image.

As AI begins to impact the general public, what uses does it have for development?

What is Artificial Intelligence?

Artificial intelligence allows programmers and developers to enable computers to analyse data and solve problems. AI systems are created by applying tools such as machine learning, deep learning, neural networks, computer vision, and natural language processing.

Machine learning works by ‘training’ a data model with examples of the results you’re trying to accomplish. If, for example, I want to train a data model to recognise if a tomato is ripe or not, I would feed my data model with hundreds of thousands of photos of ripe tomatoes, with a label stating that this is a ripe tomato. I would then feed my model hundreds of thousands of unripe or completely different food, with the label saying this is unripe.

Using continued testing, I could then link my model to an interface where I can feed it a photo of a tomato and see if the model recognises it as a tomato. If it can’t, then more training is needed.

This is true for any machine learning algorithm, from teaching a computer to play Super Mario, to generating this article’s cover photo (shown below).

Ai software development

From gimmick to gamechanger for software development

In 2019, Microsoft hosted a seminar in Manchester about Azure’s AI solutions.

At the time, I believed that AI technology was an amazing tool for image recognition; other uses for machine learning I discarded as mostly a marketing gimmick, thinking that these could equally be made as a hand-crafted algorithm.

Dialogflow is a tool I’ve used in the past to build dynamic chatbots for Facebook. Apart from that, I hadn’t seen the need to use anything in my professional career. But now, AI is extending to developer tools.

Github Co-pilot, the most publicised and popular natural language code generator, while initially impressive, did not produce results that were at a standard to be used in a professional environment. Researchers found that, 40% of the time, the code generated contained security vulnerabilities.

First Use Case: Writing and Testing New Code

First off was Marcel Pociot’s, developer and managing partner at Beyond Code, proof of concept to generate test cases for human generated code.

This brings the possibility of natural language code generators being able to interoperate code a human has written and write several reliable tests for the new functionality. Personally, I believe we’ll see a professional use case for this in the very near future, when working on new features for Prism Platform.

Second Use Case: CLI Debugging

The second use case I saw recently was Microsoft’s Codex-CLI, which builds on OpenAi’s codex natural language interpreter. This has far more interesting possibilities.

Writing applications is a perfect blend of art and science. Problems need to be artistically interpreted and solved in a way that’s easy to read, easy to expand, and easy to test.

An understanding of the programming language and how it interacts with a computer system help you implement your solution. Command Line Interface (CLI) on the other hand, is more a skill of memorisation.

Understanding what you’re trying to achieve, then googling and guessing the best result for your scenario, is a skill in itself.
Codex-CLI could potentially be the next step in CLI debugging. Being a shortcut between your google query and the task you’re trying to complete.

Having a natural language interpreter directly in your terminal bridges the ‘Google gap’, while also giving you the opportunity to dissect the result and learn from it. I can see myself using this on a regular basis to solve terminal tasks I do on a rare occasion. Currently Codex-CLI is not publicly available, but is something I will keep my eye on.

A silver bullet for the next generation of software development?

Natural language interpreters will require a new skill. From what we’ve seen from image generators like Dale-2 and Midjourny, users need to write their query in a particular way to get the best result. This is a unique skill, like writing just the right google query to succinctly solve the problem you’re trying to solve.

I don’t believe the AI revolution will cause mass redundancy, but instead be an effective assistant that requires a new set of skills to use effectively, while search engines will continue to be a fallback.

Script kiddies already exist, but it is worrying that even more young developers may use these tools as a crutch and lose the sense of what the underlying code is doing. Developers take code from stack overflow all the time without any real understanding of the functionality, just the result. Experienced developers already know the pitfalls of this.

Natural language processors simply create a more convenient way to solve problems within your editor without searching through external sources. Aspiring engineers will take the output, dissect it, and improve the implementation. This will lead back to Github and be used to improve Co-pilot.

Like with language preferences, code generators will lead to snobbery within development communities and jealousy will arise of products made using code generators that see great success. Being deemed as lessor than their hand-crafted counterpart.
Snobbery like this will always exist, and I can see arguments arising between communities on which code generator is best, and the preference of code styling between generators.

In conclusion

What you create with these tools is all that matters; the tools themselves simply help you reach that goal more efficiently.
AI is narrowing the speed at which knowledge is gathered, accessed and utilized, just like how the internet revolutionized how knowledge was gathered, accessed and utilized back in the 2000s.

Developers using AI code generators are more similar to cyborgs than robots. A robot would not be able to use a code generator to create a great application; you need human ingenuity to harness this technology.

From an engineering standpoint, we’ve seen tools that augment your programming ability, or advise what commands to use in a terminal environment. These tools are here to stay, and for one salute our new cyborg overlords.