- Understand the system
- Make it fail
- Quit thinking and look
- Divide and conquer
- Change one thing at a time
- Keep an audit trail
- Check the plug
- Get a fresh view
- If you didn’t fix it, it ain’t fixed
Some more notes on debugging.
Similar to number 4 above, you can use binary search to debug problems. Divide an area into two, and validate if one half does or does not have the bug.
Before finding where the bug is, find out where the bug is not.
See also: Bifurcate the problem
Reasoning by Analogy
A complex problem is hard to solve. No doubt. By trying to brute-force a solution to the problem, you can waste a lot of tme
Instead, find a similar easy problem, find the solution to that, and then try to backport the solution to your hard problem.