在经验型流程里,开发团队的成员需要自己找到如何将需求转变成可用功能的方法。没有经理会直接告诉他们应该怎么做。团队成员之间需要互相协作共同制定出工作计划。他们每天进行一次短会重新计划工作,因此可以每天做出调整以优化产出。
有些人觉得自我组织是有风险的。认为如果团队花费在自我组织上的时间太长了,就无法专注在实现愿景上了。然而,由于迭代的周期只有30天甚至更短,团队通常都能够保持专注。别忘了,即使需要找出团队要做的事情,其承担的风险也不会超过30天。
在预测型软件开发流程中,计划是由“专家”制定的。项目经理确保每个人都能完成自己负责的任务。人们不需要进行协作和创新,只要完成自己的本职工作就可以了。当工作计划和每个人的任务都由经理一个人敲定的时候,整个团队就会受制于经理自身的智慧、眼界和组织能力等。当遇到问题或者意外情况时,团队成员无权独立思考来解决问题。在过去,他们可能曾经因擅自采取行动而受罚,尤其是当行动失败的时候。因此,他们不愿意承担创新所带来的风险。
自我组织的基础是对软件开发人员能力和智慧的信任。既然在日常生活中,他们有足够的能力解决各种复杂的问题,例如驾驶、组建家庭、购物等等,那么有理由相信,他们能够在固定时间的迭代内,自觉且尽职尽责地工作。产出就是他们的集体智慧以及协作创造的增量。
下面是另外一个例子。Sylvain Moussad 是PTC 软件开发部的副总裁,Jane Wachutka的直接下属。他所在的产品部门拥有超过300名软件工程师。起初,他相信他和经理们能够很好地为属下的50个开发团队制定工作计划。他们根据工作需要重组团队,直到认为所有团队的配备都到达最优。然而,团队的生产效率却不如预期。
团队的组长告诉Sylvain,每个团队被分配的工作都严重依赖于其他团队的工作。因此在别的团队完成工作之前他们无法继续。这样最终导致的结果是,团队75%的时间都花费在了解决依赖关系上。有时候,唯一能够完成特定工作的人却在别的团队里。于是,Sylvain 让他们重新组建他们认为最好的团队,并且自己组织工作。重组带来的变化是,在每个迭代中,组长都会观察接下来的工作,然后决定让团队中最合适的开发人员完成特定的需求部分。
有人会问,这么多人怎么能够自我管理呢?还有人会问,一个经理怎么能够管理这么多人呢? Sylvain 之所以能够让团队进行自我管理,是因为这当中的风险是可控的。这个风险最多不超过30 天。由于当前的方法不可行,因此冒着可控的风险进行变革是值得的。
--摘自《30天软件开发——告别瀑布拥抱敏捷》
Ken Schwaber, Jeff Sutherland著 王军,李麟德 译