One thing which can present a challenge for a team is sharing knowledge between team members in a systematic and continuous way (especially over long periods of time), without decreasing the efficiency of each member through interruptions from his work, meetings or presentations.
I am not saying that meetings and presentations are not good, but they are too organized in nature and they don't fit this challenge very well for various reasons. What I am looking for is a solution which can stand the test of time and is very easy to apply while being flexible enough to let anyone use it when and how he wants to.
Here is a very simple development example: let's say I am working on a functionality and I decide I need an extension method for the List class. I create the extension, use it happily and move on with my task. Of course, any time I will have a similar need I will reuse the extension because I know about it.
There is only one thing missing here: no one else in the team knows about it, even if it might be useful to them.
This pattern can apply to all sorts of things that happen in a team: tools, concepts, ideas, processes, etc.
How do we solve this problem?
For now, I will try to use email as the communication mechanism and see how it goes. Keeping in mind the previous example, one approach could be this: before moving on with my task, I will send an email to the the development team and let them know about the new tool (the extension method).
Another approach (which I like better) is making a quick note about it and move on with my task immediately. I am using SlickJot for this. From time to time, I review the list of things to announce and take some time to prepare an email with all of them.
I write the email when I have the time, and the other team members read it when they have the time. No restrictions, no pressure.
This mechanism might solve another tricky problem: introducing a new team member in a team / project. I intend to store all these emails in one place for each project, and send the archive to the new project member. This should quickly get him up to speed with many things.
It also introduces an interesting idea: in a team (especially a software development team), the value of a team member is given not only by how good he is but also by how much he shares (in an efficient way) with others. This is like internal team blogging (but simpler and faster), and the best bloggers bring the most value to the entire team.
With a good communication process in place, everyone will have many benefits from something like this.