首先明确一点,最敏捷的做法就是不要远程团队或分布式团队,远程一定比不上面对面同一地点的模式,毕竟环境不同,就不要期望远程团队和本地团队具备相同的效能,甚至期望更高。
那么,无论何种原因,如果已经存在远程团队,如何提高效能呢?在考虑具体的操作之前,需要进行价值流分析,避免价值交付(围绕客户和价值交付的一组人开发一个或多个软件系统)的相关人员分布在不同的地点。可以考虑调整远程团队的职责分工,形成一个地点的人员可以独立开发、独立部署、独立运维相应的软件或者服务的架构,尽量避免本地和远程的两方人员产生耦合。那么这个问题就变成了在各自的地点独立进行敏捷迭代开发,而团队之间的依赖,可以按需双方处理。
效能和效果最差的情况就是本地和远程团队有较高的耦合性,需要考虑的是如何将双方组织为一个敏捷团队,进行如 Scrum 相关的活动等事项。可以参考如下一些做法来模拟本地协作效果:
-
使用统一的一站式 DevOps 平台,或者统一的 DevOps 工具链;
-
在需求和协作领域,电子工具可以展示包含多个迭代的发布计划,每个迭代可以使用看板来跟踪用户故事和任务;
-
使用在线文档记录各种信息,包括需求细节、架构和设计,以及迭代活动相关活动;
-
各种沟通、评审、迭代计划、每日站会、迭代评审和迭代回顾会议,在使用线上视频会议系统的时候打开摄像头;
-
使用在线白板进行团队的信息共享、头脑风暴等;
-
双方定期互派人员作为大使出差到对方地点,进行短期工作。
本文整理自《研发效能100问》,原作者 赵卫 敏捷DevOps专家 《软件研发效能权威指南》副主编