Impact Index: The Phoenix Project
Don't let the title fool you, this book is bigger than IT and DevOps; it is a book about creating order from chaos, about growing up as an organization, about management, leadership, and setting priorities, and above all, about getting shit done.
Even without a background in IT or development, I found no shortage of impactful lessons in this book. Below are my full book notes:
Theory of Constraints - Where's your bottleneck?
Three steps to manage your constraint
In every system, there are a small number of resources that dictate the output of the entire system. With regards to the constraint, you have three goals:
Identify the constraint: this changes over time so the question must be continually revisited.
Exploit the constraint: make sure it is never wasting time
Subordinate everything else to the constraint: The release of projects must be subordinated to the constraint to ensure a smooth flow of work to the constraint.
You must release work according to how quickly your bottleneck resource can consume it
The primary method of assessing whether a project is safe to release must be based on that project's demand on your constraint. Don't make the mistake of releasing work based on the availability of your "first station." Instead, release projects according to the tempo with which your bottleneck resource can process it. If you don't follow this rule, an ever-growing mountain of unfinished work will invariably pile up in front of the bottleneck, while resources below the bottleneck in the stream will be starved.
Improvements to your system's workflow that don't address the bottleneck provide illusory gains at best
Any improvements made to your system that don't address the bottleneck are useless. Optimizing upstream of the bottleneck will only result in more WIP piling up while optimizing downstream still leaves those resources starved.
Work-in-Progress (WIP) - the "silent killer"
Getting a grip on your business means getting a grip on your Work in Progress (WIP)
WIP is one of the root causes of quality issues, due date problems, and constant refactoring of priorities. Major management movements—including the Theory of Constraints, Lean Production (aka Toyota Production Systems), and Total Quality Control— all agree the WIP is "the silent killer". This is why managing the release of jobs is one of the most critical elements of any successful business.
The key role of management and leadership is to preserve a smooth flow of WIP
Management and leadership must focus first and foremost on ensuring an efficient, predictable, and uninterrupted flow of planned work that delivers business value while minimizing disruptions from unplanned work.
If you want to get a grip on your business, you must get a grip on WIP;
If you want to get a grip on WIP, you must control the flow of new work into your company.
Unplanned work is anti-work
Anti-matter is to matter what unplanned work is to planned work.
"In the presence of unplanned work, all planned work ignites with incandescent fury, incinerating everything around it."
Upstream planning/project release cadence must be a core competency in your business
You must understand your capacity. It is too easy to get punch drunk on new projects if you're not aware of the actual throughput your system is capable of. Elevate your thinking. There is a way of prioritizing the backlog that doesn't look like moving a bunch of boxes around. Every project under serious consideration needs to have a "bill of resources" built. Then, create three lists of projects:
Those that require the constraint
Those that increase the constraint's throughput
The "capacity death spiral"
Trying to put too much work through the constraint results in the cutting of corners. This means the system becomes increasingly fragile, resulting in more firefighting and unplanned work. This technical debt bears compounding interest. If it is not addressed, eventually every ounce of energy in the company will be spent paying the interest. This is the "capacity death spiral". It must be avoided at all costs.
Manage your handoffs. Reduce your wait time.
Wait time increases project length exponentially
The wait time for a given resource is calculated by dividing the percentage of time the resource is busy by the percentage of time the resource is idle. So, for example, if a resource is busy 50% of the time, the calculation is 50/50 for a result of 1 unit. If a resource is busy 90% of the time, the wait time is 9 units (90/10). Now consider what happens when a resource is busy 99% of the time: 99/1 = 99 units
To put this another way, when a resource is 99% utilized, the wait time is 99x as long as when the resource is 50% utilized.
Manage the handoffs
Assume you have a project with four handoffs. Assume each of those resources is 90% utilized. Assuming you're using hours as your unit of measurement for wait time, this means that the project will spend a total of 9 hours x 4 handoffs (or 36 hours) in queue time alone. This is why tasks or projects that, when viewed in isolation seem small, can take days, weeks, or months to work through the system. This is why capacity planning is so important.
Leave some slack in the system
If you can ensure that everyone in the system has even a small amount of spare capacity, you can dramatically reduce the overall time it takes to produce output from the system Slow is smooth; smooth is fast.
Other impactful ideas
Take concrete steps to reduce keyman dependency
Every time you let a key-man fix something that the team can't replicate, the key-man gets a little smarter and the system gets a little dumber. Counter this by not allowing the key-man to do anything that can't be documented and replicated afterward. Set up systems to create this documentation on the fly. This way, every time an incident occurs that the key-man as to fix, you end up with another article in your knowledge-base and a growing group of people who are able to fix problems.
The "improvement kata"
It is critical to establish a culture the fosters constant improvement and habit reinforcement. It is almost irrelevant what you are improving so long as you're constantly improving something. This is because entropy guarantees that if you're not improving you are actually getting worse. Focus on small and constant changes. Studies have shown that practicing a new habit or skill for 5-minutes a day is more effective practicing once a week for three hours. Consider implementing two-week improvement cycles across your company. Require everyone to implement one "plan-do-check" project to improve one part of the business.
Make the work visible
Inventory everything you're being asked to do, no matter how big or small. Keep it high-level; work with one-line descriptions of the work you're doing and how long you think it will take. Include making wait times visible so you can understand how long work in your system spends sitting in-queue between different work centers.
Start by putting a kanban board around your most constrained resources. Color code your cards based on the four types of work so you can assess at a glance whether you're maintaining an appropriate balance. For example, perhaps you're trying to spend 20% of your resources on internal improvement projects aimed at reducing tech debt. Color coding makes it very simple to quickly ascertain if your WIP is aligned with this goal.
The power of single-tasking
Consider a project freeze for two weeks. See what happens when you allow your key resources to focus exclusively on the most important project in your company.
Frameworks and mental models
The Four Types of Work:
There are four types of work:
Business projects - serve the customer
Internal projects - managing tech debt, etc
The "Three Ways":
There are three broad disciplines that teams must master:
Amplifying feedback loops
Continual experimentation and learning - create an environment that encourages taking risks, learning from failure, repetition, and practice.
Every work center is comprised of four parts
To manage production, you need to know four things
Status of work in progress
Critical leadership questions
Questions to ask yourself on a daily basis...
Are we competitive?
Understanding customer needs and wants: Do we truly know what our customers want? Are we building the right things?
Product portfolio: Do we have the right products currently?
R&D effectiveness: Can we build our product/platform/service effectively?
Time to market: Can we ship it soon enough to matter?
Sales pipeline: Can we convert leads 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?
Some notes on change management:
A change is any activity that is physical, logical, or virtual that could impact services being delivered.
Categorize changes based on the risk profile. Focus on the riskiest changes. 20 percent of your changes likely represent 80 percent of your risk. These risky changes could be called "fragile".
Track which specific changes need work from your constraint, and which don't
Make change submitters responsible for consulting with and getting approval for changes instead of requiring the change committee to all of the leg work
Make the work visible - set up a change management board within your company
Keep experimenting until you have a system that works. Get a couple of meetings under your belt. The rules will emerge once you get started.
Lots of people produce a bunch of "argle-bargle" about efficiencies and processes, but few people actually actually know what "work" is.
Be a passionate manager who argues dispassionately without making moral judgments.
Creating and prioritizing work inside of one department is hard. Doing it across multiple departments is exponentially more difficult.
What are your predictive measures of success? Are you measuring things too retroactively? How can we get better at measuring the behaviors that lead to success?
Get everything in version control. Everything.
Taking needless work out of the system is even more important than being able to put more work into the system.
"...you can’t achieve the strategic until you’ve mastered the tactical.”
“It’s like the free puppy, it’s not the upfront capital that kills you, it’s the operations and maintenance on the back end.”
"A fellow NCO in the Marines once told me that his priorities were the following: provider, parent, spouse, and change agent. In that order."
"We have met the enemy, and he is us."
"Messiahs are good, but scripture is better.”
Places to Dig
Looking to uncover more impactful ideas related to the topics above? Start here...
Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation