敏捷画卷:中国软件史的精彩侧影

1

若是把软件开发当成一个谜题,数代的软件人在过去的 50 年里前赴后继地尝试解决这个谜题,不过到今天为止,全世界无论是码农仍是码神,咱们仍在这个谜题当中痛苦挣扎。程序员

1965 年 ~ 1985 年,软件危机逐步浮现,这让刚刚进入科学管理时代的人们极其不爽。1931 年建成的帝国大厦只花了 410 天,仍是提早完工,写个软件还能复杂过盖摩天楼?那确定是方法有问题。编程

供职于洛克希德软件技术中心的 Winston W. Royce,在其 1970 年的论文 “Managing the Development of Large Software Systems” 中提出了一个长得像瀑布的流程,业界彷佛找到了一款灵丹妙药,虽然这位搞了多年航天器的 Royce 老兄并无在他的文章中提到任何瀑布相关的字眼。以后以 1988 年 CMM 的发布为重大里程碑,剩下的彷佛就是沿着既定的路线,细化,标准化,量化,优化,再优化……网络

直到一线干活的人们发现事情其实不是这样,因而生长出了各家敏捷流派,以期解决 Fred Brooks 在 “No Silver Bullet” 一文里提出的复杂性(Complexity)、配合性(Conformity)、隐蔽性(Invisibility)、易变性(Changeability)这些现代软件开发中本质性(Essence)的难度。架构

2

中国用 20 年的时间迈过了西方 50 年的软件工程发展史。《敏捷中国史》中一个个鲜活的故事和严谨的数据考证一块儿,描绘了敏捷方法在中国软件产业的土壤中一步步发芽、传播的画卷,构成了中国软件史一个精彩的侧影。工具

《敏捷中国史》不只帮读者在宏观层面理清了中国软件工程领域在过去 20 年里发展的关键脉络;一系列从业者的经历巧妙串联,更让读者从个体视角体验历史,了解众多普通的软件人是如何参与着历史和创造着历史。区块链

我我的的从业经历跟敏捷中国史的跨度大体重叠,所以格外有感触。阅读每篇内容,本觉得早就遗忘的画面在脑海之中栩栩如生地一页页闪过。测试

3

我还记得 2001 年在新加坡的一个社区图书馆,第一次翻开 Kent Beck 的 Extreme Programming Explained 给我带来的冲击。优化

不过一番琢磨以后,我得出了几个轻率的结论:ui

  • 迭代开发玩不转,甲方的预算和立项流程根本不可能让乙方这么干(我当时在新加坡的一个系统集成商工做);
  • 结对编程太奢侈,没有老板会让团队这么干;
  • TDD 真是好东西,不过只要团队里有一我的不这么干,其余人也干不下去,让全部人都用 TDD 不现实。

所谓纸上得来终觉浅,直到四年以后,我本身卷起袖子,在全面采用敏捷实践的团队沉浸工做了几个月,才真正体会了那些理念和实践的价值和可操做性。让我颇有共鸣的是,文中很多人和公司初步接触敏捷的经历和感觉其实也是相似。翻译

看到敏捷中国大会的举办,大型通讯企业的敏捷转型,DevOps、设计思惟、精益企业、精益创新的推广,ThoughtWorks 相关的记述把影像拉回个人记忆。那些熟悉的名字把他们的面容带回个人眼前,与他们合做中体验到的酸甜苦辣又从心中流过。虽然是文中不少事件的亲历者,我看到的也只是点点滴滴,从没想到有人能如此全局又生动地把握和呈现当时的脉动。

说到合做,我 2007 年加入 ThoughtWorks,那是我真正认识熊节的开始,不过我知道熊节却要更早一些。那时常常在 JavaEye 上津津有味地旁观一个叫熊节的人跟人吵架,以为这人吵得颇有看法,并且吵得颇有文笔。因而,我有了无数的机会在现场和邮件里看熊节怼人,以及被熊节怼,从中学到不少。

