The world knows manufacturing since almost the age of human beings on earth by creating different tools to help in their daily living routines. It was not at scale at the time but it is a sort of manufacturing process.
The manufacturing process has been advanced starting with Industry 1.0 until reaching Industry 4.0 with the mix of advanced technology, data & AI to improve the manufacturing process and strengthen the factory of the future with many innovative scenarios of full automation, connected supply chain, predictive maintenance, and others.
Going deeper into the manufacturing process, I found that there are lots of similarities in objectives, concerns, and challenges with the software engineering development process. This beauty of knowing the similarities and differences can make us learn how we can use the combined knowledge of two different industries to bring more innovation and efficiency for both.
In this article, I discuss from my observation what are similarities and the learning between both processes. To make good anatomy of the two, let us see them from different aspects
The ultimate value
Both are concerned with creating and building things with the mindset of having a good usable product for the end-user.
If you are dealing with the end consumers, the results become more complex as well to ensure value at scale.
The scale in manufacturing is concerned more about the rate of production to get the same product with huge numbers with the same quality across different manufacturing steps and controlling the cost of production as well.
The scale in software development is concerned more with scaling the same product to millions of users without any distribution of its operations, we can find this more in the cloud services that are offered as services for end consumers. However, a similar concept of value at scale in manufacturing exists in the software package that developed and shipped to different users and each user has his/her own version of the product, for example, operating systems, office products, which can be installed directly to the user’s computer.
Both processes need some flexibility to personalize the end products based on the market, for example, localization, having specific standards to follow.
Flexibility in Software development can be related to prioritization of work as well, what matters first, and this can be a continuous process like Scrum, extreme programming, and agile.
While in manufacturing is mainly related to selecting different materials, operating conditions, and machines as well inside the manufacturing process to have different products customization.
Flexibility as well to meet end-users concerns, and start new innovative features and functions to the product.
Product Design process
Before having the end product to be shipped to the end-users, both processes need to have a design first, and test this design from many aspects, for example, does it fulfill the requirements, is it usable?
For example, if a manufacturing company would like to design a new shopping cart, they will get requirements and start having the prototype and ask users for feedback, then the designer starts to optimize and alter the design until having the final approved design to start manufacturing process.
Similar to manufacturing, if a software company is designing a mobile application, it will start with mock-ups, prototype, get feedback, then build the Minimal viable product, and continue the process with iteration until having the mature product.
Is it possible to have MVP in manufacture as the end product and then upgrade and put different components later? Can you imagine MVP in the automotive industry?
I would say, the concept is there with some differences like having the basic functional car that delivers its objectives of commuting from one place to another. Then you the different categories with different luxuries. But, is it possible to make the basic model a luxury or it will end paying almost the same car cost to reach that state. It can be achieved in discrete manufacturing where the factory assembles different parts to create a product.
The main concern in both processes on how to make the design process flexible enough to meet the cost and quality objectives of the end products.
This is an important challenge in both processes on how to ensure the conformance of the end product with the design.
In the manufacturing process, the production manager can design to change the material due to the unavailability of raw material. The final design can be also different due to the time consumed in machinery with a simpler design. So, it is always a trade-off process exactly as software engineering.
The manufacturing process from a product perspective can be predicted more compared to the software product.
Quality in both processes is essential and major for the success of the end product. You need to make sure the product is functional in both cases and do the operations that suppose to do, but the quality measurement is costly in the manufacturing process.
And this can be tremendous learning from the software development industry, as in software development, the modern practice is to shift the quality to the left of the process to start early since the product requirements definition.
So, how to inject the quality in each step in manufacturing to minimize the total loss of the product because of early quality in a single component or step. For example, you can have a vibration in one machine that causes variation in the whole product line and can lead to rejecting the whole batch not only one item. How this issue can be detected early and fixed directly or perform alternative steps to avoid repeating the same issue.
In software engineering, those kinds of quality inspections are automated. The manufacturing process is still dependent on human labor to do the inspection during the different inspection types, pre-production (PPI), During production(DPI), pre-shipment (PSI), Piece by Piece inspection (PyPI), and Loading Supervision (LS).
With the Internet of things, this is possible to connect the machine’s data to have full visibility of the production line and detect and identify potential issues that may happen with using artificial intelligence to identify possible scenarios as well.
Many factories as well started to use computer vision models to automate the piece-by-piece inspection through spotting issues in the product appearance directly.
There are many manufacturing process types, like job shop, flow shop, batch, transfer line, cellular, …etc. Similar in software development, waterfall, incremental, iterative, agile, …etc.
These processes are used to design the real implementation and building process of the end product, some processes are typically optimal for a specific product, specific need, and constraints.
The difference is that manufacturing is more repetitive steps to have some product over and over again. Software Development is more about creating things almost new, each product is different for each customer.
I personally like the cellular manufacturing model which is very close to the agile process where you can have all operators and machines working together to get the final product, like the autonomous team that is trained about the whole process and steps and communicate always together for better visibility on the process and the product development steps.
One of the agile manufacturing is the flexible manufacturing system that has a central control system to design the flow as per the need to get this flexibility of workstation, material, production configuration, …etc.
It reminds me of the Micro-services architecture where each component is focusing on a specific job and can operate autonomously. I do not think that the Micro-manufacturing concept is there, where you can continue working if one machine is down.
And this can be other learning from Software and information technology industry in general. How can we apply load distribution between different workstation, how to ensure continuity of the work if one of the workstation or machines are down.
The software development process can also learn how to be repetitive and we already experience that with the reusing of components, architecture patterns, styles, …etc. Until having the development as plug and play like in low and zero code development. Can we observe also in the future where you only define the requirements and through a flexible control system, gather different pieces and start building the software through full build automation.
I would say the concept of product management is still relatively new in Software Development, It is not yet fully adopted as a pure development mindset. It borrowed mainly from the manufacturing industry, and we can hear different terminologies like App Factory to standardize the software development process and become more repetitive and fast to produce applications as if it is a factory of applications.
There are lots of learnings from manufacturing engineering about product lifecycle management itself. While, when the concept is applied in Software Engineering, it offers lots of advancement to manufacturing, for example, connected products, and using of DevOps practices inside manufacturing when you have continuous feedback loops and collaboration between the manufacturing and plant floor with the distributed products on the market to optimize, enhance, and innovate.
One of the major differences is that Software Development can work with vague and unclear requirements, yes there is a cost for that but the software can be changed and evolved. The manufacturing process needs a clear set of requirements or the waste will be so high and the results will be distorted.
Maintenance and support
Each product after sale and usage will need support and maintenance. I think originally Software Development borrowed lots of concepts and methodologies from different industries.
While the support and maintenance services for the software products currently have been advanced too much from the ease of connecting with the end-users to troubleshoot remotely and identify the issue and fix it directly with taking also feedback for improvements.
Also, when you start using or purchasing the software, you already had a record in the company that sold the software to you. It keeps spam you with product updates and news and starts marketing and selling other products personalized to your profile.
This is not the case in the manufacturing industry, as the connection with consumers is almost between the product distributor as a retailer with the consumer. Almost a few touchpoints directly with the consumer.
So, how the manufacturing industry learns from the Information technology industry and other industries as well to listen directly from the end consumer. The new products became more connected, for example, smart TV, electric vehicles, connected appliances. I think with time, all products will be connected and this will be easier to achieve to read telemetry of product usage & faults with users’ acceptance for sure to improve the production line and deliver more innovation. Provide a one-stop support center for the consumers as well.
One of the examples for that is Apple, and their direct support through the mobile app, where you can chat and call support representatives directly, troubleshoot the issue with you and provide the fixes and guidance on how to overcome the issue. If the hardware needs replacement of parts, then the user delivers it to any authorized distributor or repair center for fix or replacement.
Both processes have many wastes, I would say that the Software Development process can learn a lot from the manufacturing process in waste management. I wrote an article before about the software development wastes inspired by the 7 known industrial wasters TIMWOOD developed by Toyota.
The software development process has learned a lot from the manufacturing process, and there are lots of similarities between the two which make them very good candidates to mix and match learnings between both. Some industry frameworks like Lean, Six Sigma, Kaizen, value stream mapping, and others improved business processes in general in many industries.
Moreover, Software Engineering borrowed lots of concepts from other industries like manufacturing and Construction Engineering, for example, Architecture Styles, patterns, components, interfaces, and others.
Nowadays, the skill set of manufacturing engineering and Software Engineering are working together in all aspects as foundation needs for Industry 4.0. It is a good practice to see how different industries can learn from each other to advance their processes to achieve value at scale. And it is the perfect time to pay back these learnings.
Happy to learn more about your thoughts
Also published on Medium.
3 thoughts on “From manufacturing to Software development – what can we learn!”
A great appreciation to the author in taking so much efforts putting together all this valuable information that is easily graspable. This is an ultimate guide in knowing the complete process. Thank you for the blog.
I really loved the whole article and the website in general very good and keep it up software development
Thank you so much for the comment, glad that you loved the article