Programmers often discover solutions while explaining a problem to someone else, even to people with no programming knowledge. Describing the code, and comparing to what it actually does, exposes inconsistencies. Explaining a subject also forces the programmer to look at it from new perspectives and can provide a deeper understanding.



A corollary to this is that it’s often very difficult to explain what’s wrong because if you could explain it clearly, you would probably be fixing it already.
it is the process of explaining how your code works (or should work) to someone that you realizes the errors or solution.
Precisely! The process of putting your thoughts in order to explain things usually gives me the answers.