敏捷软件开发方法自 2001 年传入中国以来,历经十多年的发展变迁,目前已经成为国内 IT 企业主流的研发管理方法。敏捷方法的传播和发展历程,是中国 IT 行业发展的剪影。CODING 特邀敏捷顾问、MBA,CSD 认证讲师、XP工程派敏捷领熊节老师将在《敏捷中国史》课程中通过大量史实材料,用技术史的研究方法纵览敏捷在中国的传播、发展、演化,从一个侧面呈现 IT 行业、业内领先企业和从业者的成长历程,为后来者留下理解这段历史的脉络。
大家好,今天我来为各位同学梳理一下敏捷进入中国的过程和发展。首先来看一下招商银行的一项数据。过去讲科技创新是一个很神秘的事情,不知道应该怎样去创新从而得到一个好项目,这个数据讲的就是可以通过大量的失败、大量的试错,从中发现有效的项目。我觉得招商银行是这么多年来在这个行业里对敏捷理解最深刻的一家企业,它真正做到了用敏捷的方式去改变整个经营和创新的思路。在 2018 年至 19 年这个节点上,一家中国的大型银行能用这样一个截然不同的思路去看问题,这是一个非常了不起的里程碑,标志着敏捷在中国取得了很大的成绩。那么站在这个节点我们回顾一下敏捷到底是怎样进入中国的。
最初敏捷在 2000 年左右进入中国时,就像播种一样,一些技术杂志把敏捷最初的思想播种到了行业里。中国的正式出版物首次刊载与敏捷软件开发相关的内容,是《程序员》杂志 2001 年 12 月刊,当时我在程序员杂志担任技术编辑,刚好做了“代码重构”的技术专题,可以说是无心插柳,当时从我个人的角度来说只是觉得敏捷这个内容非常有意义,并没有意识到之后会成为这么宏大的一个潮流。之后在 2002 年,我又做了“极限编程”技术专题,不知不觉跟敏捷结下了十几年的缘分。
中国的软件行业其实不是自然生长出来的,并不是说经济发展到一定程度就一定会有高科技行业自然发展,实际上中国的软件 IT 行业是由政治、政策催生的。2000 年以后,全国软件产业市场规模超过 1.3 万亿人民币,连续十年的年均复合增长率都达到了 40% 以上,这是一个非常可观的数据,而源头就是 2000 年 6 月国务院颁发的《鼓励软件产业和集成电路产业发展的若干政策》(国发 18 号文),这项政策里有非常多具体的鼓励、补贴内容,整个扶持了中国软件行业大发展。但是在这么大的扶持之下,整个行业并没有做好准备,没有足够的能力去消化如此大的需求,从而催生出了一系列问题,下图就是 2000 年时一位广东的官员调研得到的情况。当时广东省的政府信息化项目中已经出现了这些软件开发过程中常见的问题,这反映出当时整个行业的能力,包括个人和企业的能力都是不足的。当时专家认为出现这些问题是因为社会化大生产尚未形成,当然这种观念本身存在一定的问题,因为这是从工业制造业的角度引申出来的。
说到行业整体能力不足,也就是说“应该具备哪些能力”,2000 年左右 CMM(能力成熟度模型)引进中国时对这个问题给出了一个比较好的答案,CMM 二级-可重复级就很好的定义了一个软件开发团队应该具备的基本能力:需求管理、项目管理、配置管理、质量保障。需求管理就是需要弄明白要做什么;项目管理控制的是以适当的进度完成项目;配置管理解决的是软件如何一步步达到最终状态的问题;质量保障解决的是软件能否符合要求的问题。这几项就是软件开发中最核心、最基本的能力。
CMM 虽然提出了整个行业“应该具备哪些能力”,却一直没有解决如何具备这些能力的问题。当时国内一线的工作者迫切想解决如何用有效的方式来工作的问题,所以开始在网络上搜索国外同行们的经验。林星是国内比较早关注敏捷的同行,他 2001 年的文章《需求分析-软件和需求的实践》就是关于我们现在说的“用户故事”,也是从极限编程中抽取出来的。石一楹也是国内最早引进重构相关内容的同行,当时他在 IBM 网站上写了一系列质量非常高的文章,我本人对重构的了解就是从他这里得来的,因为受到他的影响,我在《程序员》杂志上做了相关介绍并在之后翻译了马丁·福勒的《重构》。《解析极限编程——拥抱变化》这本书是在 02 年引进的,北京当时有一个软件工程组织叫 PKSpin,唐东铭是这个小组的成员,他给人民邮电出版社推荐了这本书并进行了翻译。之后 03 年引进了《敏捷软件开发》这本书,并由中兴的工程师邓辉进行了翻译,同年 8 月我翻译的《重构》也引进了国内,那时我们认为关于敏捷的理论体系已经基本搭建完成,接下来就是国内行业去接受、学习的过程,因为之前做敏捷都处于一个非常混沌的状态,采用了敏捷实践之后软件开发过程中应该怎么做、怎样做出一个好的软件就非常清晰了,所以大家都觉得前景十分乐观,应该在三五年左右能全面实现敏捷,能力会有一个明显的提升,整个行业会有很好的成长。当然事后证明当时我们过于乐观,敏捷并没有那么快被广泛接纳。