- Rubber ducking
- Lay out your assumptions explicitly
- Veritasium video The Most Common Cognitive Bias
Elm Debugging techniques
- Debug.todo
- Frame then fill in
- Annotation let bindings
- Using nonsense names as a step
- Elm review rule to check for nonsense name
Hardcoded values vs debug.todo
- Todos don't allow you to get feedback by running your code
- TDD
- Fake it till you make it
- Simplest thing that could possibly work
- Joël Quenneville's article Classical Reasoning and Debugging
- Debugging is like pruning a tree
Breaks
- Take a walk. Step away from the keyboard when you're grinding on a problem
- sscce.org (Short, Self Contained, Correct (Compilable), Example)
- Create a smaller reproduction of the problem
- Reduce the variables, you reduce the noise and get more useful feedback
- Reasoning by analogy from Joël's post
- Elm debug log browser extension
- node --inspect
- elm-test-rs
Debug.log in unit tests
- Test.only for running just one test or describe
- Put Debug.logs in each path of an if or case expression
- Use the browser elm debugger to inspect the model
- Scaling Elm Application episode
- Narrow down your search space with Elm types
- Parse, Don't Validate episode
- Tiny steps help you prune the tree
- Exploratory Testing
- Wrap early, unwrap late