‘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.
The Theory of Constraints
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 and marketed widely through his popular business book The Goal, 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.
TOC for DevOps
A number of experts explore how TOC can be applied to DevOps teams.
First Lean Production sets the scene, providing a detailed overview of TOC principles and how they relate to those of the Lean Enterprise, with the Lean Enterprise organization also exploring how it relates to Lean Thinking.
The key ingredient is the science of ‘Throughput Accounting’, versus traditional cost accounting. As the name suggests where the latter is concerned with static snapshots of financial reporting, Throughput Accounting focuses on the system dynamics of what actually drives cash flow.
In the featured video they provide a general introduction of the process of mapping TOC practices from the manufacturing world to that of DevOps, highlighting that Jim Whitehurst, CEO of Red Hat, describes The Goal as his favourite business book of all time.
Writing on Linkedin Didier Valot zooms in on how it can be applied to DevOps, in particular focusing on how it can address the bottlenecks arising from departmental silos. Mark Smalley adds that TOC can provide a strategic context for mapping the business value of DevOps, and in his DZone article Stefan Thorpe provides an introduction to how TOC principles can be applied to DevOps activities.
Will Kelly argues that TOC was invented in 1984 and is thus mostly an out of date practice in today’s world given the adoption of advanced and automated technologies, but concedes that some elements of this structured thinking can still be used to help shape improvement strategies.
A highly recommended paper that provides a detailed proposal for applying TOC to software development is Productivity in Software Metrics by Derick Bailey.
This provides an invaluable approach for deriving DevOps metrics from applying the methodology this way, 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.
TOC and Continuous Delivery
In this presentation and this one Steve Smith explains how TOC can be applied to modern Continuous Delivery initiatives, how TOC works, how to apply the Five Focussing Steps to Continuous Delivery, and how to home in on the constrained activities that are your keys to success.
How do you identify and remove the major impediments in your build, testing, and operational activities? How do you avoid spending weeks, months, or years on far-reaching changes that ultimately have no impact on your time to market?
TOC can reduce uncertainty and make better decisions by measuring the stability and speed of the release process, the build process, and the codebase. These indicators of Continuous Delivery provide quantitative data on the impact of your changes, and pinpoint where the conversations need to happen so you can learn what’s working and what isn’t.
Steve shows how measuring stability and speed can power a successful adoption of Continuous Delivery in an organisation of any size. This is a deep dive into the latest thinking on Continuous Delivery, backed up by long-term case studies in private and public sector organisations.
The Theory of Constraints is a management paradigm that describes how to improve throughput in a homogeneous workflow. It can be applied to Continuous Delivery in order to locate, prioritise, and reduce constrained activities until a flow of release candidates to production is achieved.