The act of measuring certain sensitive variables in a system can alter them, and confound the accuracy of the measurement.
from Universal Principles of Design
In other words: A more accurate measure has more influence on the measured system. Accuarcy and invasiveness have an inverse relationship.
In even other words, Heisenberg’s uncertainty principle (Heisenbergsche Unschärferelation) states that both position and momentum of an atomic particle cannot be known because the simple act of measuring either one of them affects the other. This can be generalized the other systems.
An example in software development for an invasive measure is logging. When used for profiling, writing a new line to a textfile could affect the measurement of an IO-heavy operation. By increasing the accuracy of the logging, the invasiveness gets even worse: Logging one line for every single IO-access gives a accurate result about which operation takes the most time, but also affects the actual operation time the most.
It gets even more interesting when highly invasive measure are used over a long period of time. The disruption of the measure slowly shifts the focus of the measured system. A well known example for this effect is our school system. Tests have the goal of measuring student knowledge and predicting achievement. Due to the high importance of test results, the focus of students shifted from learning to test-prepartion, becoming test-wise and being able to answer questions without really knowing the answer.
It’s unlikely that this problem gets fixed any time soon, so I hope to at least provide some awareness of it.
Have your say!
This blog post should evolve over time and your feedback is invaluable in achieving this by helping me fix factual errors, fill in details, and expand the original post.
Have you experienced the uncertainty principles in other occasions? How would you try to fix the school system? What’s your favorite profiling approach?