为何专门把怼人拿出来讲?这其实跟 ThoughtWorks 的风格有关。不知足于现状,寻求更好的理念、方法和工具,追求软件卓越,这是 ThoughtWorks 的使命。ThoughtWorks 指望员工不盲从主流意见,要持怀疑挑战的态度,以求找到不同的路径,作到比当前更好。熊节就是这种风格的典型表明。

4

20 年中国软件工程方法的变迁也是中国软件行业追赶国际先进水平的历史。巨大的国内市场已经让咱们成为一个软件大国,但咱们在工程方法领域并没可以取得匹配的领先地位。

我理解《敏捷中国史》不只仅是对历史的记录和记念,更是以史为鉴。文中一个个致力于改善工做成效的一线从业者,致力于推广新方法新工具的布道者,正是他们吸引了一批又一批热衷软件开发的人加入进来,一块儿推进行业的发展。


以上内容来自ThoughtWorks中国区总经理张松为《敏捷中国史》所做的序。在这一系列课程中,做者熊节也用部分章节叙述了在ThoughtWorks与敏捷的不解之缘。

于 2005 年进入中国之后,对中国的敏捷社区发展起到了极大的推进做用。面对行业环境对敏捷并不积极的情况,ThoughtWorks 选择了主动造势。“敏捷中国”开发者大会就是这样启动起来的。

ThoughtWorks 初入中国

从进入中国开始,ThoughtWorks 就在行业中扮演了敏捷先锋的角色。

2005 年,被西安丰富的高校资源和高新区政府的热情态度所吸引,ThoughtWorks 在西安软件园落户,目标是服务中国本土客户。

同年,ThoughtWorks 在国内得到了三个项目:与西安市高新区政府合做的单点登陆系统建设项目,与河北省地税局合做的电子政务项目,以及与厦门好望角信息技术有限公司合做的网游物品交易平台项目。其中第三个项目是惟一来自私企的项目、惟一的互联网项目,客户对敏捷方法的配合程度很高。

ThoughtWorks 在这个项目上也投入了很大的资源,Martin Fowler、Fred George、Jim Webber、Perryn Fowler 等全球敏捷和开源社区的知名人物都曾参与过这个项目的架构与开发。在后来的几年中,好望角是 ThoughtWorks 在中国最重要的标杆项目。

Martin Fowler 的中国之行后,一批 BJUG 和 JavaEye 的网友(如徐昊、李默、熊节、陶文、钱安川等)陆续加入 ThoughtWorks,为 ThoughtWorks 在中国业务与影响力的初期发展作出了贡献。

除了在网络社区和《程序员》杂志为主的报刊发表言论以外, ThoughtWorks 开始积极参与国内的行业会议。

2005 年 12 月,熊节表明 ThoughtWorks 出席了微软企业决策者峰会金融行业论坛,并作了题为《敏捷软件开发》的主题演讲。

2006 年 6 月,Martin Fowler 再次来华,出席第十届中国国际软件博览会暨中国软件产业发展高峰论坛,并作发言演讲。第十届软博会由信产部、发改委、科技部三部委主办,发言嘉宾包括时任信产部副部长娄勤俭、科技部部长徐冠华等政府官员,以及来自东软、用友、神州数码、CA 等知名企业的高管,是当时国内档次最高的 IT 行业会议。

但 ThoughtWorks 在这些行业会议上的亮相并不成功。熊节在微软企业决策者峰会上的演讲反响平平,几乎没有获得任何反馈。

Fowler 在软博会的演讲中介绍了 ThoughtWorks 给国外一家投资银行作的项目案例:这个原定计划 8 个月完成的项目,因为采用了迭代式的开发方法,在两个月的时候已经有部分功能上线,并给客户带来真正的经济效益,随后几个星期就收回了整个项目的投资。

当时台下的听众一片茫然。因为政府主导的重点行业信息化工程固有的特色,在当时绝大多数中国 IT 业者的概念中,软件项目就只有一次预算和一次交付(多发生在年初和年底)。一个项目中有屡次交付、屡次上线、项目还没结束软件已经开始赚钱,这样的事情对于不少人来讲不是信不信的问题,而是根本没法理解。

