写点什么

20 年起义,敏捷已死,敏捷万岁

  • 2021-08-31
  • 本文字数:4042 字

    阅读完需:约 13 分钟

20年起义,敏捷已死,敏捷万岁

开发者,你们真的享受到敏捷开发的好处了吗?


敏捷宣言(Agile Manifesto,敏捷软件开发)诞生至今刚好 20 年,有两个事实似乎不言自明。


  1. 作为一个标签,敏捷是胜利者;没有人希望被称为“非敏捷”。

  2. 但敏捷在实践上和创始人的革命性思想相去甚远。


我们是怎么走到这一步的?大家都说自己敏捷,但是很少有人真的敏捷。

宣言从何而来


2001 年 2 月,由 17 名软件专家组成的小组在数天的的讨论和辩论后,共同撰写了《敏捷软件开发宣言》(Agile Software Development Manifesto)。


首先要强调的是,这些人是实践者,并非项目经理、首席技术官或工程副总裁。他们是开发者、程序员、科学家和工程师。他们仍然在一线编写代码,并与他们的利益相关者合作,共同解决问题。这非常重要。


笔者注:我并不了解每一个签署人的个人历史,但是在我认识的人当中,他们要么还在编写代码,要么写代码写了很长时间。


还有一点是,《敏捷宣言》并不是凭空产生的。很多人已经有了他们自己创造的方法论,并且正在宣传。也许我的记忆有些偏离,但是我想所有这些方法在“敏捷”之前就已经存在了。极限编程(Extreme Programming,XP)、Scrum、DSDM、自适应软件开发、Crystal、特征驱动开发(Feature-Driven Development,FDD)、实用主义编程。Schwaber 和 Sutherland 曾在 1995 年公开讨论过 Scrum;我印象中 Beck 和 Jeffries 在 1996 年就开始谈论极限编程了。


这个小组中的每个人都有编写软件的丰富经验,他们都在寻求一种方法来代替重量级的文档驱动开发过程。宣言的核心有四项价值陈述:


我们身体力行同时帮助他人来探索开发软件的更佳方式,进而认可下列价值:


  • 个体和互动高于过程和工具。(Individuals and interactions over processes and tools.)


  • 可工作的软件高于详尽的文档。(Working software over comprehensive documentation.)


  • 客户合作高于合同谈判。(Customer collaboration over contract negotiation.)


  • 响应变化高于遵循计划。(Responding to change over following a plan.)


曙光乍现


站在 2021 年往回看,我们可以轻易地认为现代软件开发的许多实践是理所当然的,但是在 2001 年,这些想法都非常激进


你说你要在收集所有需求并评估每一个特征之前就开始开发软件?你绝对是疯了。


实际上,敏捷从一开始就公开且激进地反对项目管理。举例来说,Ken Schwaber 就曾直言不讳地表示,他的目标是解雇所有的项目经理——不只是让这些人离开他的项目,而是要将这个职业从行业中铲除。


敏捷性与 PMI


我们发现,在复杂的创造性工作中,项目经理角色会起反作用。作为项目计划的代表,项目经理的思维会将项目中其他人的创造力和智慧限制在计划范围内,而不是调动每个人的智慧去最好地解决这些问题。


——Ken Schwaber,宣言签署人和 Scrum 共同创始人


Scrum Master 在这个问题上没有什么权威,也没有投票权。他们是仆人型的领导者,帮助保护和疏通团队,但不能管理团队。极限编程也是如此。假如我没记错的话,极限编程最初有跟踪者和教练,它们的气氛很像,都是大家互相鼓励和支持。


Alistair Cockburn(敏捷宣言签署人,水晶方法论 Crystal methodology 和六边形架构 Hexagonal architecture 创始人)最近对这一问题提出了非凡而深刻的见解,包括这一观点(转述):


Scrum 在充满敌意的领域中达成了一桩伟大的交易:


1. 管理层每年有 12 次机会,在每次 sprint 结束后,以他们希望的方式改变方向。


2. 团队有一整个月的安静时间,没有任何干扰或者方向的改变,可以进行大量的思考和工作。


3. 在没有管理层干预的情况下,团队必须宣布他们在本月能做什么,不能做什么。没有哪位高管能得到比这更好的交易。没有哪个开发团队能得到更好的交易。


作为一名认证的 Scrum Master,我在敏捷团队里工作超过 15 年,我阅读过该领域的许多流行书籍。在这方面,我从来没有见过任何人能够如此清楚、简明扼要地阐述这一观点(再次引用 Cockburn):


Scrum 的发明是为了在恶劣的环境下工作。它是一个强硬的管理者与开发者之间的契约,需要时间思考和探索。


反击战


从某种意义上说,敏捷是一场源自基层的劳工运动,从基层工作者开始,然后被推到管理层。为什么会成功呢?


部分原因是因为开发者的数量以及他们对公司的价值不断增加,从而获得了影响力。我认为最大的因素是,传统的瀑布开发方法并不可行。由于软件变得越来越复杂,业务变更的速度更快,用户的复杂性更高,预先计划每件事情都变得不可能。采用迭代式开发更合乎逻辑,尽管对习惯于计划所有事务的管理者来说有些可怕。


在 2000 年代中期的会议上,你能看到管理层并不买账,但是他们已经没有更好的主意了。


接着,令他们吃惊的是,敏捷开始慢慢奏效了。团队需要奋斗一段时间,然后慢慢成长,找出哪种模式更适合自己,并获得发展的动力。经过几次 sprint 之后,你会发现在优先考虑工作软件、协作、花时间检查、适应以及其他所有方面的真正力量。


敏捷花了 5 年左右的时间,从一种你听说过但可能从未使用过的的方法变成了每个人都在做的事情。在 2005 年,我换了工作,我还记得我当时只是对敏捷略有了解,而 TDD 才是真正的不同。2010 年,人们认为现代的软件团队都在进行某种形式的敏捷开发。


我们做到了!我们赢了!恭喜各位!


我非常希望故事到此结束。你可以关闭浏览器的标签页了。


赢很轻松,年轻人,治国才更艰辛。(Winning was easy, young man. Governing’s harder.)


——百老汇音乐剧《汉密尔顿》(Hamilton)中乔治·华盛顿的歌词


遗憾的是,像许多革命一样,敏捷并不像创始人预想的那样发展。


  • 事实证明,优先考虑个体和互动是一个很难推广的概念。销售过程和工具要容易得多。

  • 事实证明,比起不切实际的计划和堆积如山的文件,工作中的软件更难生产。

  • 事实证明,与客户合作需要信任和脆弱性,而这在业务环境中并不总是如此。

  • 事实证明,对于那些想要控制局面、同时又需要为自己的业务制定长期计划的高管来说,应对变化往往显得不够重要。


事实证明,敏捷做得不好,就会让人感觉很混乱。


但这并不意味着这四种价值观都错了。这只意味着整个事情需要更多努力才能做好,也需要一些勇气去接受软件有时候本来就混乱无序的。你必须了解并相信,如果你一直在学习、适应、改进和提升,你最终将达到一个更好的境界,这比使用瀑布方法更诚实、更现实、更富有成效。


敏捷运动并不反对方法论,事实上,我们很多人都想要恢复方法论这一术语的可信度。我们想要恢复一种平衡。我们支持建模,但不是为了将一些图表存档到尘封的公司仓库中。我们支持文档,而不是几百页从来没有维护、很少使用的“大部头”。我们制定计划,但也承认在不稳定环境下计划的局限性。有些人把极限编程、SCRUM 或者任何其他敏捷方法的拥护者当做黑客来对待,他们根本不知道这些方法和“黑客”的最初定义。


——《历史:敏捷宣言》(History: The Agile Manifesto),Jim Highsmith


这些都很重要。对于敏捷,我们仍然需要计划和文档,并且具有严谨性。这涉及平衡。但是,如果你的组织在敏捷转型中挣扎,陷入混乱之中,那么当有人以认证、过程和工具的形式为你提供“救生艇”时,你就可以一跃而上。管理层对于过程和工具的理解要比对自组织团队更了解。


起义失败


不幸的是,我没有看到勇敢的反叛者在这一幕中卷土重来,至少在敏捷这个大方向下是如此。


工具供应商、过程顾问和专家们所作的承诺永远不能实现,这种情况已经泛滥成灾。因此,这就是我们最终采用 SAFe 和 Scaled Scrum 以及所有其他企业敏捷风格的原因。这些框架并非出于恶意而创建,它们甚至在正确的情况下具有一定的价值。但是我不认为它们是敏捷。尝试拓展一种注重个体和互动的方法论,会不可避免地带来问题,并侵蚀其方法论的原始价值。


