迭代开发的精髓

 

夫兵形象水,水之行避高而趋下,兵之形避实而击虚。——《孙子兵法•虚实》...



夫兵形象水,水之行避高而趋下,兵之形避实而击虚。

——《孙子兵法•虚实》

用兵打仗的规律就像水,水流动的规律是避开高处而往低处流。用兵的规律则是避开敌人的锋芒而攻击其薄弱的地方。这是自然界规律给《孙子兵法》的启示。同时,也给了我们在软件开发方面的启示 —— 发现自然规律并顺应它。

敏捷开发中往往存在这样一个现象:某个迭代中提出的需求,过了几个迭代甚至于下一个迭代就被推翻了。这种现象很大程度上是因为客户自己也不清楚需求是什么或者说他们的业务需要(need)是什么。

而迭代开发的精髓就在于它考虑到这种现象及其产生的原因,因而采取小批量、频繁交付的开发模式。这使得我们可以根据上一个迭代(或者之前所有的迭代)中获取的经验(包括什么样的需求才是符合客户的业务需要)对当前迭代的目标和活动作出调整。

可见,迭代开发的精髓在于顺应自然规律 —— 人们认识事物需要经历一个由浅入深、由错到对的过程。同时,也在于它利用了反馈的功效 —— 当期迭代所掌握的知识和经验会反馈到下一个迭代,从而影响其目标和活动。



同样,迭代开发过程中团队成员对需求的理解也往往一开始不是那么清晰。随着具体开发、测试工作的进展其对需求的理解才渐渐明朗。

正如《太公阴符》所说“圣人知自然之道不可违,因而制之”。规律是不可抗拒的,顺应规律可以帮助我们取胜。人类对事物的认识,往往不可能一下子就洞若观火,而是要经历一个逐渐深入的过程。

开发人员也好、测试人员也好,其对需求的理解就是一个例子。不管我们如何努力地去理解、分析需求,其结果往往还是一开始理解得不够全面、透彻,待到具体写代码、写测试用例的过程中,思路才慢慢清晰起来,脑子中的疑问也越来越多。随着这些疑问的解决,对需求的理解也慢慢变得清晰、全面、透彻了。

所以知道了这个规律,我们就要“因而制之”了 ——迭代开发过程中不要只知道往前走,适当的时候停下来,甚至往回走,重新去审视下需求,往往会有新的发现。此时再根据对需求的新的理解去重新审视代码和测试用例,这样就能发现迭代初期时所发现不了的问题,最终使得交付的软件中隐藏的缺陷数降低。

故迭代开发的精髓——顺应自然规律和反馈,下一个目标:缩短迭代速度,采取小批量、频繁交付的工作模式,注重产品价值流。走起!

长按,识别二维码,加关注
微信号:ZY-PMO


    关注 掌阅PMO


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册