对敏捷方法、迭代式交付基本理念和运做方式的缺少了解,使得中国的 IT 同行一时没法认识到 ThoughtWorks 独特的价值。

在早期的三个本地项目中,ThoughtWorks 与西安高新区政府和河北省地税局的合做都出现了不愉快,为时不长即告结束,只有与厦门的私企好望角的合做持续了较长时间。Martin Fowler 在短暂的中国之行中已经看到,当时的中国市场并不特别重视软件的价值,行业更关注压缩项目成本,包括缩短项目周期和挤压人力成本,所以更倾向实施成型产品而非定制开发。

这种对软件独特价值的忽视和对成本的极度重视,致使 ThoughtWorks 在与北大方正等典型的本土 IT 企业谋求合做机会时屡屡遭遇尴尬。为此,ThoughtWorks 决定自行营造行业氛围,主办大型行业会议,倡导对软件价值的重视。

“你还不走吗?”熊节问郭晓。

此时已是夜里 11 点多,熊节跟 CSDN 的一名工做人员正在调试会场的音响设备,猛然回头,发现郭晓坐在会场中间的座位上,两眼呆呆地望着天花板。

“噢,”被熊节问到,郭晓好像忽然回过神似的,“再等一下子。大家不是也没忙完嘛。”

说完,郭晓又进入了入神的状态。他低头看看一张纸卡片,而后又抬头望着天花板,过一下子开始念念有词,手还不时挥舞两下。熊节好奇地走到郭晓身旁,探头看他手上的卡片写了什么。

“这是我明天的 cheat sheet,”郭晓主动拿起卡片给熊节看,只见卡片正反两面密密麻麻地写着英文小字,“明天不是我讲第一个吗?得抓紧时间练啊。”

“总共 40 分钟演讲还须要准备?”熊节诧异地问道,“你这种外企高管不是张口就来吗?”

“哪儿啊,”郭晓笑着说,“你可不知道,我最怕对着一大群人演讲了。紧张啊,紧张起来腿都会抖,跟筛糠似的。况且这是第一次在中国作这么大规模的演讲,更紧张。因此我得先练好,练得熟了就不那么紧张了。”

说完,郭晓又把注意力放回他的卡片上,一时抬头呆看天花板,一时念念有词手舞足蹈。直到其余人调好全部设备准备关灯,他才离开会议室回房间睡觉, 这时时间已过午夜。

首届敏捷中国开发者大会在 2006 年 6 月 3 日在北京新世纪日航饭店举行,大会的主题是“敏捷释放软件价值”。此次会议由 ThoughtWorks 和 CSDN 共同主办,JavaEye 等网上社区以协办单位身份帮助宣传。除 Martin Fowler 外,ThoughtWorks 还派出了来自澳大利亚的 Scott Shaw 和来自英国的 Liv Wild 做为演讲人,公司创始人 Roy Singham 也专程到中国参会。现场到会听众约 600 人。

在时任 ThoughtWorks 中国区副总经理郭晓的开场演讲中,他一方面迎合了行业对成本的重视,列举 Forrester 的数听说明采用敏捷开发方法能够大幅节省软件项目成本。然而他给出的数据中,产品整体缺陷率的大幅降低或许能够用测试驱动开发和持续集成等实践来解释,但项目速度(若是“速度”定义为项目完工的整体时间的话)的大幅提高是敏捷解释不了的,只能解释为实施敏捷的团队(即 ThoughtWorks 的团队)能力更强。

另外一方面,他也指出“软件的功能不等于价值”,由于“实际上不少功能最终用户根本不会用”,反而形成软件的维护和扩展困难。敏捷方法借由充分的沟通避免开发没必要要的功能、借助技术和管理手段保障软件的可维护性与可扩展性,从而释放软件的价值。

