Software: The Process Is the Constraint

Theory of Constraints & Software
A few years ago I had a project manager from my team in Scotland send me a copy of Eliyahu Goldratt’s The Goal after learning I’d never read the 1984 classic. At the time, the constraint this team was struggling with was an ability to get software specifications defined that supported the product management requirements. After reading the book, I naturally tried to identify constraints in all my processes, putting them through the standard Theory of Constraints (TOC) steps: identify, determine how to exploit, subordinate all to the constraint, elevate, repeat. I learned quickly that TOC didn’t help me much when it came to software, but was really never quite sure why.

It wasn’t long after I had an epiphany of sorts. The epiphany came shortly after watching Steve Jobs: The Lost Interview, and hearing Steve talk to how companies “institutionalize process” and get confused that great products are about the “process”. This comment led to the realization that maybe I was looking in the wrong place for the constraints. The constraints were not the usual suspects - e.g. communication, velocity, quality, project management, risk management, and so on - but rather it was process itself. It was then I realized that rather than investing more in process, we should be seeing everything in between motivated product professionals and customers as a constraint. Our objective is not to have more process or a specific type of process (e.g. Scrum, Kanban), but rather to have as little process as possible to achieve our goal.

A Roman historian claimed the decay of the Roman Empire started when chefs acquired celebrity status. Just as he was suspect of celebrating the middleman - in this case the chefs that stood between a Roman populace and their food - we should be suspect of the horde of consultants, project managers, and evangelists that make us think that building great products can be achieved through the right process.

Great products come from great people who have a clear understanding of the need of their customers, and are motivated and empowered to deliver software that satisfies this need. Everything between these great people and their goal is just… a constraint.