Earlier quoted context omitted.
This technique is also useful for software development, and is referred to as rubber duck debugging ( https://en.wikipedia.org/wiki/Rubber_duck_debugging ). Verbalizing your problem lends you another point of view to your thinking and often allows you to discover the problem yourself.
Writing detailed commit notes can be useful in the same way. I have backed out of a commit during the write up more times than I would like to admit because I realized that I hadn't covered some edge case or I completely forgot about something (like the effect of the change on a report or other sub-system). Writing things out in a way that someone else can understand forces you to re-think through the task in differe…
But I am a big believer in roles. The reviewer role is different than the creator role. When I mentally switch, through the priming mechanism of my code review tool, I am often able to see the defects in my own design or code.
I sometimes do the same thing with design docs or proposals by imagining myself as the person who has the most to lose by my proposal succeeding and then commenting on my doc from their perspective.