Producer Chris White (@stoneymonster) and Elecia discuss some insurmountable problems and some strategies for approaching them.
- Google it (or look on Stack Exchange).
- Explain the problem to someone else… even if they aren't there (use a stuffed animal or write a really detailed email, anticipating potential questions).
- Draw a picture (system/subsystem architecture or code block diagram or a doodle).
- Make sure you are running what you think you are, start over from a blank slate, making no assumptions about how your hardware is programmed.
- Identify and verify your assumptions about the all the pieces involved.
- Get scientific: define the problem, create a hypothesis, run an experiment, record the results. Small steps! Also: get methodological and write everything down.
- Return to first principals: how is this supposed to work?
- Revert to last known good and diff to find the cause of a new issue.
- Logging functions: they take time but can lead to a better trace, better picture.
Make it reproducible: there is information in the solution if you can find the steps to repro. Step by step, reduce the steps until you can nab it in the act. Remove the voodoo.
- Avoidance: accept the bug (it's a feature!) and go on.
- Sleep, go for a walk, or work on something else.