Skip to content

Getting help and handling tough problems when you're stuck

General problem solving approach, and how to ask for help

All developers will at one time or another run into a problem that seems to stop their progress. We just get stuck.

Of course we could give up and just hand the problem over to someone else. But there's a better way. The important thing at such times is to think about the issue from the problem-solving perspective. This allows us to think about the problem in a way that will could make the answer easier to find ourselves, and also makes it easier for others to help us.

The goal here is to learn how to make progress when we feel completely stuck. We can accomplish this by breaking the problem down into its simplest form. In other words: what is the very specific problem that I'm facing right now?

Here's how we can break it down and work toward finding an answer; start by asking yourself these questions -- and if you're going to be asking for help, start by writing down the answers:

  1. Stated in one sentence, what is the specific current problem?
  2. What online resources have you consulted that might help you solve that current problem?
  3. What questions have you tried to answer through Google, and what results did you find?
  4. Pretend that you were going to describe the problem and ask for help on a public forum like Stack Exchange. How would you describe it, and what one question would you ask?

By using this approach, you can avoid simply saying "It's not working; I need help." Instead, you can follow a process to break the problem down into smaller parts and solve those parts:

  1. Walk through the problem in your mind and think of each component that may be causing the problem;
  2. Eliminate any components that you can (disable extensions, etc.)
  3. Isolate each component (function, api call, sql query or sub-query, php command, etc, etc,) and examine it to learn whether it is doing what it should do; write a short piece of code to experiment with exactly one component, so you can understand what it does and specifically where you might be confused about how to proceed.
  4. When you find a component that's not doing what it should do, repeat the above process if possible to isolate an even smaller component that is misbehaving.
  5. When you've run out of ideas how to make that component do what it should do, then ask yourself:
  6. Is this component designed to do what I want it to do? Am I using it correctly?
  7. How would I describe this problem on a public forum like Stack Exchange, and what is the one question I would ask on that forum? (Then, can I find that answer myself, or do I have time to actually ask a question on Stack Exchange?)
  8. What key words can I use in a Google search to find more information about this very specific component and the problem I'm having with it?
  9. Repeat the above process to work through every component in the area where you're seeing a problem, until you either resolve the problem or completely run out of ideas.
  10. At this point, if you're completely out of ideas, you can now ask for very specific help. Not necessarily help with the entire problem, but definitely help to get you back on track with the problem-solving process.
  11. Think of the one specific question you'd like to ask about it. Make me a video showing your problem-solving process (all of the work you've done in the above steps), and ask that one question.

By doing all of this, you can stay in control of the process, avoid giving up entirely, and have a good chance at getting an answer that will help you continue in the problem-solving process.