digital_machine_learning_conceptIn 2011, in an article in the Wall Street Journal, Marc Andreessen proclaimed that software is eating the world. He argued that a slew of technological innovations including advanced microprocessors and high-speed connectivity will revolutionize traditional business, and that every company should become a software company. Many pundits have subsequently argued that even traditional businesses will need to rethink their business models. Andreessen even went so far as to say that the entire retail vertical will eventually die due to the scalability of companies like Amazon. In short, if you aren’t thinking about how you will disrupt your industry you can bet your competitors are already doing so.  If every company needs to reinvent themselves as a software company, what will allow them to differentiate themselves from their competitors?

My point of view is that Machine Learning embedded into software systems is key to next generation disruptive software systems. SAP along with every other large software company is investing heavily in Machine Learning into core products and offerings. The challenges for software companies are substantive, and the whole approach to how you engineer, test, and update software will change.

Traditional Approach

The traditional approach to how one engineers software focuses on humans designing systems that use rules and Boolean logic to solve problems.

boolean_logic

Using this traditional approach, a quality assurance (QA) process evolved that tested the software to make sure it was working as designed. Software development organizations know how to design quality testing to ensure software is meeting business and technical requirements. As we enter the age of Simple Artificial Intelligence, the approach to designing and testing software will need to change.

Next Generation Approach

Moving forward, development teams composed of humans will disappear and software will be designed and coded by machine learning algorithms. Instead of humans coming up with ways to solve problems, algorithms will use examples based on data, and code a solution.  

machine_learning_algorithm

While we believe this is inevitable, the approach for how you test and release software built via machine learning is a challenge. Software designed and created via machine learning is probabilistic in nature and not Boolean. One of the primary challenges we will encounter is how do you coherently test systems, which at their heart are probabilistic?

In the old world, it was relatively easy to identify which part of the system was not working properly. In the new world, the probabilistic nature of our code will make safety and risk mitigation a significant challenge. If this is such a challenge, why even try it?

The answer is speed. As decision cycles grow significantly smaller,  we’ll need a completely different software development approach based on automation. With the increase in release, cycles from years to hours or minutes will come with  risk. Machine Learning will certainly introduce error, but whether it’s the human or an algorithm there is always an inevitable amount of randomness that ensures that we’ll never always get everything right.

In short, the risk of not adopting this next generation approach is that your competitors will, and disrupt you into oblivion.

For more on predictive analytics, read the rest of our Predictive Thursday blogs.