Software development is not only knowledge-intensive work, it is knowledge-sharing-intensive work. A huge amount of knowledge sharing is required among software architects, engineers, product managers, project managers, developers, QA testers, and so on. In this environment, companies that implement a knowledge-sharing process thrive, while those who don’t learn how to share knowledge effectively can quickly find themselves left behind.
IT consulting company Cognizant has identified four key drivers for effective knowledge management in software development:
- “Reducing the effort spent in acquiring required knowledge for project execution
- Improving reusability (i.e., avoiding reinvention)
- Reducing dependency on individuals for project success
- Improving the overall team’s productivity.”
A knowledge-management system, including an organizational approach supported by technology such as knowledgebase software, is one tool software development companies can use to achieve these goals. Let’s examine them individually:
Reducing effort spent acquiring knowledge: Facilitating the acquisition of knowledge is, in fact, the major purpose of knowledge-management systems. By creating a central database where knowledge resources are accumulated, categorized, tagged and stored, an organization can ensure that its collective knowledge is accessible to all who require it.
Improving reusability: Knowledge gathered into a single place is much more reusable than knowledge that remains undocumented and unorganized. By making those online knowledgebase resources searchable, knowledge-management systems can greatly reduce the amount of time people in all roles spend answering the same questions and addressing the same issues. It can also be used to track different things that are tried along the way, so the same mistakes aren’t made repeatedly.
Reducing dependency on individuals: Workers are staying in their jobs for progressively shorter periods of time, a trend that is even truer in software development than it is generally. Having a knowledge-management strategy that encourages (or requires) engineers, developers and other participants to share what they know can decrease a firm’s dependence on individuals, and ensure that when those individuals leave, their knowledge remains within the company.
Improving productivity: All of the above can contribute to boosting a team’s productivity. In addition, a knowledge-management system can reduce training time so that both individuals and teams can get up to speed more quickly.
Other advantages of knowledge-management systems for software development
In addition to the four major drivers identified by Cognizant, here are two significant ways knowledge management systems can improve the software development process.
Supporting the sharing of tacit knowledge: One of the factors that makes knowledge sharing in software development teams a challenge is that much of the knowledge, particularly among the people actually working with the code, is tacit. It isn’t explicit knowledge that can be easily written down and contained in documents and manuals, but personal knowledge contained within people that is not easily articulated or formalized.
Knowledge-management systems can support the sharing of tacit knowledge through methods many developers are using already, such as social technologies like HipChat. A 2012 McKinsey report found that using social technologies can increase knowledge workers’ productivity by up to 25%. When these technologies are used, the conversations that take place become content, which can then be tagged and stored in a knowledgebase, just like technical manuals and other documents. McKinsey estimated that having a searchable record of these messages alone can reduce the time spent looking for information by as much as 35%.
Facilitating communication within and across teams: Finally, communication is a stumbling block for many development teams. The reasons for this include everything from geographical and temporal diversity to the belief that communication isn’t important. Yet the reality is that in an industry that relies so heavily on knowledge sharing, communication is perhaps the most important factor of all. Knowledge-management systems facilitate communication among teams via tools for collaborative writing, online discussions, and version control, among others.
As the software development process evolves, and as the amount of knowledge contained within this process grows, effective knowledge sharing will become even more essential for teams and organizations to succeed. Implementing a knowledge-management system is the first step toward achieving this goal.