The age-old adage says that you can only choose two attributes from the list of "good, cheap, or fast". I've seen all kinds of fancy mathematical graphs depicting a three-dimensional parabola that shows the limits of how the inputs of quality, cost, and lead time all interact. The CAP theorem for databases similarly suggests you can choose consistency, availability, or partition tolerance, but never all three. You can choose two, we are told, and trade-off the third. Intuitively, this makes sense, but is it a general truth? Let's examine all three possibilies.

In many cases, the "choose two" constraint does hold true, and I even claimed so in a video series on network complexity I delivered to The Network Collective in 2018. Again, is this a universal truth? Only a single counterexample makes the generalization false.

In reality, the need to trade-off one attribute is only relevant when the system is performing respectably in the first place. Have you ever been woefully out of shape and decided to try a new diet and exercise plan? Assuming you actually tried, you likely experienced fat loss and muscle gain concurrently, while also not really spending much time in the gym. When the system (your body, in this case) is operating so poorly, it is possible to roundly improve all metrics at once for a short time. After the initial stage in your weight loss regimen, you'll hit a plateau, and your fat loss will come with muscle loss. For bulkers, your muscle gain will come with fat gain. Oh, and you'll also have to work measurably harder to see future improvements. Enter the trade-offs.

Now for a true story from my professional life. I helped a large US Federal Government customer migrate a delivery process from 100% manual operation to one that used a high degree of automation. The original process was slow, laborious (expensive), and often resulted in products needing rework. Our team was demonstrably able to reduce errors by an order of magnitude, reduce lead time from days to minutes, and significantly reduce human labor cost (long term operating expense). Additionally, no capital investment was required given the software components we used. Good, cheap, and fast, all at once, right? It's possible, I've done it, and don't let naysayers tell you it cannot be done.

Subscribe by adding "" to your RSS/Atom reader!

All Blogs -- Main Page