人员流动

让人员流动起来,可以避免严重的知识孤岛和单点依赖。如果团队中某块领域的工作只有一个人能做,那么当这个人不堪重负甚至离开项目,项目的进度就将大为拖延。

为了避免这种知识孤岛,很多公司都愿意让团队成员之间进行“交叉培训”。然而,通过培训得来的知识仍然很容易流失。而让团队成员流动到代码库的不同领域,辅以结对编程的实践,同样能起到“交叉培训”的作用,甚至效果更好。这样做使得团队所有人都能对所有代码有全面的了解,避免只有个别人掌握某块代码的所有细节。

如果每个人都能对系统的各个部分有充分的了解,团队工作起来就会更顺畅,也会更有灵活性。这样,整个团队都能够高效地产出,而不会只依赖某几个成员承担大部分工作、其他人无事可做。每位开发者都可以工作在系统的任何角落上。果真能做到如此均衡灵活的人员分配,想必也是每位管理人员日思夜想的期盼吧。

要实现以上目标很简单,只需要鼓励开发者们,每个迭代至少尝试一次修改一块之前没有接触过的代码。结对编程是一种好的方式,既能保证团队的想法得到共享,又不会使团队的生产率下降。结对中的一个人也可以分出来做其他工作,另一人则仍然继续未完成的工作(有必要时可以换进一位新的成员继续结对)。