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

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).

Figure 1. Two software paradigms (adapted from Pedro Domingos)

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.

Software development 2.0

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:

  1. The popularity and growth of open-source software libraries such as Scikit-learn (2007), TensorFlow (2015), Keras (2015), PyTorch (2016), and fast.ai (2018)
  2. The availability of cloud-hosted ‘as-built AI’ accessed via application programming interfaces (APIs)
  3. The emergence of automated machine learning (AutoML).

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:

  1. Forcing the articulation of what a system is trying to achieve
  2. Considering system consequences and taking end-to-end views
  3. Involving diverse stakeholders and facilitating hard conversations
  4. Anticipating change
  5. Employing design thinking, encompassing principles of abstraction, decomposition, scalability, and reusability.
Figure 2. Software development 2.0 is the mutually beneficial intersection of traditional software development and machine learning

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.

Navigating (r)evolutionary change in software development

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.

Related industries
Professional services
Related solutions
Advisory & consulting Data & analytics Platforms & applications Software engineering