Guide to Caveman Debugging Complex Systems
- Generally state the issue you want to debug
- Specifically identify the answer you seek from the debugging
- List all possible points of failure in the system
- Identify the minimum components required to debug the issue
- Remove all possible points of failure not part of the minimum component list
- Test the issue on this minimum setup. Does it work or not?
If the sytem does not work in the minimum setup you should begin replacing components with others that are known to work.
- Start by switching out the component in question in this issue with one that works
- If the issue persists it suggests the problem lies outside of your focused component
If the system does work when in it's minimum configuration it is time to slowly reintroduce your variables.
- Start adding the possible points of failure you removed earlier one at a time
- Retest the system after each possible point of failure is added
- If the issue fails attempt to use an alternate component in the same place that is known to work
Notes
- Take shortcuts where ever possible but document each assumption you make along the path. This list of assumptions will come in handy if you run into a dead end and you need to back track.
- There might be multiple points of failure in the system. Don't assume there will be a single failed component.