Which knowledge management tools should we use?
There are several methods to make managing knowledge more common practice in each team.
Knowledge base
This is the most basic tool for managing information. One of the knowledge management principles mentioned earlier is to storing and sharing. Knowledge base satisfies them. There exist many sophisticated software tools to manage it and almost everybody broadly knows the biggest one. Wikipedia is probably the most major open knowledge management tool on the internet. You can use a custom library to configure your Wiki website. It is crucial to structure knowledge in this repository respectively to organization needs.
Job rotation
Another very common technique to ensure that many people would know what to do is changing places. It consists of assigning an employee to different job positions or different organizational structures over the time. It lets to share knowledge about a variety of duties over the team. It also can help to reduce boredom and stress level of team members. However, some positions need a specialized knowledge which is very hard to teach other people. So it can be not easy to introduce new people, but it may be beneficial for him and all team knowledge.
Most of all let’s make sure that employee is at least a little eager to learn new thing. Otherwise, the role of team leader is to build this desire.
https://www.cornerstoneondemand.com/rework/employee-rotation-works
http://evolvingstrategies.com/job-rotations-overcoming-obstacles-and-developing-staff-to-their-full-potential/
http://www.wholestacksolutions.com/Blog/lack-of-job-rotation-is-limiting-transformation
Automatization
A lot of tasks we do in our everyday work is schematic. So we can automatize them in several ways. There exist many services to automate your daily workflow. For example, you can create a trigger to handle automatically the invoices that you get on mail to copy it to appropriate folder and set up an alarm to remind about it.
There are plenty of possibilities. You can create a script, use an on-line service or whatever you can imagine. It can speed up your work for sure. But you may ask where is the knowledge managing in this. Your knowledge could be processed by some automatic processes, which you can manage and share with others. That is management.
https://zapier.com/
https://ifttt.com/
http://blog.getbase.com/how-to-automate-repetitive-work-to-up-your-productivity
https://www.yast.com/productivity/15-common-business-tasks-automate/
Mentoring
The other type of learning in work could be mentoring. It requires that a more experienced team member take care of the person who needs some more knowledge. However, it not means that this mentor should make a lecture for him or some other kind of workshops. It is only needed that experienced (in some scope) worker would be open to answering to questions and willing to work with the less experienced man.
http://blog.teamtreehouse.com/share-knowledge-mentorship
http://chronus.com/mentoring-fixing-skills-gap-knowledge-transfer
Standup meetings
In Agile teams there is a practice to meet every day for about 10 minutes and tell your whole team what we did last day. This habit can increase the broad knowledge about team and responsibilities. Also, it can help with the problem when we have some question to the particular part of the system, and we don’t know who is responsible for it. It is not exactly the knowledge transfer, but it may help to spread the information where we can find the knowledge about some topics.
http://martinfowler.com/articles/itsNotJustStandingUp.html
http://blog.teamtreehouse.com/a-better-way-to-do-daily-standup-meetings
Code review
Another form of sharing knowledge about tasks and functionality which particular employee is involved in can be cross checking the code. According to this method, every change made by one team member should be check by somebody else. This practice could be extended to style, security, guidelines checking and improving code quality.
http://blog.jetbrains.com/upsource/2015/07/23/what-to-look-for-in-a-code-review/
http://blog.codinghorror.com/code-reviews-just-do-it/
Keeping consistent style and rules
Referring to code review, following one consistent standard of writing code can be valuable for project quality. It may decrease the time needed to read the code. Therefore the time of learning the new code, in uniform standards, can be considerably reduced. Some tools are helping us to keep a consistent style. For example, JSLint or StyleCop are tools with a defined set of rules to check the proper form of code. They can be used before developer tries to send the code to the repository and inform him about all violations.
http://www.jslint.com/
http://jshint.com/
https://stylecop.codeplex.com/
There are also many ready and reviewed style guidelines on the internet. They exist for different languages and can be easily found on the internet.
https://github.com/airbnb/javascript
https://github.com/rwaldron/idiomatic.js
Tests as a documentation
People tell that tests are the best documentation. There is a grain of truth in this sentence. If somebody looks on tests for some functionality, in most cases he can easily see what is done by this class and what is the test cases or use cases. This is another method to simplify maintaining and knowledge transfer.
Bragging about knowledge
The title is a little bit deceptive. It doesn’t mean that developers should walk around and tell everybody how many they know. Quite the opposite. Team leaders can organize meetings to let team member to tell other people what he do and how he do this. This is an excellent method to share the knowledge among all team members. It also motivates the source of information to better work.
Risks and problems
Despite these all tools mentioned above, there are also some problems that we can meet.
False help
One of the most dangerous risks in knowledge management is the following situation. Employee seems to be willing to spread his knowledge, but in fact, he teaches others only less important pieces of his expertise. It is quite hard to identify such kind of threat. Your only help can be other team members. They can tell you if they would need more knowledge to understand the topic thoroughly. If knowledge owner doesn’t pass all necessary knowledge for others, we should motivate/persuade him to do so.
Distributed knowledge
On the other hand, some teams knowledge can be distributed more equally and separably. This kind of specialization is also a problem because any part of your team can become a fragile element. Managers should show the value of sharing for each employee to encourage them to cooperate. One of the methods may be persuading them to introduce their knowledge in front of others (i.e. bragging mentioned earlier).
Single knowledge sources
Opposite situation also can be risky. If only a few team members store most of the project knowledge, it puts them in lot higher position than other developers. It also increases dependency on this people. In this case, we should take into consideration showing them how they can improve the quality of their work by sharing his duties with others.
Motivation to share
We can notice that most important part of this whole knowledge managing is employee motivation and their will to do this. Indeed, this is crucial to the success of this approach.
It is not all of the techniques for managing, but only chosen by me. What is your favorite method to introduce knowledge management into team?