在实际项目过程中,通常业务分析师会提前将计划的需求故事发给团队成员。运用合适的分布式项目管理工具会让这一过程更加容易,如 Mingle 或者 Jira。在工具中整理出下一个迭代的故事墙,让团队成员提前看到虚拟墙。在迭代计划会议上,主持方将虚拟墙打开并屏幕共享给其他方,这样各方就可以关注在同一个需求故事卡的讨论上。
回顾会议:
由于各种限制原因,分布式团队很容易产生沟通不足现象。而回顾会议创造了必要的沟通桥梁,因而非常重要,一定要保证所有方都能参与进来。远程回顾会议通常利用在线白板,让每个成员提前在在线白板上提交上个迭代里做得好的和值得改进的地方。这样,当回顾会议开始后,每个人都是有所思考的,提出的意见更有深度,而且也可以更好地利用回顾会议的时间一起探讨所有人都关注的问题。通常,通过回顾会议可以发现,处于不同地理位置的多方成员往往关注的事情也不同,而会议上各方成员又可以了解对方在担忧什么,遇到了哪些困惑,并将这些担忧困惑分享,形成大家都认同的改进行动。
结对编程:
结对编程这一实践对于知识的传递非常重要,即便在分布式团队中,结对编程依然是非常重要的实践。合理地利用时差,在各方重叠的工作时间里通过屏幕共享工具远程结对,是保证代码质量的重要手段。
每天合理地利用远程结对不光可以传递知识,同时也是一种有效地影响其他团队成员的方式。远程结对可以让咨询师清楚了解处于不同地域位置的客户团队的代码水平、代码风格和思维方式,从而可以通过每天频繁的结对编程言传身教最佳实践。这种影响行为改变的方式效果显著,而且对于增强团队成员互相了解信任,并形成有统一责任感的“同一个团队”,也非常有帮助。
但不可否认,远程结对会影响开发效率。并且,由于各方工作时间安排以及公共假期等原因,很难保证远程结对的频率。所以,远程的代码评审(Code Review)就显得格外重要。每天各方开发人员在一个固定时段去评审所有提交的代码,能够让团队成员不光关注自己,也了解别人做了哪些代码改动。同时,代码评审对于形成统一的代码风格也很重要。当处于远端的咨询师想去去影响客户的代码风格时,如果无法让所有的人都理解为什么要用某种风格,那么之后的一致性也就无从谈起。而远程代码评审就能在沟通不足的条件下,从分展示好的风格带来的改进(Lead By Example),从而达到提成远程提升客户技能的目的。
在分布式开发中,我们依然遵循基本的实践,同时为了克服远程开发沟通不足的缺陷,并达到整个团队能力提升的目的,我们更关注建立沟通渠道和及时的分享。所有的实践在满足基本的目的之后,都要考虑是否能通过这一实践分享知识以及获取知识的正确方式,客户成员是否能得到能力的提升。
除了沟通这一挑战之外,分布式开发环境下当然还有其他各种挑战,如如何远程的让团队保持足够的凝聚力,让大家不因为距离而产生陌生感? 所以,经常在工作之余进行些适合远程的团队的游戏,定期邀请各方成员去对方工作的地方工作几周,体会对方的工作环境,能够更好地帮助团队保持一致的目标。此外,分布式团队模式下的项目也有需要关注的特有的风险,如各自国家的成员有不同的公共假期,最后的部署上线如何安排等细节都需要去关注。
由于基于知识流程外包的分布式开发追求交付的成功以及团队的成长,那么面对不同的客户团队就会有不同的挑战。作为咨询师,在关注软件交付本身的同时,更要关注如何提升团队的能力。通过以上这些实践不难发现,虽然依然采用敏捷的基本实践,但在分布式开发的场景下,适当地改进基本实践,才能真正实现高附加值的卓越软件交付。
原文转自:http://kb.cnblogs.com/page/158996/