Scrum能给你带来帮助吗?
Genomica公司在采用Scrum之前,构建出来的特性都没人要,不仅延期交付,质量还很差。类似Genomica这样的情况并不少见。像很多其他公司一样,Genomica之所以能够生存下来,仅仅只是因为竞争对手比我们做得还要烂。20世纪80年代中期,我刚刚开始涉足商业软件开发时,看到的也是这个问题。30年过去了,很多公司的状况并没有得到改善。
今天,如果把业务人员和开发人员找到一起,问:“你们对软件开发工作的结果感到满意吗?”或者“你们认为我们是否及时、经济、高质量地交付了良好的客户价值?”他们会怎样回答呢?
通常,我在世界各地提供培训和指导时,人们对这两个问题都给出一个响亮的回答:“否。”接下来大家的说法如同一辙:“项目失败率高得让人无法接受”;“交付日期延迟了”;“投资带来的回报常常达不到预期”;“软件质量很差”;“生产率低得让人羞愧”;“没有人对结果负责”;“员工士气低落”;“员工离职率太高”。一阵低声窃笑之后又会假惺惺地说:“肯定有更好的方法。”
虽然有诸多不满意的地方,但大多数人都普遍接受这样的事实:“不满意”是软件开发现状的组成部分之一。但实际上未必如此。
认真踏实地使用Scrum的团队和组织,却是另一番不一样的现实(参见图1.2)。
图1.2 Scrum带来的好处
这些组织总是让客户感到满意,他们不仅交付了客户第一天在对真正需求知之甚少的情况下提出的功能,而且交付了客户真正想要的功能。他们还更频繁地发布了较小的版本并由此提升了投资回报。而且,毫不留情地暴露组织功能失调和浪费的地方,还为他们降低成本。
Scrum关注在每个迭代交付可以工作、集成好的、经过测试的、具有业务价值的特性,力争更快交付成果。处于复杂域的组织必须根据竞争对手、客户、用户、监管部门和其他利益干系人之间的互动快速做出调整,Scrum能很好地帮助他们取得成功。而且,Scrum还为所有参与者带来更多喜悦。不仅客户满意,做工作的人也很喜欢这种方式!他们喜欢经常的、有意义的合作,团队成员之间的人际关系和相互信任也因此得到提高。
不要误会我的意思。虽然Scrum在很多情况下都是优秀的解决方案,但不是所有场合都适用。Cynefin框架(4)(Snowden and Boone,2007)是一个很有意义的框架,可以帮助我们更好地理解工作环境并确定合适的工作方式。这个框架定义并比较了5种不同域的特征:简单(Simple)、复杂(Complex)、混乱(Chaotic)、繁杂(Complicated)和无序(Disorder)(参见图1.3)。我将使用Cynefin框架讨论Scrum的最佳(差)使用情景。
首先,重要的一点是认识到,软件开发和支持活动的很多方面都不可能只是与某一个Cynefin域相吻合。软件开发工作内容丰富,各方面又有重叠,所以各个活动可能属于不同域(Pelrine 2011)。因此,虽然大多数软件开发工作都处于复杂域或繁杂域,但如果冒然说软件开发活动是一个复杂域,也未免太幼稚,特别是,如果我们定义的软件开发活动包含从创新产品开发、现有产品维护到运营与支持等各种工作,情况就更是这样了。
图1.3 Cynefin框架