A small practice which I have found useful when debugging problems is to form an explicit hypothesis at every stage. The process goes something like this:
- Form a hypothesis.
- Gather data to prove or disprove that hypothesis.
- Rinse and repeat.
The act of forming a specific hypothesis, and then challenging it has allowed me to catch assumptions that I may have about the underlying system more quickly. For me, it is often a misplaced assumption which causes me to go round in circles debugging an issue.