欢迎来到电脑技术网,专业的计算机网络技术学习平台!

合作洽谈

敏捷开发的根本矛盾是什么

人气: 发布时间:2018-03-20

  敏捷开发不仅靠流程和技巧,更需要企业文化的支撑。今天借敏捷开发的话题,与大家探讨一个更深层的问题:工程师如何在控制性和创造性中找到平衡点?生产的严谨和创造的不严谨性怎么解决?

  本文的作者是来自阿里 IoT 事业部的济巅,毕业于浙江大学,在无线通信行业从事技术研发 10 多年,从 2006 年开始敏捷开发实践,目前从事无线物联网技术的研发。

  文章转载组微信公众号「 阿里技术 」

  失控

  时光荏苒,转眼间从事程序员这份很有前途的工作已经十多年。

  差不多 10 年前,在 Bas Vodde 的极力推广下,我当时所在的开发小组开始实施敏捷开发( Agile )模式。这大概也是中国最早的一个敏捷小组吧(后来 Bas 开了自己的敏捷培训机构,同事中有的转行也成了中国最早的一批 Agile 认证培训师)。经过了这么多年,回想一下,心里有了很多感触。现在总结一下,也许会对现在的敏捷开发有所启发。所有的文字都是绝对独家,在敏捷手册里你可找不到。

  现在说起敏捷开发,往往会遇到两个极端:要么很好,要么很糟!这和当年软件企业推广 ISO 9000 或者后来的 CMM 区别很大。

  做 ISO 9000 对企业来说就是做出一堆文档,装帧漂亮后,放进文件柜,锁好,然后就没有然后了。所有工程师们对这些内容基本无感。ISO 9000 毕竟诞生于传统的机器生产工业时代,用这套老办法来衡量新兴的不断变化中的软件企业,实在有些别扭。

  然后就有了 CMM 。CMM( Capability Maturity Model for Software )听着就大气了很多,软件能力成熟度模型,不是什么冰冷的标准,程序员们看着这个模型就受用很多。

  一家企业能评上 CMM 的高级别是件很荣耀的事情,一时间各企业纷纷大上快上 CMM 评级。但是在 CMM 实施过程中,很多一线程序员仍然无感。最大的区别就是锁在柜子里的由一堆工业标准文档,变成了另一堆更有软件业特色的标准文档。

  而且在所有获得了 CMM 5 级的顶尖企业中,某国的软件外包企业占了很大的比例,而一些无论从技术含量、创新能力或产品品质都属于全球顶尖的企业却只获得了更低的 3 或 4 的评级。这其实是很奇怪的事情!

  其实,无论 ISO 9000 还是 CMM ,它们的核心都在于控制。

  管理者们希望通过各种流程、各种规则来控制软件开发过程中的信息、思想、行为,来获得对未来的产品的安全感。

  但是软件世界早就在不知不觉中发生了巨变。最典型的例子就是 Linux 。

  人们传统印象中,操作系统是最复杂的软件系统。要制作出这样的系统,一定是世界顶尖公司里的大量一流程序员在严密科学的流程管理制度下完成的。

  就如 IBM 和微软所做的那样。但 Linux 居然是由分布在全世界各地、成千上万名互相不认识的程序员来完成的!没有繁琐的流程、坚硬的规章制度、专职的直线经理、强硬的项目经理,在几乎一切的传统管理手段都缺位的情况下,软件行业的一个划时代的伟大产品却诞生了!而这是前所未有的事情。

  十多年前,微软无疑是世界上的 IT 业霸主。记得 1998 年前后有一本在业界很有影响力的书叫做《 Microsoft Secrets 》,这本书从微软公司内部各个层面揭示了微软是如何运行的。

  当时给我印象最深刻的就是微软的 Daily Build 和 Auto Testing 系统。这是当时大多数软件公司想都不敢想的软件工业之理想境界,而拥有当时最复杂而庞大的 Windows 95 与 Office 代码库的微软居然能够做到。

  要知道 Windows 95 的代码量大概有 1500 万行左右,这完全超出了当时绝大多数软件企业的能力。

  时过境迁,现在很多软件企业、第三方组织都已能够轻松建立起这种代码规模系统的自动集成系统,甚至更大的代码规模也不在话下。计算机软硬件技术及网络技术的发展,已经使小规模的开发组织获得了空前的快速迭代能力。

  工具的进化引发的人类协作方式的变化其实并不罕见,最典型的是武器与军队组织形态的变化。武器越来越精确、威力越来越大、射程越来越远,原来需要大规模地面部队付出很大代价才能完成的地面攻击任务,现在只需要较少数量机动灵活的地面部队依托各军种远程火力支援就能完成了。

  这时与敌人直接接触的一线部队规模虽然变小了,但他们能召集的火力其实是更大了。同时,每个士兵的能力要求也不同了。他不仅要懂怎么用自己手中的枪,还要懂步坦协同、炮兵战术、空地一体打击、远程侦察、电磁压制,甚至未来的个人战场网络系统。

  因为士兵本身也是武器系统的一部分。一流的武器落在三流的士兵手里也只是多了一根烧火棍。这种例子在现代战争中屡见不鲜,比如全美式现代化重装备的某国政府军屡次被一些灵活机动的游击队整建制地击溃。

  现在的网络技术能越来越快速地把个体创造的信息连结到一起,最后这些信息以一种新的形态展现出来,成为新的产品。组织形式越能匹配这种趋势,组织就越能把组织内外的信息价值有效组合起来,形成自身的信息价值或产品价值。

  在产品开发团队中,使用什么模式能更有效完成这个信息连结?

  无论是传统开发模式,还是敏捷开发模式,其目的是相同的:都是为了开发出好的产品和服务,但手段其实大不同:一个是用尽量控制的手段,而另一个是用尽量不控制的手段。

  这个就如传统教育和现代教育之间的区别:我们究竟是要把孩子人生中最重要的选择权交给孩子自己,还是竭尽全力代替孩子做一个看似最完美的选择?这个答案在中国这个转型中的传统大国中见仁见智。传统开发模式好,还是敏捷开发模式好?这个答案在现在这个互联网时代成型期,自然也是见仁见智的。

  无论如何,在代码中创造世界,在失控中享受自由,也许就是程序员这个职业的乐趣所在。

 1/3    1 2 3 下一页 尾页
责任编辑:电脑技术网

相关阅读

    无相关信息

最火资讯

Copyright © 2015 电脑技术网 版权所有

技术支持:电脑技术网

请勿发布违反中华人民共和国法律法规的言论.