软件工程和项目管理的发展历史要从1910年说起,美国福特汽车公司(以下简称福特)的大规模生产将泰勒先生的科学管理方式发扬光大,其特点是大规模、大批量的“推动式”流水线过程。与之相对的是于1950年启动的丰田生产系统(Toyota Production System,TPS),逐步演进到1986年的精益生产,其特点是小规模、小批量的“拉动式”过程。相应的软件工程方法在借鉴生产系统流水线的理念后,遇到了很多问题,出现了软件危机。温斯顿·W.罗伊斯(Winston W.Royce)博士于1970年发表论文《管理大型软件系统的开发》,指出从需求、分析、设计、编码、测试到运维按照预定义好的、顺序的阶段来进行软件开发,这种方式是有风险的,并建议各阶段之间要有反馈,甚至各阶段尽可能做两遍。但行业人士却忽视了温斯顿先生的警示,仅记住了这种软件开发模式——瀑布模式,还将其进行了大规模的传播和使用。温斯顿先生因此篇论文被视为瀑布开发的鼻祖。
1986年,竹内弘高和野中郁次郎在《哈佛商业评论》中发表了题为《新的新产品开发游戏》的文章,他们指出,传统的职能筒仓“接力式”的、阶段式的开发模式已经不能满足快速灵活的市场需求,而整体或“英式橄榄球式”重叠各阶段的方法(团队作为一个跨职能的整体在内部传球并保持前进)也许可以更好地应对当前激烈的市场竞争。受此文章的启发,肯·施瓦伯(Ken Schwaber)和杰夫·萨瑟兰(Jeff Sutherland)于1995年正式发布了Scrum框架,而同期其他的“轻量级”开发方法也如雨后春笋般涌现出来,如极限编程(Extreme Programming,XP)、特性驱动开发(Feature-Driven Development,FDD)、自适应软件开发(Adaptive Software Development,ASD)、动态系统开发方法(Dynamic Systems Development Method,DSDM)等。
2001年2月,17位曾经经历过瀑布式文档与计划驱动的重量级软件开发流程的软件工程专家,带着各自的“轻量级”开发方法,在美国犹他州的雪鸟滑雪场进行了一场求同存异的聚会,他们将这些轻量级方法的共性抽象和统一到了一个共同的价值观和原则上,这就是最终形成的《敏捷宣言》,敏捷运动从此风起云涌。随后各种新的敏捷方法不断涌现,如精益软件开发、看板方法、规模化敏捷框架(SAFe)及LeSS、DevOps等。
回顾瀑布开发模式的发展,不得不提到CMMI和PMP。美国卡耐基梅隆大学软件工程学院(SEI)应美国国防部的要求,对如何规范国防部的软件开发项目进行了研究,于1991年发布 CMM 软件能力成熟度模型,对瀑布开发模式的大规模推广和应用起到了推动作用,但直到2010年发布的CMMI1.3才纳入部分对敏捷的支持,2018年3月28日发布的CMMI 2.0明确提出对敏捷的支持。美国项目管理协会(PMI)从1984年推出第一次项目管理专业人士资格认证 PMP开始,再到1996年项目管理知识体系(Project Management Body of Knowledge,PMBOK)第一版的发布,一直以“瀑布式”的项目管理方法为核心,直到2011年推出敏捷管理专业人士认证(Agile Certified Practitioner,ACP),才正式开始拥抱敏捷项目管理。2021年,PMI发布了PMBOK第七版,在第六版正式引入敏捷的基础上,具有了更多的“敏捷意识”。从CMMI和PMP的演进历程来看,敏捷已经是大势所趋。