Skip to content

Instantly share code, notes, and snippets.

@barretts
Last active May 3, 2019 19:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save barretts/560d4a22916896e77649755e1891360b to your computer and use it in GitHub Desktop.
Save barretts/560d4a22916896e77649755e1891360b to your computer and use it in GitHub Desktop.
Caveman Debugging Complex Systems

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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment