Scrum

我居然没能在网上找到这个词的中文翻译(也许可以称为迭代开发?),就直接用英文吧。Scrum是敏捷开发的一种方法,简单来说,就是把传统软件开发流程的周期时间缩短,周期数量增加。就拿LabVIEW做例子吧,目前LabVIEW每年发布一个新版本,如果换用Scrum流程,就应当每个月发布一个版本,一年12个版本,但每个版本的更新只有原来一个版本的1/12。

Scrum现在非常时髦啊,也许是Google的成功起到了示范效应,原来越多的软件企业开始采纳这套开发流程。Google的开发模式被称为永远的Beta版:一个产品刚有几个基本功能就发布给用户去用了,然后再根据用户的反馈,每隔一小段时间就更新一下。

我最初在网上了解到Google这套开发理念的时候,就被它的优势吸引住了:软件的很多新功能都是程序员或者经理拍脑袋想出来的,它们或许并不符合用户的需求。越早拿给用户看,也就可以越早改进,少走弯路。真的遇到一个垃圾想法,也好早死早超生。我当时就预感,这套开发方式必定会被广泛采纳的。

Scrum流程肯定不适用于所有领域。比如说盖楼,原本盖一栋楼要一年:1月挖坑、2月打地基……11月封顶、12月装修外墙。用Scrum就不能按这个顺序了,因为最终用户不关心挖坑、地基和内部结构。所以施工队必须一个月内就挖个小坑、埋几根地基,竖起一面墙,粉刷好,然后给用户看。用户说墙太薄,窗户不够大等,于是施工队下个月按照用户的意见再建下一堵墙。我很怀疑按这种方法,施工效率会有多高。

实际上,使用了Scrum流程的公司也并非都取得了成功,比如说引入Scrum流程之后的诺基亚…… Google的成功与诺基亚的失败也许可以说明开发流程不是影响企业的成败主要原因;或者也可能是因为Scrum不是狗皮膏药,它只在某些领域才能发挥出功效。

还是说我熟悉的LabVIEW吧,LabVIEW的主要应用领域依然是是工业测控。这个领域的用户与互联网用户的一个明显差别就是,工业领域的客户要谨慎的多。受大多数用户喜欢的技术的特点是稳定而非先进。LabVIEW每年升级一次,居然很多用户抱怨说升级太快了。与之对比,某个拼音输入法的用户们天天在论坛上叫:“都几个星期了,怎么还不更新?”让LabVIEW的用户每个月更新一次,他们还不疯了才怪。我估计LabVIEW在这一点上是学不了Google的。

对于不能频繁更新的软件来说,一定要走Scrum的流程,又不能每个月从外部客户那里收集反馈,那就只好去经理那里要反馈了。每个月做一个版本,然后给经理看看,再去做下一个版本。我个人看法:敏捷开发的精髓在于:最终用户的快速反馈使得软件可以紧跟用户需求的变化。内部人员无论是谁,他们的需求都必然与用户不同,都代替不了最终客户。至于Scrum流程上的东西,如每日例会、用户故事、燃尽图之类的都只是形式而已,没了最终用户的参与,新开发流程只能算换汤不换药吧。

Advertisements