Writing as a Problem Solving tool

The history

When I was new to StackOverflow, I was (to put it plainly) scared to ask a question there. The culture there was not exactly the most welcoming. People would downvote questions for no apparent reason, or even post comments or answers trivializing my question. I had very low points on StackOverflow and I did not want to risk losing points to downvotes.

How did I cope? Well, I started to critique my own question before I posted it on StackOverflow. I started to try to anticipate how people would try to find fault with it, and try to fix those flaws in my question. This included things like

  • Did I make sure to check all official documentation and samples related to this topic?
  • Is the code sample reasonably complete? Can one just copy-paste it into the IDE and run it?
  • Does the code example in my question cover all error cases?
  • How is my question different from a similar-but-not-quite-the-same question that was already answered on StackOverflow?

I would then iterate over this. Surprisingly, I found that in a lot of cases, this process would lead me to the solution, without me having posted the question at all.

In more than 50% of the cases, when I start typing a question on StackOverflow, I find the answer even before I post it there.

Beyond StackOverflow

I realized that this technique can be applied even outside of contexts that have a negative connotation. What started out as a self-defense mechanism turned into a general problem-solving technique. Now, I often apply the same idea whenever I get stuck with a problem. The steps are:

  1. First, I identify that to solve this problem I need to ask for help
  2. Next, I write down the problem in as much detail as I can think of
  3. Then, I try to put myself in the shoes of the audience for this question. What details might they need for fixing the problem?
  4. Only if I do not solve the problem after iterating through Steps 2 and 3 a few times do I actually go ahead and post it

Conclusion

Writing is a great tool for problem-solving. Of course, it is not the only tool and is not applicable for all scenarios. For example, sometimes the huge level of detail could hide the problem and throw potential helpers off track. However when used in moderation, I find that it leads me to the solution without ever having to bother others.