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.



Sure, teaching is one of the fastest ways to learn.
Also see SoDoTo. See one, Do one, Teach one.
https://www.eclathospitality.com/blog/career-management/use-the-sodoto-method-to-learn-anything