You may have heard of the Pareto principle. The idea is that 80% of the effects come from 20% of the causes. When it’s applied to projects, it often gets translated into “80% of the value comes from 20% of the work”. You could imagine a curve that rises steeply, almost linearly, at first and then curves off until it’s almost flat at 100%, indicating the diminishing returns of extra labour. There are a lot of times when this is a great model.
If you are migrating a large code base from one library to another, there’s a huge step jump in value when you’ve migrated 100% of the call sites.
95% code coverage is interesting and great and all, but when you get to 100% code coverage, you gain extra super powers. You know that any code you look at either has tests or has been explicitly flagged as not tested. Your coverage reports no longer feel like a puritanical uncle, sternly chastising you for your profligate ways, but instead point you to bugs, or gaps between your understanding and what the code actually does.
If you have all of your appointments in your calendar, and none of your non-appointments, you can trust your calendar.
There are many systems and situations where you only get value once the work is at 100%. A lot of the time, this boils down to two values:
100% is simple. Much simpler than 76%. If 100% of your tests pass, but then one starts to fail, you know with certainty that you need to do something, and you know with certainty what you need to do something about. If a whole bunch of your tests are failing, and another one starts to fail, then that’s a much more complex signal, and thus a weaker call to action.
Trust is different. If 100% of the doohickeys live in the second-drawer down in the kitchen, then you only have to look in one place when you need to find a doohickey. If the doohickey you want isn’t there, you know you don’t have one–absence of evidence becomes evidence of absence. If some of the doohickeys live on a shelf in the hallway cupboard, you have to check two places, and what was simple (1) becomes complicated (more than 1).
But that’s a terrible illustration. The idea I’m trying to get at is that if something can be trusted absolutely, then you don’t have to think about it, which frees you up to think about other things. In many ways, this is the point of abstraction.
This idea of value only being reached at 100% also crops up in fiction:
My strength is as the strength of ten Because my heart is pure
No one ever said “my strength is as the strength of eight because my heart is pure-ish”.
As such, I propose that we refer to situations where getting to 100% yields disproportionate value as “the Galahad principle”, based on these lines from Alfred Tennyson’s poem Sir Galahad.