如果你理解了瀑布方法和敏捷方法是连续体,它们之间并没有明显的界限,那么你就能更成功地交付敏捷项目;而且,你能更成功地向你的同事介绍你所采用的项目管理方法的价值和原因,不管他们采用的是敏捷式方法还是瀑布式方法。
混合使用敏捷式与瀑布式方法
在本节中,我们要看一下,利用你对项目管理和产品管理的理解,结合你精心选取的管理方法,该如何在瀑布的背景下管理敏捷项目。
有些迭代或敏捷项目必须与瀑布式项目在企业中共存,这种现象并不稀奇。可能是你部门的项目正向敏捷转型,而公司里的其他项目却没有。似乎这两种项目不能很好地在企业中共存,实际上创造一种可行的并存模式并不太困难。为了与瀑布式项目团队的成员和其他合作者更好地沟通,你需要弄清楚你实际上在使用哪种项目管理模型(迭代式或敏捷式),这有助于你制定清晰的沟通计划。
图 4 信封方法
当与没有实行迭代或敏捷方法的部门沟通时,讲清楚你的流程、程序和你对瀑布团队的期望、他们对你的期望,是很重要的。
我在跟他们沟通时会使用一种我称为“信封法”的方法(图4)。信封法是在同一项目中整合瀑布和敏捷模式的一种框架。这个方法由一系列嵌套的隔层或信封组成,用信封来隔离开不同层间的内容。
项目经理可以使用这种方法来保护敏捷团队,尤其是在迭代期间。在迭代结束前,任何事情都不应该干扰团队创建可以运行的软件。项目负责人可能要更改backlog,平台服务组可能要修改环境。这时项目经理都应该不遗余力地来保护团队,使他们能不受干扰地做他们最擅长的事。
第一个信封
最里面的信封是由敏捷团队来执行的工作:软件开发、单元测试、组件测试、集成测试和缺陷修正。敏捷团队负责人(在Scrum中是Scrum Master或迭代经理)是第一位的问题解决者。敏捷团队负责人要负责团队内部的沟通、指导开发团队、工作阻塞时帮忙区分团队工作的优先级。通常,敏捷团队负责人要负责团队的健康和快乐。敏捷团队负责人不能解决的问题会升级到项目经理那里。项目经理也像团队的保护者一样,会保护团队正常工作、免受复杂的外部组织的干扰。为了达到这种微妙的平衡,敏捷团队负责人和项目经理的工作关系要非常融洽才行。如果项目相对较小,那么敏捷团队负责人和项目经理可能就是同一个人。不过我尽量避免这样做,因为我认为敏捷团队负责人是一个非常关键的角色,他必须独立。这个角色可以由团队中负责其他事情的人员兼任,但最好不是项目经理。
在多团队项目中,敏捷团队负责人和项目经理会组织一些会议,一起处理团队的工作:
联合的迭代计划
迭代协调
联合迭代演示
联合回顾
联合的迭代计划——迭代计划应尽可能由统一的团队在同一天、同一个房间中做出。在撰写本文时,我正在协助项目团队准备迭代计划会议,它由四个敏捷团队、超过100人组成,其中包括项目发起人和外部(瀑布)成员。每隔一次迭代(两周一个迭代),整个团队(很多人距离很远)会参加联合的迭代计划会议。会议需要8小时。前两个小时是集体讨论。每个项目团队都会分享关于他们Sprint的主题,以及关于这个主题的目标。他们也讨论所有识别出的跨团队依赖关系。其他团队可以对这个团队自由提问,以找出所有潜在的包括资源或人员的跨团队依赖关系。如果所有的团队都分享过了,并且已经识别了所有的跨团队依赖关系,这群人就在这个房间里分散成他们的小团队,每个小团队都有投影仪。而每个单周,人们不来现场,每个团队就会召开电话会议。团队开始分解他们在当前迭代中所选的工作。这是一个嘈杂却高度协作的过程,一些人为团队分享专业技能,非常活跃。此外,当他们遇到跨团队的工作任务时,他们会邀请涉及到的团队来一起计划如何开展工作。这天结束后团队一起回来,并对迭代成果互相作出承诺。最后,在当天举行简短的回顾,以找出下次可以改进的地方。
迭代协同——在迭代期间,敏捷团队负责人和项目经理可能会遇到许多需要跨团队协作的问题。为促进跨团队协作顺利进行,我鼓励团队在迭代计划会议上讨论并确定下来他们将会与哪些团队有协作需求:可能是由于共享了人员或资源(如服务器、共享的网络服务、或其他的技术资源)而需要协作。鼓励敏捷团队负责人去参加其他团队的关键迭代会议(如每日站立会议、同行评审等)。此外,项目经理和敏捷团队负责人常常会一起讨论已识别的跨项目依赖关系,以及敏捷团队负责人通过参加其他团队的关键迭代会议所了解到的其他新情况。项目经理参加这个会议是为了了解跨团队的依赖关系,并确定项目团队是否需要他们帮忙解决问题。
联合迭代演示——在每次迭代结束时,团队会向项目发起人演示可以工作的软件。演示是由几个团队联合起来做的。应该按照客户在生产系统中所需遵循的流程来演示,这样才有意义。即使流程需要在几个团队间流转,也要按照系统的正常逻辑顺序来确定迭代演示的顺序。让所有团队参加系统全程完整的演示非常重要,因为软件是所有团队共同完成的,而且也是对大家工作成果的尊重。演示是庆祝迭代成功和认可你同事们工作的好时机。在迭代演示时,项目经理的主要职责是帮忙让演示顺利进行。这是项目经理当服务型领导的时候:如果投影仪坏了,或者电话会议时电话出问题了,项目经理要负责解决这些问题,以便让团队能专注于向发起人演示他们的成果。
联合回顾——迭代结束后,每个团队都要回顾他们的工作过程以便于以后工作的改进。这时项目经理和敏捷团队负责人都可以当回顾会议的主持人。我发现让敏捷团队负责人当主持人是很有帮助的,因为在下次迭代中主要由他们负责帮助团队进行改进。除了单个团队的回顾外,整个团队还应该参加联合的回顾。虽然没必要每次迭代都召开这样的回顾会议,但是我建议至少每隔一个迭代要召开一次。联合的回顾关注团队内的协作情况,以及为了改善工作环境、提高工作效率、促进沟通和协作,团队能做哪些改进工作。
第二个信封和第三个信封