Categories: Agile, Best Practices, Teams
By Christian Bisson
In this article, I refer to “a single point of failure” as the situation when a company utilizes someone with unique expertise/knowledge that no one else has, or is the only one who does a particular task. By having these single points of failure within a team, you risk facing problems if that person becomes unavailable—or even worse, just isn’t part of the team anymore.
Fortunately, there are various ways to mitigate this!
1. Rotate roles within the team
There are several tasks that often fall by default on the scrum master or the “nice guy’s” shoulder. A good example is sharing a screen so everyone can see the backlog for a planning or a refinement session, or sharing the board in a daily scrum (if it’s not physical).
If that person is not there, then the meeting becomes less effective because the logistics (using Jira, screen sharing, etc.) is not necessarily well known by everyone.
By having a rotation system (by random name picking, for example), these tasks are eventually done by everyone and all can be efficient doing it eventually; therefore, the team doesn’t become dependent on a single person to know simple things like updating the story points of a ticket using Jira.
I once came across a team that couldn’t do its own planning without the scrum master sharing the screen and going step by step with them, and it had been doing it for several months!
2. Conduct knowledge transfer sessions
This can be done in many ways, but I’ve seen a lot of teams planning a weekly knowledge transfer session, where each time someone presents something to the others (a new tool, something they just coded, etc.). Another good way for developers to share knowledge is for them to code pair. That way, the code itself is known by two people instead of just one; throw in peer reviews on top of that and you will be in better shape if someone leaves or is on vacation.
The idea is to avoid having only one person knowing something; always aim for a minimum of two people. If you want to identify gaps, there is always the classic “lottery winner” scenario you can use, which is to keep in mind that it’s possible for someone to win the lottery and therefore become unavailable without notice. Although it might seem unlikely, the idea is to ask yourself: For every member of the team, what would be the impact if that happened?
3. Rotate members among teams
This practice is debated, but I feel it’s a good way to make sure the knowledge is properly spread. The idea here is to have a rotation system of team members among the teams. This practice is questioned by some, who will argue that to be effective, teams need to be stable—and changing it will make it regress to the “forming” stage.
That is indeed important to keep in mind when thinking about how/when the rotation will occur, but in the long run, people will be accustomed to working in all the various teams—and also be knowledgeable in all the different pieces each team takes care of. This gives a much higher flexibility depending on deliverables/vacations/etc., and lowers the risk of losing knowledge on something within the organization.
What tips do you recommend?