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 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.
This is a technical talk about processes and methodologies in software development, based on an analysis of programming as a creative craft. It uses analogies and parallels from other disciplines to illuminate aspects of programming that often remain obscure to programmers themselves, and draws upon the lessons of aviation to provide concrete, practical ways to improve the way programmers debug code.