An issue I find with debugging a complex program is that when you write tests (which put inputs into part of the program and then check whether the expected output is produced), your tests can themselves contain bugs, and often do (if they’re not trivially simple). That is, your experiments isolating a small set of variables can produce confusing results due to the experimental design, not just unpredictability in what they’re trying to test. Eg maybe your way of measuring the slope angle or sled weight is flawed. (Cf assumptions about the speed/straightness of light or a steady-state universe messing up your astronomical observations). As philosophers of science say, all observation is theory-laden.
An issue I find with debugging a complex program is that when you write tests (which put inputs into part of the program and then check whether the expected output is produced), your tests can themselves contain bugs, and often do (if they’re not trivially simple). That is, your experiments isolating a small set of variables can produce confusing results due to the experimental design, not just unpredictability in what they’re trying to test. Eg maybe your way of measuring the slope angle or sled weight is flawed. (Cf assumptions about the speed/straightness of light or a steady-state universe messing up your astronomical observations). As philosophers of science say, all observation is theory-laden.