Debugging debugging.

Or how to turn debugging into a deliberate practice rather than an endless whack-a-mole game.

Try to answer the following questionnaire known in the West as "The six examinations of Shifu Shifu". Although some interrogations seem similar, they can trigger different perspectives and answers.

(Before) Debugging

  • Can an intern do it for you? (Learn to delegate)
  • Is there a more important change to accomplish, that would obsolete the issue? (Don't go unabomber, though)

Debugging

  • What is it that you want to check?
  • Is it possible to automatize this check? Add unit tests and assertions that will verify the hypothesis for you, instead of manually analyzing some logs.

(After) debugging

  • How could have the process been faster? Meta-Diagnostic: what could have helped to diagnose more easily?
  • How could the problem have been avoided in the first place? (Root cause)
  • Is the same type of issue likely to manifest elsewhere?
  • How to ensure it won't happen again (here and in new places)?
  • How to spread and leverage the knowledge gained?

Conclusion

In programming, we are often more productive away from keyboard. Interestingly enough, this is also true of debugging.

Comments

Post a Comment