You're viewing a post from the archive. Don't forget to checkout our latest post HTML5-powered Ajax file uploads

Recently I watched this funny commercial:


It made me think about a very common problem in software development teams. Many of them often struggle with the knowledge transfer.

Why is it so important?

Imagine a situation where it's your last day in the office just before your 2 week holiday. Suddenly you realize that you are the person who has the most of the knowledge about the project. You try to transfer the knowledge to the rest of the team through discussions and by writing emails till late. On the next day you go on holiday. You should be relaxed, but instead you are still stressed - "Did I tell them everything they need to know?"

Does it sound familiar?

Have you ever experienced a situation where the product owner asked a project related question and you didn't even know who might have the answer?
Maybe you had to change some functionality but you couldn't, because the only developer who understood the code behind it, was not available?

Lack of shared knowledge across the team not only creates single points of failure but has also further consequences. It can slow down the whole team. The team often hits blocks and bottlenecks and is not as productive as it could be. Many actions need to wait for the right person.

In the environment with the lack of shared knowledge you can also find frequent misunderstandings and confusion.

Another thing that can suffer is the team morale: "We are capable of doing this task, but we don’t have enough information to do it".

I realized that although it is often a serious issue, we at New Bamboo don't experience too many problems related to it. This is because we pragmatically follow the principles of the agile development methodologies. In the following series of posts, I'll look at how New Bamboo avoids these problems.

1. Open Workspace

Open Workspace I used to work in many different development environments and I find one factor essential to achieve good knowledge transfer within the team - open workspace. The team members, in order to be the most effective, need to work together and they need to be able to talk to each other whenever they want. We work in one room, close to each other, so whenever I need to share some information or ask a question, there is nothing on my way.
When one of us is stuck on some problem, there is always the rest of the team around to help.
The answers or clarifications are often provided by someone who just overheard the conversation between other team members.

2. Code Reviews

Another agile practice we found very effective is peer code reviews. Before committing the code to the source repository, the author of the code and one or more team members sit together and they inspect the code changes.
It's a great way of spreading the codebase knowledge across the team. People not only learn about the new code but are often able to suggest some good practices and patterns to each other. The reviews are also a very effective way of detecting bugs, since people coften miss lot of bugs in their own code.

In the next article, I'll look at Pair Programming and Self-Documenting Code.