But seriously, as a freelancer, I'll usually explain some new process or algorithm to my non-technical wife until it makes sense to her. It's a better version of rubber-ducking that helps you not only understand your own code, but also improves your ability to talk to clients.
Not quite what you were asking, but I think it's relevant. You can't really share the nitty-gritty of technical info with colleagues until you can also give an overview to a layperson.
many work cultures are tribal, insular, and/or fueled by fear. knowledge sharing is the exception in such environments.
i think basic tools like a source code respository and a wiki (especially one that allows grouping/arranging pages together into folders or some hierarchy) can go a long way.