Saturday, October 11, 2008

Keeping Project Development Knowledge: The Problem

This is a two part entry. This entry is an introduction to the problems caused by the loss of development knowledge, that face project teams. The second part will examine various practices and techniques that can be used to tackle these problems.

By project development knowledge, I'm referring to the multitude of information required, and acquired, by the development team, that pertain to the project. This includes technical knowledge, concerning languages and tools, as well as development methodology, processes, business domain, etc.

Is there a problem? To help answer this question, consider the following events:
  • A long time team member is leaving the team.
  • An issue is identified with the software that the team is building. However, we know we've encountered this problem before. If only we can remember how we solved it.
  • A new team member is joining the team, and he's started asking questions about the project, or is encountering some issues setting up his environment, and we have to rely on memory or some veteran team members to answer these questions.
  • A BA notices that he is being asked the same question more than once by different team members.
  • The tech lead is noticing that the team members are not following coding standards, time and again.
  • Two team members are working separately on fixing the same problem.
  • A new team member is brought to take care of a code module, that no other team member knows about. For example, when code is inherited from another software company after their contract has ended, a team member is replacing another who was working alone on a piece of code, or when a certain area of the code has been dormant for a long time, that now requires changes.

These events represent times where project information is missed. This can be attributed to the following reasons:
  • Information leaves the team, along with parting team members.
  • Information is forgotten, thus, it needs to be reproduced.
  • The information exists, but is not readily accessible; the information is not easily communicated.
  • The information exists, but we don't know that.

How do we tackle these problems? The next entry will discuss some approaches that can help address some of these problems.

No comments: