‘Software Factories‘ are described as such because the underlying management science is literally derived from the world of manufacturing, utilizing practices such as Lean and Six Sigma, pioneered by organizations like Toyota.
Although originating in the manufacturing domain they deal generally with whole system design and the same principles can be applied to any industry workflow; in software engineering terms enabling an equivalent of a software factory.
In particular the Theory of Constraints (TOC) is a process improvement methodology that emphasizes the importance of identifying and addressing the “system constraint” or bottleneck, as the means to expanding the throughput capacity of the whole system.
Developed by Dr. Eliyahu Goldratt it was conceived through recognizing that manufacturing production lines were often guilty of local optimizations and yet were still frustrated that their overall capacity wasn’t improving. Thus Goldratt invented a management practice that examined the total system to continually identify and remove constraints.
In software development terms a local optimization could be one team adopting an automated process that speeds their individual work but due to inefficiencies elsewhere in the overall life-cycle the rate of deployments is not improved at all.
To understand how this science can be applied to software development a highly recommended paper that explores this in detail is Productivity in Software Metrics by Derick Bailey, describing the application of TOC to software development, such as how they relate ‘User Stories’ as a unit of work and including a framework for performance metrics based upon its principles:
- Inventory (V), and Quantity: Unit of Production (Q) – How does the software team quantify what is ‘work in production’.
- Optimising Lead Time (LT) vs. Production (PR) – Using Workload Management to schedule the most optimum flow of work.
- Investment (I), Operating Expense (OE) and Throughput (T) – Maximising Net Profit (NP) and Return on Investment (ROI) and calculating Average Cost Per Function (ACPF).
In a 2i blog, Principal Consultant Greg McKenna maps this science to software development team practices to optimize the DevOps Flow.
He explains how key TOC and Lean concepts can be applied to speed the deployment of new software releases, notably identifying and removing constraints, reducing batch sizes and eliminating waste. These are all steps taken within manufacturing to increase production throughput and are improvements that software teams can adopt to achieve equivalent benefits.
Greg also explains that identifying these improvements can be achieved through a process of Value Stream Mapping, analysing the flow of work across teams, literally identifying those activities that add value to customer workflow and those that cause waste build-up.