System Debugging
Debugging is the most complex problem faced by developers. The basic problem can be hard to describe. Maybe data that should flow doesn’t. Stable mechanical systems may oscillate wildly. Parts may break. Or, maybe an intermittent failure that exceeds the product requirements.
Finding these problems is difficult and can be time-consuming. The need comes right at the moment when you don’t have time. The product rollout is set. Marketing resources are committed. Promises to key customers have been made.
This is the domain of Science. Not the science used to define or build the product, but the science of discovering the workings of a unique system — the system you created. Systematically divide the problem. Brainstorm hypotheses. Devise experiments. Step-by-step refine the system until the difference between what should be and what is happening is in the spotlight.