How does software development look in the AI era?

A 2018 study by Adobe revealed that, at the time, 47% of digitally mature organizations already had a defined AI strategy, with 84% also having a personalized strategy within their mobile app experience. Organizations all over the world are taking steps to move toward more AI-enabled tools and a transformative experience in all company areas. At this point, it is only logical to start discussing about the impact artificial intelligence has on software development.

According to a Forrester Research survey, conducted on 25 application development and delivery (AD&D) teams, the adoption of AI in IT is expected to improve planning, development and especially testing. Machine learning and NLP techniques can successfully be used to accelerate the traditional software development life cycle.

Automatic generation of code

The above mentioned Forrester report also points out that artificial intelligence is able to generate new code. How is this possible? Using NLP. Developers can add the business requirements into natural language which is then converted into an executable language for machines. Based on this, the AI system can generate the code needed to implement the functionality. In some cases, it can also bring its own idea and write the code for implementing it.

Coding Assistance

A developer’s life is not only about writing clean and decoupled code that results in interactive and user-friendly solutions. It also requires a lot of time and effort put into reading documentation, debugging and fixing issues. With the help of machine learning and smart coding assistants, developers can quickly receive feedback and suggestions for improvement for the code they have written, which helps them save a lot of time. Java’s Codota and Python’s Kite are examples of such assistants, but probably the best known at the moment is Microsoft’s IntelliSense, shipped with Visual Studio and nicely integrated into it.

Another use of machine learning in helping developers and the organizations save time and costs is by analyzing code – faster and more accurately – and identifying potential areas for refactoring.

Software design

Some of the less creative parts of the design process – such as deciding on the correct choice for each stage – are usually mistake-prone and quite boring to be honest. Which is why the traditional design process can be improved with smart specialists. For instance, the Artificial Intelligence Design Assistant (AIDA), deployed by website building platform Bookmark, uses AI to understand users’ needs and then creates a specific website for that type of user. The system is able to select from millions of combinations and create the website’s look and feel, focus and other areas that can be customizable. AIDA is able to provide a first draft of the pages in just about 2 minutes and, from that point, the design team can continue to create the website.

Project planning and prototyping

When it comes to larger projects, turning business requirements into an actual technical product might require a lot of planning and months or even years of implementation. Machine learning can reduce the effort by replicating human intelligence and creating various permutations of a situation similar to the human brain. In addition, artificial intelligence can help reduce time needed to build a prototype by allowing individuals with less technical expertise to develop technologies using either natural language or visual interfaces.

Estimations and risk assessment

Software products must usually be delivered in time and on budget, which, in some cases, makes the initial estimation process a challenge for everyone involved. Accurate estimations require time, effort, technical expertise, business awareness and understanding of context. Artificial intelligence can turn out to be a great help in this situation too. As machine learning algorithms can analyze and interpret large amounts of data in a relatively short amount of time, they can be fed data from previous similar projects and trained to predict effort and budget more accurately and faster. Data which can be used for training the algorithm include user stories, feature definitions, estimates and actual results.

Most of the times, accurate estimations and a well-designed project planning are not enough to ensure a successful delivery. Unexpected issues, project dependencies or other external factors can influence the life cycle of the product. To prevent or better assess such risks, project managers can use AI systems. As with estimations, ML algorithms can be trained to identify potential risks and give a more realistic timeline. The AI model can be trained with past data of project start and end dates.

Capacity allocation

Another aspect that is sometimes problematic in software development is deciding on the number of team members needed to deliver a product. By analyzing data from previous projects, AI can predict the number of developers needed to meet the deadline. In addition, if the model has access to data about other projects developed in the company, it can tell the project manager in real-time which developers are already assigned and which ones are available.

Obviously, this can also be easily done by an individual, however, the AI model is able to do it faster and with better accuracy. This is particularly helpful in case the current number of developers involved in the project is not correlated with the work delivered and it needs to be increased or decreased.

These are only a few of the areas and processes that benefit from the greater advantages artificial intelligence can deliver in software development. Testing, strategic decision-making, maintenance, analytics and error handling are also prime candidates for improvement using NLP or machine learning. As stated by Andrej Karpathy, OpenAI’s ex-research scientist and current Tesla Director of AI, future programmers won’t maintain complex repositories, analyze running times or create intricate programs. They’ll collect, sanitize, label, analyze, and visualize data feeding neural networks.

If you want to learn more about the role of artificial intelligence in software development, check out this interesting presentation by Peter Norvig, director of research at Google.