Is the evolution of business Software development principles parallel to the Manufacturing ones and is it predicting it? Interestingly, having a closer look at the history of manufacturing since the Industrial Revolution and comparing it to the past 20 years of Software development, we can find striking similarities.
The advances in manufacturing principles have been driven by both the improvement of the production techniques and the evolution of the customer needs. The first and second industrial revolutions were all about mass producing manufactured goods. In the beginning of the 20th century, Fordism brought a new radical change: thanks to the invention of the assembly line, the principle of standardization allowed to produce thousands of identical units of the Model T Ford. The cost cutting that this new technique represented democratized the access to the goods, but with a serious limitation, namely, only one single model was available, as the famous sentence from Ford underlined: “Any customer can have a car in any color that he wants so long as it is black”.
In software development, the same principle has been applied – the first adopted approach was completely monolithic. As defined by Gunnar Menzel in his article Microservices in cloud-based infrastructure, this one-size-fits-all model consists in developing a “software design pattern that includes all functional and non-functional features into one box”. What happened? As with the cars, customers started to say the particular word we hear every day in software development: BUT. “I like it but…” “it does almost what I want but…”. The “buts” in the early 1920s lead to the next step forward in car manufacturing: General Motors started to offer colors and models variety.
After the war, a new manufacturing game-changer happened with Toyota’s disruptive approach. Toyotism and the Lean manufacturing model allowed to put in place a series of principles among which the idea of continuous improvement was reigning. Some of the concepts of this manufacturing turnaround were adopted much later in Software development and described by Eric Ries in his book The Lean Startup. Toyota’s inspirational manufacturing model, years later, lead software companies to adopt agile, reiterative and highly responsive methodologies to better answer their customers’ requirements and all their “buts”.
The monolithic model was no longer acceptable as the architecture of the solutions needed a finer grain. Service-Oriented Architecture (SOA) started to replace the previous approach by “exposing discrete components of an application as web services” (G. Menzel). The multi-layered approach of SOA “slices up” the solution in multiple layers of services and therefore provides more flexibility.
We are now entering a new manufacturing era: The Smart Manufacturing or Industry 4.0 age. The customers’ demands changed, and manufacturing companies are now facing a new challenge: how to provide mass customized products to their clients? The same question can be asked of software development: how does one provide highly customized pieces of software that can also be supported, upgraded and can be made to evolve through their whole lifecycle? The answer resides in augmenting the granularity of the provided solutions. The microservices approach is the best answer to this question yet. As Menzel defines it, microservices are “independent application services delivering one single business capability in an independent, loosely connected and self-contained fashion”. In other words, every piece of the puzzle does one thing, does it well and is highly independent of the rest.
Getting back to the initial question: is the Manufacturing evolution a good indicator to predict the future of Software development? The principles of both sectors advance in parallel because the demand of customers evolves in the same direction, from mass standardization to mass customization. Mass customization of manufactured goods is only possible in a Smart Factory. Mass customization of software development is only possible thanks to one special highly performant platform, a Smart DevOps Software factory. We will follow up in a next article about this concept.