As a general philosophy, you should never explain. This is not a matter of being selfish, per se. It is more that true knowledge comes from both loving the people that you set as examples, and as always, the BestLearningIsByDoing.
The problem with explaining is really that, not only is it a waste of time, but in actuality you may be doing the recipient of your explanation a disservice. They are asking for an explanation, after all, because they can't figure out what you know by themselves. They are looking for a shortcut to knowledge. But there are no shortcuts to knowledge. We LearnFromExperience.
Another aphorism that pops to mind is ElbertHubbard?'s "Never explain - your friends don't need it and your enemies won't believe you anyway."
So how does this apply to design? I am not ForsakingDocumentation?. Rather, explain in a method that is appropriate to the future developers and clients of your system (definitely yourself inclusive). Document and describe from the perspective of providing insight to somebody with a specific need, rather than as an explanation as to why things work the way they do, or why you followed a specific methodology or algorithm.
This philosophy has at least two problems:
I think, that to explain should be considered more broadly. You can explain something, by giving helpful examples, that can be worked out by the questioner. Or explaining the words you use by giving definitions for them. But not explaining the consequences or reasons for the definition.
This page just bubbled up from your hidden childhood memories "I should like to make one thing perfectly clear: I never explain anything." ... remember... it was Mary Poppins. ;o) --AndrewCates
Sometimes you paraphrase your understanding of the system to someone. Then that person passes it on to the next person ... each person paraphrasing their understanding of the system, with some loss at each step.
Much better for the original programmer to document the system with on-line help, so that as long as the message "See that "Help" button ? click it" gets passed along, the last person gets *all* of the information that the first person got.
If a programmer *needs* to explain something to a test user, then the user interface is broken or the on-line help is incomplete.
Ideally, everything would be intuitively obvious from the user interface, and very little on-line help (and no verbal help) would be necessary.
The article on the CabalDesignProcess mentions programmers watching as play-testers try to run the program. The programmers are specifically forbidden to say *anything*.
The best teachers get their students to explain the solution to a problem to them.
See also ConstructivismTheory DontCriticizeCondemnOrComplain