我们正是这样结束了 Ron Jeffries 作为宣言签署人和极限编程的共同创始人在 2018 年发表的著名文章。

开发者应该放弃敏捷


如果不恰当地运用“敏捷”的理念,它们往往会导致开发人员更容易被干扰,缩短工作时间,增加压力,并且要求“更快地开展工作”。这样做不利于开发者,并最终影响到企业,因为不能很好地应用敏捷,通常会导致更多的缺陷和进展缓慢。优秀的开发者经常会离开这样的组织,导致企业的效率比安装“敏捷”之前要低。


我们正是这样结束了 Dave Thomas 作为宣言签署人和实用主义编程的共同创始人在 2014 年发表的著名文章。

敏捷已死(敏捷万岁)


“敏捷” 这个词已经被颠覆了,实际上已经毫无意义,而所谓的敏捷社区似乎主要是顾问和供应商兜售服务和产品的舞台……一旦《宣言》流行起来,“敏捷”一词就会吸引任何有观点支持、有时间收费、有产品销售的人。这已成为一个行销术语。


因此,我认为是时候让“敏捷”这个词退休了。


反思


看着年轻的开发者们诋毁敏捷,把它看成是管理层压榨不现实的承诺、迫使开发团队疯狂工作的一种方法,我感觉非常悲哀。好吧。他们唯一知道的敏捷是强加给他们的控制机制,而非一种他们乐于接受的自我授权工具。但是我希望,一些围绕着历史和最初设想的讨论能够帮助我想起来这件事本应如何演变。


《敏捷宣言》的原则在今天和 20 年前一样明智且有意义,甚至像 Jeffries 和 Thomas 这样的所谓反叛者也仍然这样认为。


Jeffries 在上面提到文章中说,“《敏捷软件开发宣言》的价值观和原则 仍然是我所知道的构建软件的最佳方式,基于我这么长时间的各种经验,无论大型组织采用什么方法,我都将遵循这些价值观和原则。”


我深以为然。


如今讨论敏捷既不时髦也不酷。敏捷很无聊。每个人都在做敏捷,对吧?现在是反思过去 20 年的最佳时机,问自己一些问题:


  • 哪些地方做对了?

  • 哪些地方出错了?

  • 下次我们想做些什么不同的事情?


一些 Simple Thread 的员工正在经历这场革命,他们计划在未来几个月里重新思考最初的 12 条敏捷原则中的每一条,对其原始含义进行背景分析,并考虑它们在当前软件开发环境中的价值。


我希望我们能通过研究创始原则,从过去的经验中学到一些东西。用 Dave Thomas 的话说,即使我们选择放弃“敏捷”,我们也能保持敏捷。


原文链接:


https://www.simplethread.com/agile-at-20-the-failed-rebellion/


2021-08-31 08:105105

评论 6 条评论

发布
用户头像
敏捷说到底是一种价值观和行为准则,而大家常用的scrum是个管理框架。思想归思想,框架归框架,scrum这种框架本来就只应用于几个小团队,体量一旦大了,就需要需要引入大规模敏捷比如less这种框架,否则就是场灾难,管理人员会发现不如走走老瀑布;而业务一旦不是单纯的开发交付了,那就光靠scrum等框架来管理更不够了,肯定还是要结合诸多传统的项目管理手段适应性的融合起来去管理和补齐开发外的一系列事务;
最后,最关键的一点,敏捷对团队自身的要求真的很高,管理成本其实没有降低,只是从集权制的管理成本分散到了优秀的敏捷团队每个人头上进行自管理了。所以至少在目前的中国,想真的全公司落地敏捷的真的很难,几个项目还能搞搞,多了真的只取敏捷,而放弃命令与控制,真的没法管,得乱套.....
2022-08-15 16:58 · 上海
回复
用户头像
理想的敏捷有诸多前置要求:1 高度自主权, 2. 团队平均素质高 3.团队不同角色利益一致。屁股决定脑袋,在大公司里,不同角色的汇报线都不一样
2021-09-02 08:51
回复
用户头像
敏捷本身作为一种思想是优秀的,优秀的思想会让软件开发更快捷。但是如果“敏捷”成为了“快”的背书就错了。
2021-09-01 11:58
回复
用户头像
本质上,“敏捷的终局”发下的宏愿是巨大的,试图要去解决“一般性管理问题”,这是无法实现的。但敏捷带来的灵活应对的思路、工作方法,是非常成功的
2021-08-31 15:31
回复
用户头像
自顶向下规划+自下向上应对,应该是两头都要才能大河有水小河满,才能让地上的土壤去载物、让外部价值流入。多大的颗粒交由战略和规划,多大的颗粒交由灵活的应对是需要看情况的,无法用一种绝对的方法论来解决。
2021-08-31 15:29
回复
用户头像
翻译得诘屈聱牙
2021-08-31 10:43
回复
没有更多了
发现更多内容

