How AI will change software development processes
AI has a huge potential for speeding up and improving the accuracy of software development processes. In this article, Maria Weinberger explores how the process might be streamlined with the application of artificial intelligence.
The human-driven era of software development meant writing rule-based code which solved deterministic problems using logic. The age of machine learning is here and AI for software development will forever change programming. It’s no longer about defining if-then-else cycles, and it has become more about selecting the right data to train the neural network which will solve the given problem without human intervention.
This is a revolution in the way problems are solved, the tools used, the mindset and even the definition of what a programmer does. We will look at some of the ways AI can enhance software development, some pitfalls and finally, why this approach is valuable.
How can AI boost software development?
Even if there is an evident hype around AI for software development, the technique is still in its infancy, and it will be years until it can be used on a larger scale. Also, there are some aspects which are even better managed by conventional software. Here are some parts where AI and machine learning can make a difference.
Creating an MVP fast
Traditional programming required months of planning and preparing to jump-start a project. Getting it to a prototype level to get more funding was another daunting step which needed essential resources. Now, through machine learning, this cycle can be shorted to a few lines of code or just a drag and drop. A good example is creating a chatbot either by using predefined natural language libraries or using a user-friendly, no-code platform. Just imagine how long that would take in a standard language such as C++.
Managing the project
An experienced project manager learns from past situations about delivery times, possible delays, the most common pitfalls and other details which help to remain within the time and money budget. If all this data is stored, it can be used to train an automated system to produce accurate estimates. Since these are in fact pattern detection jobs, using deep learning is the best choice. All you need is a detailed log of past projects, including bugs, estimates and actual values and even user stories and reviews.
This is a great way to estimate the delivery schedule and stay true to your obligations as outlined in the initial contract. As the program spends more time looking at the team’s performance and obstacles, it learns about individual habits and can create personalized work schedules which include the work patterns of each member, for maximum efficiency.
Pattern detection can go more in-depth to identify and classify error types. The deep learning algorithm can flag known errors and speed up the debugging process. It can shadow a programmer and even learn how to fix each of them. After sufficient training, the machine could be able to automatically correct a wide range of mistakes much in the same way autocorrect works on smartphones. The only problem with this approach would be a similar annoying effect of correcting what doesn’t need to be changed.
Most modern programming environments have some embedded help like suggested auto-complete or another type of interactive documentation. Having an intelligent assistant speeds up the developing process and helps novices learn about the environment much faster than through trial and error.
AI could act as a trainer and come up with recommendations, offer code examples or prevent simple coding mistakes such as closing a parenthesis. A great example of such an assistant developed for Python is Kite.
Automate code generation
More than just suggesting code completion, once it learns about the necessary patterns, an AI system could generate code by putting together some predefined modules, like LEGO pieces. At a later time in the future, AI software development will replace the work of some junior programmers, and it is also the first step in self-programming machines.
Through the development cycle, testing is a crucial component of a quality software product. One of the challenges of software testing is creating a comprehensive list including most likely cases, as well as some extreme situations which could have a significant impact on the performance of the program. AI can do this by looking at past logs and generating a list of test cases automatically to run through the system.
It can also predict outcomes of testing without even performing the actual tests and only focus on those which could be problematic, thus saving time if the process is already late.
When creating a software product, it’s common to debate over which features to include and which to leave for later. AI can generate simulations and output a hierarchy of the best features to have for the success of the product based on use rates for similar products or by analyzing the voice of the customer, as retrieved from product reviews and social media.
The black box effect
Although many AI-powered algorithms offer great predictions and automatization, all of them have a definite downside. The way the algorithm learns is entirely opaque to the outside observer. The only way to tinker with the algorithm is to feed it new data sets and look at the outputs. This way is quite inefficient when it comes to fine-tuning. This is not trivial, as it can lead to very biased and dangerous results, much like an unsupervised child left alone to learn about the world just by browsing the Internet.
Will programmers disappear?
The applications listed above can inoculate the idea that in a couple of years software developers will slowly become obsolete and self-programming machines will take their place. This will not happen in the foreseeable future since AI systems are just starting to become more reliable. However, it is safe to assume that AI will grow in importance and have a defined support role for developers. The new tools will shorten the new product development cycle, will act as training and support and overall will help produce better and more affordable software.