The Phoenix Project
by Gene Kim
- Theory of Constraints by Dr. Eliyahu M. Goldratt, defined in The Goal
- There are a very small number of resources (men, machines, or materials), that dictate the output of the entire system. It is critical to create an optimized and trusted flow of work to the constraint, otherwise, it will be underutilized, thereby limiting the output of the entire system.
- Improving only the bottleneck matters, because the whole will always wait for it anyway.
- The constraint is the bottleneck.
- Standardization, well documented processes, etc., have their place in knowledge work. It is important (see The E-Myth Revisited).
- There'll be an endless amount of tasks that could be done. They have to be filtered and prioritized according to business needs.
- Technical debt
- If you don't pay your technical debts, you'll spend your time paying interest in the form of unplanned work. Technical debt comes from taking shortcuts that provide short-term gains but long-term consequences. If you spend all your time doing unplanned work, you won't have time to do planned work.
- When all you do is firefight / do unplanned work, you won't have time to plan. When all you're doing is reacting, you can't figure out if you can handle more work. So you get more work but have less time to deal with it, and therefore you take more shortcuts. A very negative cycle.
- The goal is to maximize flow. You don't want delays. You want to maximize (efficient) touch time while reducing total process time. Work should not sit idly and wait.
- Beware of projects and work that is just busy-work. Busy-work that doesn't help maximize flow or help the company do what it needs to do.
- Total Productive Maintenance (TPM): do whatever it takes to assure machine availability by elevating maintenance.
- Improving the process is more important than doing the process (within reason).
- Focus on what is important for the business. IT is not every department. It can help in its unique way, but other departments can handle what they do best. Security matters, but some things get handled elsewhere, so you might not need to prioritize certain tasks.
- You've got to figure out where you under-scopes IT - where IT processes and tech does not help in achieving business goals. And also where you are over-scoping - where you are doing things that aren't necessary, thinking it will help (but doesn't actually help you achieve business goals)
- Takt time: Cycle time needed to keep up with customer demand. If an operation in the workflow takes longer than this, you can't keep up with customer demand.
- Reduce loop delay - fast feedback loops are important. Environments should be available when needed. Automate builds. CI/CD.
- Put everything in version control - even what you use to build the environment.
- Automate environment creation.
- If you can get things out faster than the competition, you win.
There are work centers - think of them as machines to be operated - and workers that operate those work centers. If you rely on one worker to operate more than one machine, then the worker becomes a bottleneck in that they can't operate more than one machine at a time.
Every work center has 4 components: the machine, the man, the method, and the measures.
Standardize (and document) work such that you don't rely on someone who just knows the steps. What if you lost that worker? Standardization also helps enforce consistency and quality.
- Creating a fast flow of work.
- Gain a true understanding of the business system. This is what W. Edwards Deming calls 'appreciation for the system'.
- Shortening and amplifying feedback loops, so things get caught early.
- Eradicate (the largest) sources of unplanned work.
- Make delay visible.
- Creating a culture wherein people act like scientists and where repetition and practice is seen as prerequisites to mastery.
- Ensure that we continually put tension into the system, so we continually reinforce habits and improving something. (Will it hold under pressure? Is it Antifragile? Or, at least, robust?)
- Creating good habits (through repetition) will enable mastery. Practicing often is best. Practicing every day for 5 minutes is better than 3 hours once a week (source?)
- It doesn't matter what you improve as long as you're improving something. If you aren't improving, you're decaying (entropy). This is the Improvement Kata, defined by Mike Rother.
- Identify constraints
- Exploit constraints
- Do not allow it to waste time - it should not wait for other resources. It should always be working on the highest priority work.
- Subordinate the constraint
- Typically implemented by a "Drum-Buffer-Rope", where you release work in accordance to the rate at which it can be processed.
- The idea is that the constraint sets the pace (the drum). The buffer protects the pace, and could be implemented by having inventory in front of the constraint. The rope enforces the pace. This could be done through scheduling. Specifically, kanban boards were mentioned. They can be used to release work and control work-in-progress.
- Kanban boards were developed by David J. Anderson. A kanban board is a board with multiple, named lanes. This could be Backlog, In Progress, Review, Completed. Each lane has a certain number of tasks in them. You move tasks between lanes, denoting their status.
- Elevate the constraint
- Return to step 1
Are we competitive?
Understanding customer needs and wants: Do we know what to build?
Product portfolio: Do we have the right products?
R&D effectiveness: Can we build it effectively?
Time to market: Can we ship it soon enough to matter?
Sales pipeline: Can we convert products to interested prospects?
Are we effective?
Customer on-time delivery: Are customers getting what we promised them?
Customer retention: Are we gaining or losing customers?
Sales forecast accuracy: Can we factor this into our sales planning process?