Here is a list of things to ask yourself before you ask for help. They'll be particularly useful for junior developers, but they're applicable for any industry and vocation. The list is meant to do three things: 1) make sure that the situation warrants asking for help 2) help you think of new ways to approach the problem and 3) make sure you're prepared to ask for help.

- Have I been trying for at least 30 minutes?
- Do I have an example where this already works?
- What approaches have I tried?
- Where did each approach fail?
- Am I the right person to be solving this problem?
- What assumptions have I made about this problem?
- How can I test each of these assumptions quickly?
- What is the first question the person is going to ask when I come to them for help?
- Do I just need to take a break and attack it fresh tomorrow?
- What type of problem is this? Technological, conceptual, etc
- What possible solutions are there? Pros/cons
- If technical, are there possible non-technical solutions the problem?
- What are the ramifications if we do nothing? Is this problem worth solving?
- Have I explained the problem to my stapler? i.e. rubber ducking
- What pieces of information matter about this problem, and which don't?