Excerpts from Reinersten’s “Flow”
I believe it was Aslak who first mentioned The Principles of Product Development Flow: Second Generation Lean Product Development by Donald Reinertsen at speakerconf in February. I finally finished the book on vacation this week. I’m listing the excerpts that resonated the most strongly with me so I can easily reference them in the future. I highly recommend the book if you want to learn why the ideas behind agile development work, and if you want to improve the effectiveness of your development efforts.
Note: I didn’t track page numbers initially, but then started to later.
Another note: You can pretty much substitute “product development” for “software development”.
Final note: You’ll see that Reinertsen likes to use the word “resource” a lot. I tried to give him the benefit of the doubt, but eventually it became obvious he was referring to actual human beings when using that term. I find that term demeaning and counter-productive when used to refer to teams of creative individuals. So, feel free to substitute “resources” for “people”.
Reward generalization, not specialization.
Philosophy of United States Marine Corps: Uncertainty does not inherently favor either side. Instead, the side that can thrive in the presence of uncertainty is most likely to win.
When high quality decentralized economic information is absent, it is too often replaced by the mind-numbing bureaucracy of centralized control.
In product development, our problem is virtually never motionless engineers. It is almost always motionless work products.
To blindly conform to the original plan when it no longer represents the best economic choice is the act of a fool.
Control without [management] participation is control without decision-making delays.
If we make resources available for free, they will tend to be infinitely utilized.
High levels of capacity utilization are actually a primary cause of long cycle time.
When product developers choose to operate their processes at high levels of utilization, they create unnecessary and wasteful variability in their processes. It is important to realize that this variability is a self-inflicted wound.
The key to stable priorities is to link them to economic facts.
We simply cannot rely on randomness to correct the problems that randomness creates. p. 79
We should point out that any specialist can become a queue. p. 82
Either excessive or insufficient probability of failure reduces the efficiency with which we generate information. p. 94
If the cost of improving iteration speed is comparable to the cost of lowering the defect rate, improving iteration speed will have more influence. p. 106
It is usually not productive to work on old bugs, since they may die of old age or irrelevance before we get around to fixing them. p. 108
Batch size reduction can enable us to shorten cycle time, often by an order of magnitude or more, without changing capacity utilization. p. 112
The local efficiency improvements of large batches are completely wiped out by the added rework cause by delayed feedback. p. 116
The 100-fold improvement in manufacturing cycle times was not achieved by finding bottlenecks and adding capacity to the bottlenecks. It was achieved by reducing batch size. p. 133
Zombie projects destroy flow. Kill the zombies! p. 152
Most development organizations have a handful of special people who seem to be able to overpower the most difficult problems. They are the 10% that handles 90% of the most difficult work. If we wish to use such resources to destroy emerging queues, it is critical that we load them to less-than-full utilization. Unfortunately, most organizations love to load these highly profuctive resources to very high utilization rates. We need to change this mind-set. The big guns are not most valuable as an efficient substitute for small guns, they are most valuable for handling situations that the small guns cannot handle. p. 155
The ideal resource is a jack of all trades and a master of one. p. 156
Telecommunication networks are based on fundamentally different assumptions than manufacuring processes. They assume variability is inherent to the problem and adopt flow control approaches that are robust in the presence of variability. These network-based approaches are well-suited to the natural variability of product development processes. p. 169-170
By operating with small queues, we minimize the payoff of [prioritizing], and thus, the need to do it. p. 192
Flexible resources enable flexible routing. p. 202
Companies inevitably feel they can computerize the whiteboard, however, they almost always create a more elegant but less useful system. As simple as the whiteboard is, it makes WIP [Work in Progress] continuously visible, it enforces WIP constraints, it creates synchronized daily interaction, and it promotes interactive problem solving. p. 205
Optimizing the economics of a process is very different than maximizing it’s throughput. p. 208
It is common that we must invest in creating a superior development environment in order to extract the smaller signals that come with fast feedback. p. 222
If you ever have an opportunity to colocate a team, do it. If you don’t, fight hard to get it, and you will be glad you did. p. 231
Human effects of fast feedback are regenerative. Fast feedback gives people a sense of control; they use it, see results, and this further reinforces their sense of control. p. 232
The marines believe that they need the capability to make quick transitions, and, that this capability comes from constant practice. In product development, we can change direction more quickly when we have a small team of highly skilled people instead of a large team. … We can change direction more quickly when we have reserve capacity in our resources. It is very difficult to apply an extra burst of effort when people are already working 100 hours per week. p. 256
What builds trust? We trust someone when we feel we can predict their behavior under difficult conditions. … We actually do not need others to have similar attitudes and values to ours; we just need to predict how they will act. … Small batch sizes build trust, and trust enables the decentralized control that enables us to work with small batch sizes. p. 264-265
