Published in IT World
Explain Using Averages, But Engineer Using Limits
I have ten separate barrel-sized weights that I need to move around. You rent fork lift trucks for a living. I tell you that the average weight is one thousand pounds. Is that enough information for you to decide what sort of fork lift truck to rent to me?
No it is not. The reason being, that the average figure does not tell you what you need to know if you are in the fork life truck business. One possibility is that all ten weights are approximately one thousand pounds. In this scenario the information about the average weight provides a good summary. However, it is equally possible that nine of the weights are 1 pound each with the tenth one weighing in at ten thousand pounds. The average figure is still approximately one thousand pounds. Now it could be argued that the latter scenario is unlikely for a number of reasons. Firstly, it would be foolish of me to not tell you that one of the weights is dramatically bigger than the others. I would be a stupid consumer if I did not bring this to your attention as a supplier. Secondly, if so many of the weights are really light, it hardly makes sense to procure a fork-lift to move them. Anybody with common sense can see that.
Now let us take away the common sense. Let us talk about computer systems.
If I tell you that I need a website that will respond rapidly under a load average of, say, 10 hits-per-second, have I given you enough information about hit rates?
If I tell you that I need a publishing system that will handle documents that are on average, 300 pages in length, have I given you enough information about document lengths?
In these, and in many other cases, the answer is no. It is very appealing to summarize the needs of a planned computer system in terms of bite-sized averages such as load, document size, widgets per minute and so on.
Unfortunately, averages are a very blunt instrument in engineering design. In engineering, averages are interesting and useful but we often need to go deeper. We need to know the limits - not the averages. What is the maximum system load? What is tha maximum document size? What is the maximum widgets-per-minute?
These are the key figures that drive the design of engineering solutions that really work rather than just work in the comfortable world of the average case. So the mantra is: explain things using averages, but engineer things using limits. The result will be (on average) better if you do.