How AI will power the software of tomorrow
All industries are being impacted by Artificial Intelligence (AI) and software development is no exception. Every part of the software development process can benefit from the input of AI, from software design and testing to decision-making and automated code generation. Today, many AI applications focus on improving existing processes and development tools. However, research firm Forrester predicts that AI will eventually completely re-write the way that the sector works, as it starts to seep into every part of the software lifecycle – improving processes that are traditionally inefficient and prone to mistakes.
Redefining how software development works
Historically, developing a computer program would require a developer specifying what they wish the system to do, and then hand-engineering all desired features. However, there are many tasks that are too complex to code using traditional rules and algorithms. As an example, it would be virtually impossible to hand-engineer software to correctly identify photos of dogs. There are simply too many variables, such as fur colour, size, tail length, ear shape and much more. That’s where AI techniques like machine learning and deep learning can help.
Machine learning in action
In a recent example, developers succeeded in teaching a computer to differentiate between a chihuahua and a muffin using AI. With machine learning, a computer isn’t given rules on how to make decisions and complete certain actions. Instead there is a set of curated, tailored data that teaches the machine what to do. Positive feedback can reinforce certain actions, whilst negative feedback will stop other actions from recurring. In many ways, this is how the recommendations work on Amazon and Spotify. A customer buying a recommended product or adding a song to their playlist acts as positive reinforcement for the machine-learning algorithms behind each platform.
The future of programming
We expect to see software development increasingly shifting towards a machine-learning model, where programmers will rely less on traditional programming methods. The software developers of tomorrow will most likely move away from writing code to instead doing more scientific tasks like collecting, processing and analysing data for an AI engine to use. As author and Google research engineer Pete Warden predicts: “In ten years, most software jobs won’t involve programming.”
Current uses of AI in software
Before this AI-driven future, however, there are more commonplace applications of the technology that are being used now. Let’s take a look at some examples!
- Predicting project timelines
AI can help to predict development timelines by using historic project data such as feature definitions, project estimates, actual timings, employee profiles, and more. While it may be nearly impossible for a human to take all variables into consideration affecting a project, AI can do this quickly and easily. By creating a digital profile of decisions and consequences, a development team can estimate costs more accurately and avoid unnecessary delays.
- AI programming assistants
More advanced developers can benefit from AI programming assistants, such as Kite for Python. This is a tool that can offer just-in-time support and recommendations to developers when they are reading documentation and debugging code. This could include suggesting relevant documents to read, or highlighting best practices and code examples. Through these assistants, developers can drastically cut their workload and focus on more creative and strategic tasks, such as improving user experience.
- Routine testing and identifying errors
AI can analyse historical project data to identify common errors and automatically flag them. Once the software has been developed, AI can quickly alert the team to any errors – before the issue becomes worse and causes system downtime or customer complaints.
Software tests often have to be repeated every time the source code is modified, which is time-consuming and costly. However, AI can automate much of this, saving time and resources while allowing human testers to focus on more sophisticated tests.
We expect to see testing become more or less AI-dominated in the future, where software errors can be automatically identified and fixed by machines without the need for human intervention.
- GUI testing
These days, every consumer interacts with software in a graphic and visual way. This makes Graphical User Interfaces (GUI) incredibly important to the long-term success of a software product. Testing GUIs is vital to ensure that the user experience is as expected, and error-free. However, a lot of GUI testing methods rely heavily on human knowledge and intervention.
With AI, testing becomes more precise and efficient. Applitools is an AI-powered GUI testing tool that automatically checks whether or not visual code is functioning properly. Developers can see how their software looks via multiple screen layouts (including smartphones and tablets) to quickly identify any visual errors. They can also test the visual user experience and the functional behaviour of their software.
- More informed decision-making
Many organisations spend a lot of time prioritising different products and features when making decisions for future development. This process can become more data-driven and informed by using AI for analysing the success of past development projects and released software. This can help business leaders to focus their resources on projects that will provide the most return on investment and discard the ones that are too risky.
AI is a work in progress
Much like software itself, AI technology is constantly evolving and improving – which holds exciting potential for software development. While the current benefits of using AI come from efficiencies in the development process and improved decision-making, it will most likely alter our very notion of software development in the future.
One day, AI will be better at coding than the best human programmers – which is a good thing for the entire industry.