夜莺监控的机器支持挂载到多个业务组了

巴辉特

监控系统 运维监控 IT监控 开源监控

NL2SQL之DB-GPT-Hub<详解篇>:text2sql任务的微调框架和基准对比

汀丶人工智能

NL2SQL

数字化智能工厂的主要功能组成

万界星空科技

数字化 智能工厂 智能制造 万界星空科技mes MES、

35+IT技术同学的未来职场选择

老张

认知提升 规划 职业生涯 职场发展

从SQL Server过渡到PostgreSQL:理解模式的差异

EquatorCoco

数据库 sql

荣誉|奇点云入选“2024年成长型浙江数商”名单

奇点云

人工智能 互联网 软件

RAG系统评测实践详细版:Coze及相关产品评测对比,以及下一代RAG技术

汀丶人工智能

rag

2024-10-08:用go语言,给定一个字符串 word 和一个整数 k,判断是否可以通过删除最少数量的字符使得该字符串成为 k 特殊字符串。 其中,k 特殊字符串满足字符串中任意两个字符的出现频率

福大大架构师每日一题

福大大架构师每日一题

规模之大刷新世界纪录,Cloudflare成功抵御3.8Tbps的DDoS攻击

网络安全服务

udp 端口 web服务器 Cloudflare DDoS 攻击

人工智能的未来

天津汇柏科技有限公司

AI 人工智能

新一轮 Web3 游戏季,Final Glory成捕获全新市场红利的入口

大瞿科技

F5携手NetApp加速并简化大语言模型AI部署

科技热闻

揭秘:一键获取京东商品详情的API之旅

代码忍者

API 测试 pinduoduo API

DApp智能合约开发:交易平台定制化与系统成品开发

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 公链开发

新一轮 Web3 游戏季,Final Glory成捕获全新市场红利的入口

加密眼界

万界星空科技MES系统在智能制造中的应用

万界星空科技

智能制造 mes 万界星空科技mes 制造业工厂

线上事故风险解读之技术漏洞

巧手打字通

后端 架构设计 工程能力 线上事故 构架

京东金融APP的鸿蒙之旅:技术、挑战与实践

京东科技开发者

淘宝商品详情页接口_X-ISGN和WUA算法

tbapi

淘宝商品详情数据接口 淘宝API接口

京东商品详情API接口(JD.item_get)并发策略:提升数据抓取效率

tbapi

京东API接口 京东商品详情接口 京东商品数据接口

好用的文件对比工具:Beyond Compare 4 (Win&Mac) 中文版

你的猪会飞吗

Beyond Compare 4 for Mac Beyond Compare 4 下载

SD-WAN怎样满足企业网络的需求

Ogcloud

SD-WAN SD-WAN组网 SD-WAN服务商 SDWAN SD-WAN国际专线

文盘rust--使用 Rust 构建RAG

京东科技开发者

揭秘动态化跨端框架在鸿蒙系统下的高性能解决方案

京东科技开发者

亚马逊国际商品详情API返回值:电商精准营销的关键

技术冰糖葫芦

API Gateway API 接口 API 文档 API 测试 pinduoduo API

构建万物智联生态,“人才”与“资金”不能少

Geek_2d6073

技术实现方案:获取淘宝商品详情API返回值

代码忍者

API 测试 pinduoduo API

1688跨境代采业务用到的API接口及其使用示例

tbapi

1688代采系统 1688代采接口 1688跨境

电商数据化运营:阿里巴巴商品详情API返回值的实际应用

技术冰糖葫芦

API 接口 API 文档 API 测试 pinduoduo API

在C#中使用适配器Adapter模式和扩展方法解决面向对象设计问题

不在线第一只蜗牛

C# .net

20年起义,敏捷已死,敏捷万岁_架构_AI Tenhundeld_InfoQ精选文章