春风送暖、万物复苏,一片竹林掩映之下的“研发寺”迎来了新一届的“坐禅论道”大会。沉寂已久的“码农山”转眼间人声鼎沸,来自五湖四海的武林高手云集于此,切磋武艺、结交朋友,好不热闹!每年一届的“坐禅论道”不同于华山论剑之类的武林大会,这里没有血雨腥风,各大门派之间不再刀光剑影,而是进行一场唇枪舌战的较量,最终评选出上一年在广大码农心目中最受欢迎的研发之道。本次大会经过七七四十九天的预赛,数以万计的网友和几千名现场观众参与其中,最终通过线上点赞和现场投票的方式,产生了年度最受欢迎研发绝学候选人——瀑布大师和敏捷小生(江湖人称“老瀑”和“小捷”)。他们即将展开最后的殊死较量。
开 场
“道,路也!道有千万,适者存也。坐禅论道大会旨在召集各路研发高手,比试各家的研发之道,谁能在IT领域的群雄逐鹿中拔得头筹,谁又能在瞬息万变的市场环境下独领风骚,让我们拭目以待。接下来有请本届大会的总决赛选手,人称独孤求败的老瀑和有江湖新秀之称的小捷登场。”研发寺主持零壹大师亲自主持大会。
老瀑:“大家好! 我是老瀑,叱诧江湖多年,主要采用的研发之道是瀑布模式,老衲主抓过个多个大型系统的研发,有二十多年的研发项目经验。我的决胜秘籍是能确保新建应用系统和产品的研制成功,运行稳定。”
小捷:“各位好!我是小捷,初来乍到还请大家多多指教。本人在研发过程中主要采用的是敏捷模式,初战江湖,这几年主攻互联网和移动端产品。我的武功秘籍是快速实现产品需求,占领市场,尤其对于产品升级类项目,据有不可替代的优势。今日与老瀑坐禅论道,还请手下留情。”
第一回 需求管理
老瀑:“瀑布模式的关键是需求明确。只要给我明确的需求,就可以一撸到底。”
小捷:“敏捷模式的关键因素是业技融合,尤其要有一个常驻项目组的产品经理。只要有创意和思路,我就可以搭架子。开发团队和产品经理一起通过影响地图和用户故事地图挖掘需求,这是瀑布模式无法比拟的。”
老瀑:“呵呵,瀑布模式中需求方只需要参与项目的需求的研制和分析,对软件进行验收测试,权责明晰、边界清楚。”
小捷:“我们的确对需求方有更高的要求,要和项目团队一起工作,对产品需求进行决策和验收,制定迭代计划,参与开发的过程,但由此带来的好处就是可以灵活响应需求的变化。”
零壹大师:“瀑布模式开发软件的关键是需求明确,在启动开发之前做好充分的需求挖掘与论证;敏捷模式对初始需求的要求较为宽松,在开发过程中逐步完善。照此说来各有千秋,此回合打成平手。”
第二回 质量管控
老瀑:“瀑布模式对质量把控是相当严谨的,每个阶段都要出具相关文档,例如需求分析说明书、系统设计说明书、系统测试报告等,且需要对这些文档进行严格的评审,通过之后才能开启下一个阶段的工作。这不仅保障了本项目的质量,也为后期运维和升级优化提供了很大依据。”
小捷:“敏捷宣言中极其重要的一条就是可用的软件大于完备的文档,我们在迭代过程中虽然没有严格的文档审查机制,但我们的每个迭代中都会通过迭代评审会来保证质量,产品经理参会,确保每个交付物都是客户所需。文档写得再完美功能不行又有什么用呢?”
老瀑:“呵呵,小家伙你们精简的是开发依据和资料,只重视代码,你们怎么保证质量,怎么保证产品的一致性?”
小捷:“老兄,快不等于不要质量,我们精简的是过程中的资料,我们采用先进的管理工具,对开发过程进行全流程的管理,让开发人员轻装上阵,效率极高。”
老瀑:“系统文档是后期运维支持的重要保证,你们呢?若是开发过程中有人离职了,后面的人估计都不知道怎么修改程序啦!2-3年后,系统估计就玩不转了。”
小捷:“哈哈,你错啦,对必要的技术文档,开发完成后我们会补的。我们也要保证重要资产和开发的延续性,不是打一枪换一地儿的。”
零壹大师:“产品的质量很重要,无论哪种开发模式,都要确保产品质量。瀑布模式稳扎稳打每个阶段的产出物都进行严格评审;敏捷模式快速开发产品通过产品经理验收来保证质量,一个步步为营,一个一夫当关,此回合难分伯仲。”
第三回 过程管理
老瀑:“我们瀑布模式严格按照ISO9000、CMMI等进行过程管理,并且借助具有十八般武艺的工具和模板,使我们的研发过程万无一失。”
小捷:“工具和流程固然重要,但我方更强调个体与交互。如果没有优秀的个人和团队,再完美的流程和工具都只是花架子。一个具有合作精神、自组织的团队往往要比通过流程规范机械化作业的团队更高效、更能面对困难和挑战。”
老瀑:“如果没有流程定义的工作岂不是毫无章法,一个团队如同一盘散沙。”
小捷:“对,我们就是散沙,这样我们才能画出千变万化的沙画,而不是千篇一律的版画,永远只能复制粘贴。”
老瀑:“在我们的团队中有严格的分工,每个人为自己所承担的工作负责,绝对不会给他人添麻烦。”
小捷:“我们从来不怕麻烦别人,我们就是要通过解决麻烦来增进团队友谊,并且提高自身综合处理问题的能力。”
老瀑:“据我所知敏捷模式中也有很多工具和流程啊。例如SCRUM中提到的5个会议、3个工件、3个角色,XP中规定的配对编程。每日构建、自动化测试这些不也都需要工具支持吗?”
小捷:“我们强调个体与交互并不等于否定工具和流程……”
零壹大师:“好了,二位!依我看来,尺有所短、寸有所长,工具和流程与个体和交互并不矛盾和冲突,他们可以互为所用,在强调个体与交互的前提下适当的引入工具提高效率、利用流程引导行为,才能傍剑走天涯、无往不利。”
零壹大师继续说道:“二位的辩论就到此为止吧。经过三个回合的比试,实在难分胜负,估计再战三十三个回合结局也一样。两位说的都很有道理,开发模式没有对错,只有不同,两位各有所长,都有值得借鉴的方面。需求方和开发团队可根据产品特性和投产要求选择适合自己的开发模式。两种模式也并非势不两立,在部分领域也可以互为借鉴取长补短。切忌不要为尝鲜而选择了不适合的模式,只有全面了解项目需求、产品规模以及性能、安全等非功能性诉求,才能为项目研发找到一条切实可行的道路。虽说条条大路通罗马,但总有一条最优选择。本年度的坐禅论道总决赛到此结束,希望大家在本次大会中有所收获,并将其运用于研发实践中,期待明年再与诸位坐禅论道,江湖再见!”