We are living in an age of data.
The ones, who possesses data, who could analyze it and apply results to real life, are getting more and more benefits.
What data could be considered as the most valuable for any software project/product?
I assume, the most important are:
- business domain
- technology stack
- implementation details
- communication history between employees
Each employee in a software development team owns part of the knowledge.
Software projects should be protected from failure in case when someone possessing important part of knowledge is leaving a company.
This lead to a necessity to store at least part of documentation and communication history.
There should be as well an easy way to find an expert for each topic of knowledge.
What tools and approaches could be used for that?
Wiki documentation tools
The examples could be: Atlassian Confluence, GitHub Wiki etc.
The problem with any kind of a written documentation is that it is quickly becomes obsolete, often right after it is written.
I saw projects, where the same feature was described in multiple places differently, leading to confusion.
The Manifesto for Agile Software Development values "working software over comprehensive documentation".
Any kind of documentation should be created only when it is really needed.
This means, that you could never rely only on documentation, employees often keeps more valuable and up-to-date knowledge on the product.
Code documentation tools based on comments from code
This approach is now mostly used for common libraries and frameworks. It does not work well, as to keep the documentation up-to-date you need to maintain a proper relation between code and comments to it. This is an expensive way to go.
API documentation tools
The examples could be: Postman, Swagger, Apiary etc.
These kind of tools are great and easier to maintain documentation created with them.
The only issue is that such documentation will cover just a REST API - the smallest part of each application.
The examples could be: Stack Overflow for Teams and other
It is great, I always dreamed to have such tool at companies where I worked.
The only problem with them is again with maintenance: someone should constantly review questions and post relevant answers.
At stackoverflow.com the relevance of data is guaranteed by a huge community.
However, not too much of companies have a lot of employees and could afford that.
Competency/expertise matrix approach
Dedicated person is hired to track who is working on what in a team.
The matrix should be constantly reviewed and updated.
This approach is a hardly scalable and expensive one.
Git/documentation history approach
When you need to find an expert in a specific topic, you look at a history of changes for folders/files/pages at git/documentation engine.
Then you will see, who did the changes. Next step is to identify how much of relevant to your topic changes we done there.
You need to filter all kinds of formatting/refactoring changes.
That is a tough process, often requires hours of work.
Feature teams approach
All developers are splitted into teams, each team is assigned an amount of features/areas of product.
The idea is, that knowledge for each feature should be kept within one team and don't leave it, the teams are forbidden to work on other teams domains.
Often it is forbidden for developers to switch team.
This is a dangerous approach in terms of consequences of high employee retention rate - developers becomes demotivated when working constantly on the same things.
And even inside feature teams someone should know who is expert at each part of each feature.
It is hard to keep in mind all that information.
As we see, each tool does not provide a comprehensive solution and has its own flaws.
The main and common flaw is that it is hard to maintain data up-to-date, hard to find an exact expert.
Knowledge will always be mostly kept in heads of developers and in code they are creating.
The best way to find experts on your project
Efficiefy.io automatically identifies important business/technical topics and helps to find experts among your team for each topic in a manner of seconds.
It helps building daily knowledge and expertise management routines for your development teams.
Neither tool is giving a comprehensive solution for all knowledge/expertise management issues.
However, using Efficiefy together with existing tools for knowledge management will make your projects more successful, making business growing.
I would like to know with tools and approaches are you using, please fill up our form.
What issues do you have with that tools and approaches?
Please ping me in Linkedin if you are interested in demo of Efficiefy.io.