Unblocking Coder’s Block

I started a podcast about a week ago and the first episode was an exercise that helped me overcome writer’s block. In the episode I said that I don’t get “coder’s block”.

This is more or less true, but I want to elaborate. I don’t mean that I can instantly solve any bug or program anything I want at will. I mean that I can make progress and do something.

When I have a problem I need to solve and literally have no idea what to do next, here’s are a few things that help.

  1. Write down everything you know about the problem
    1. Assumptions
    2. Goals
    3. Constraints
  2. Share this document with colleagues or talk to them about it.
    1. Are the assumptions and goals correct?
    2. Can a constraint can be loosened?
  3. Do experiments to learn more and update your document
    1. Automated tests and scripts that help reproduce the issue
    2. User tests or analytics
    3. Diagnostic logging
  4. Think bigger: Is there a fundamental problem that, if solved, makes this problem go away
  5. Think smaller: Can you solve a subset of the problem

And, sometimes it’s right to put a hard problem on the back burner and come back to it later.