Damn it, this can’t be happening! As programmers, we find ourselves time and again spiralling down into tighter loops of desperate troubleshooting, fighting the controls of our machinery and descending into what feels like a kind of madness. Later, when it’s all over, we realise that the clues we needed to recover the situation were staring us in the face all along, but we somehow couldn’t even see them.
There’s a reason for this: the nature of debugging for programmers means that it quickly tips us into these states, and then very effectively keeps us there.
In programming we have worked hard to improve some aspects of programmers’ work, creating methodologies, development frameworks, paradigms, practices and thinking deeply about how to solve the problems of producing good code. We have done very little work to improve the way we debug our code,
The good news is that although programmers have not developed very adequate strategies or techniques for mitigating the risks that debugging draws us into, other industries, and in particular aviation, have. We can learn from their lessons without paying their price.