这个演讲用一种贴近中国市场现状的方式阐述了敏捷的价值:没有超越时代地谈论“迭代式发,而是从避免功能浪费和延长软件生命周期的角度提出论述。后来几年的实践证实,这个演讲的逻辑,比起 Fowler “原汁原味”的敏捷论述,在中国市场上更容易获得承认。 在随后的主题演讲中,来自英国的业务分析师 Liv Wild 具体介绍了如何进行“充分的沟通”。

当时的ThoughtWorks 在启动项目时会采用一套称为“QuickStart”(快速启动)的信息收集方法,以高互动、可视化的工做坊形式厘清项目的愿景、利益相关人、业务流程、功能范围、设计风格、技术架构,并造成明确的交付计划。当时典型的 QuickStart 需耗时 4 周,后来这套方法在中国被压缩到两周甚至一周。即便放下迭代式开发不谈,这套需求获取的方法自己也大大领先于当时国内 IT 企业广泛的水平。

主题演讲以外,ThoughtWorks 的咨询师还在会场组织了一系列“敏捷游戏”,邀请现场听众参与。“折纸帽子”游戏阐述了在开发过程当中与客户频繁沟通和反馈的重要性,“搬运气球”游戏阐述了迭代式交付对于消减项目风险的价值。 这两个游戏都是 ThoughtWorks 在印度举行的新员工入职训练营 “ThoughtWorks 大学”(简称 TWU)的课程内容,这种参与性强、寓教于乐的形式,在中国 IT 行业的专业会议中前所未见,令与会者耳目一新。

大会结束后,李默创建了“敏捷中国”邮件列表,并根据签到记录邀请与会者加入。在后来几年中,这个邮件列表中发生了一系列很有深度的讨论,成为国内敏捷先行者们又一个重要的在线言论阵地。这个邮件列表随着一年一度的“敏捷中国”大会不断成长,正是中国敏捷社区在逆境中砥砺前行的剪影。

结语

在行业信息化项目的甲方与软件企业的高层领导都对敏捷缺少兴趣的几年时间里,在一线打拼的一批敏捷实践者没有停下脚步。

他们在探寻轻量级开源架构方案的同时,也在各自的工做中采用敏捷方法,尤为是用户故事、迭代管理、持续集成和测试驱动开发等实践,在需求管理、项目管理、配置管理和质量保障等方面得到了扎实的能力提高。

他们在 JavaEye 等在线论坛交流心得、在 BJUG 等线下社区展开深刻的探讨和分享。在交换信息、答疑解惑的过程当中,他们也结识了同道的朋友,得到了并肩前行的动力。

在整个行业对敏捷缺少认同的岁月,《程序员》杂志为这些“草根”实践者们保留了一个可贵的言论阵地,使他们得以持续发声。当全球敏捷社区的领导者 ThoughtWorks 进入中国,这些敏捷实践者们迅速在其周围汇集,并以行业大会的形式喊出了响亮的宣言。

随后,一些对于软件能力有着最迫切诉求的大企业回应了这一号召,向着“敏捷中国”这面大旗靠拢。


做为中国敏捷十余年发展历程的亲历者与推进者,资深老程序员熊节从整个中国 IT 发展进程审视敏捷,经过本课程带你一块儿从新经历一代程序员的青葱热血岁月,与你一块儿梳理中国软件工程领域 20 年发展的关键脉络。

不止于敏捷,你会切实感觉到整个中国 IT 行业、乃至中国经济的发展。

做者简介:

熊节,现任宝尊电商成都研发中心总经理,曾任 ThoughtWorks 总监咨询师、 CSDN 技术主编。

IT 行业打拼 18 年,在金融、零售、政府、电信、制造业、全球医疗等行业的信息化建设方面有着丰富经验。翻译了《重构》《软件工艺》《实现模式》等行业重要著做,是中国 IT 浪潮中敏捷发展的领航者之一。熊节拥有利物浦大学 MBA 学位。

插图提供:

虎头锤,旅居墨尔本的老程序员,北邮博士、北大硕士,15 年编程经验。目前从事支付系统相关业务,曾转战区块链、通讯行业。敏捷倡导者、手绘爱好者。