The primary difference that's unique to manufacturing is the ability to ensure quality. In software, the bar for quality and the attainment of that goal is always shifting as we evolve products. We're not just building as many of the same product as we can, the product changes constantly. This is the reason for the difference in time, focus, and effort between the two:
In a nutshell, there are some major opposing characteristics:
Manufacturing: prototype hard, standardization easy, visibility high, process builds, people assemble, people deliver
Software: prototype easy, standardization hard, visibility low, people build, process assembles, process delivers
What software can borrow from manufacturing is more focus on systems, volatility, and automation. Early work in Toyota leveraged a practice called 'Jidoka' (autonomous automation) created in 1896, which essentially attempts to make the right way to do something automatic. In software there are many ways we can look at the flow of work and create guidelines, systems, and automation that reduce the necessity to make low value, predictable decisions and actions. We should aim to automate as much of our process as possible so that we can focus most on the efforts that produce the most value in software: Innovation and experimentation, the primary goals of design and development.
Rather than making our work robotic, leveraging insights from lean and manufacturing to create supports and automation gives us more time to be creative and deliver more value.
Great books that go deeper on this topic are:
- Engineering the Transformation by Gary Gruver
- Principles of Product Development Flow by Don Reinertsen
- Lean Software Development: An Agile Toolkit by Mary and Tom Poppendieck