The troublehacker’s triangle

When I think about the practices that have helped me the most in hacking trouble, I find that they fall into three broad categories. These three categories form the troublehacker’s triangle:
Let’s start at the top of the triangle, with mental models.   When I reflect on problems I’ve solved in the past, I distinctly recall building a model in my head of what the system should be doing.    I would constantly compare what I observed with what I expected from my mental model.    Any inconsistency was a clue to be pursued further.   I can also remember what it was like to start digging into a new problem, when my mental model was just forming, when I knew that I didn’t know enough yet to form conclusions. To be a good trouble hacker, you need to understand the limits of models, and how cognitive biases can prevent you from seeing what’s really happening.    In other words, you need to think about thinking! The next corner of the triangle is approach.   If you’ve ever called a support hotline, the first thing you’ve probably been asked to turn your computer off and on again.    The second thing was probably to reinstall your software.  What’s lurking behind this is an approach based on a checklist.  The support tech is running through a list of actions which have historically resolved a reasonable fraction of problems.   I’m sure you will not be shocked to learn that this is not an effective way of solving complex problems. Topics relating to approach will cover practices related to what you do in order to make progress in understanding and resolving a problem. Here, the scientific method is king, but there are some other trouble hacking patterns (and anti-patterns!) that I’ll talk about. The last corner of the triangle is outreach.    For me, this includes people you can ask for help, as well as information resources like Google.   The outreach corner is all about what you do when you don’t know what you’re doing. In the middle of the triangle, I’ve placed two other notions:  speed and cost.   These are here because the triangle is not just about organizing my blog topics.   It can also serve as a road map for evaluating your own troublehacking skills, as well as improving them.   It would be great if all problems could be solved quickly and cheaply, but that obviously doesn’t always happen.   If you are weak on certain points of the triangle, that can translate into longer time-to-resolution or require more people.   For example, if your approach is disorganized, it will take you longer to solve hard problems.    If you rely on your community too much, every problem that you solve will involve multiple people – thereby increasing the cost.    And if you don’t recognize problems in your mental model, you may fail to solve a problem altogether!