How the Manufacturing (R)evolutions Help Us Predict the Future of Software Development
Is the evolution of business software development principles parallel to the manufacturing ones and is it predicting it? Interestingly, we can find striking similarities between the history of manufacturing since the Industrial Revolution and the past 20 years of software development.
The evolution of the customer needs and the improvement of the production techniques have driven the progress of manufacturing principles.
So, 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. The famous sentence from Ford underlined: “Any customer can have a car in any colour, that he wants so long as it is black”.
In software development, the first adopted approach was completely monolithic mirroring the same principle of Fordism. 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 colours and models variety.
After the World War I, Toyota introduced a new manufacturing game-changer. Toyotism and the Lean manufacturing model put in place a series of principles centred on the idea of continuous improvement. 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.
Smart Factory and Mass Customization
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 performing platform, a Smart DevOps Software factory. We will follow up in a next article about this concept.