Do you have a question? Want to learn more about our products and solutions, the latest career opportunities, or our events? We're here to help. Get in touch with us.
Do you have a question? Want to learn more about our products and solutions, the latest career opportunities, or our events? We're here to help. Get in touch with us.
We've received your message. One of our experts will be in touch with you soon.
Artificial intelligence (AI) and machine learning are used to help businesses develop new products and unlock real-time insights, but it's also key to the next wave of software development.
Algorithmia’s recent survey, 2021 enterprise trends in machine learning, found AI projects are being accelerated year on year, but the impact is largely discussed in regards to the transformation of industries. Understanding how machine learning and software development can benefit each other is now a key concern for both disciplines.
Software 2.0 captures the idea that machine learning (a subfield of artificial intelligence, which learns from data and encompasses deep learning / neural networks) can, and should, be used to generate code. Proposed in 2017, software 2.0 argues that neural networks “represent the beginning of a fundamental shift in how we write software,” says Andrej Karpathy. The shift from traditional software programming to software 2.0 (machine learning) can be visualised as the difference between two software paradigms (Figure 1).
Rather than hand coding every program decision (rules-based programming), software 2.0 uses machine learning algorithms to learn the program (probability-based programming) that best performs a specific goal.
While software 2.0 acknowledges its own limitations, the approach makes sense when rules are too numerous, dynamic, or complex to hand code. It increases agility by freeing programmers from the coding and maintenance of rule-based programming, and it provides the ability to address new problems concerning natural language, speech, and images.
Four years later, the concept of software 2.0 needs to expand. It is too narrowly articulated as software 'programming' 2.0. Instead, we should be articulating software 'development' 2.0 to capture the broader and emerging intersection of traditional software development processes and practices and AI.
We are at the beginning of the intersection of traditional software development and machine learning. This will see the previously separate disciplines become more aligned and intermixed. Applied machine learning is increasingly accessible to traditional software programmers.
This is evidenced in:
Software libraries and APIs speak the language of software programmers while taking care of the mathematics and algorithms that underpin machine learning and keep researchers occupied. Traditional software programmers no longer need a PhD in machine learning to reap the rewards.
Conversely, traditional software development processes and practices are increasingly required by machine learning. A recent AI conference held by Neural Information Processing Systems emphasised the need to apply software engineering thinking to machine learning. Traditional software development is both big picture and detailed oriented.
It benefits software delivery by:
Software development 2.0 (Figure 2) is an emerging evolution driven by the maturing of applied machine learning and its increasing adoption by traditional software programmers. It means it's no longer an either-or choice between traditional programming or machine learning. Instead, it’s a matter of knowing when and why an approach is the best solution and using the best software processes to deliver them.
Education is the first step in navigating this change. This is why we emphasise that every person in a company who is involved in software development in any way starts with understanding basic AI and machine learning concepts before moving on to hands-on projects and technical upskilling within their businesses. A recent lesson from cloud disruption is that staying up to date and learning to communicate across knowledge domains is also essential for success.
Machine learning is a powerful new approach. Intelligently combining it with traditional models will ultimately help us build better software.