Somebody told me once about a computer science professor that would not help his students solve a programming problem until they have explained their problem to The Teddy Bear and they still did not have their answer. You might think that The Teddy Bear was code-speak for something, but it was actually just that: a fuzzy toy which inhabited the classroom.
You may think that this is just silly, but there really is something to it. See, when you explain something to somebody else a few things must happen in your mind to allow you to relay the problem to somebody else. Firstly, you must take a step back and look at the whole thing, because you are about to explain the whole thing to somebody else. Secondly, to explain it you must re-arrange the components into a logical order in your head. Lastly, you must describe in detail each part of your problem.
All this forced regurgitating and rumination causes you to re-check everything you’ve done up to that point and many times you’ll spot the problem without your listener even uttering a word.
Following is a lengthy discussion on the concept. Apparently, even Plato liked this idea.