AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

引入敏捷但不行之过甚

  • 2007-03-26
  • 本文字数:3426 字

    阅读完需:约 11 分钟

摘要

敏捷软件开发日益得到各方追捧。但是,“敏捷”二字到底意味着什么呢?是单元测试,持续集成,还是遵循 XP 或者 Scrum?在本文中,我们将探讨如何将敏捷方法引入出现问题和尚未使用敏捷方法的项目中。

敏捷方法学

这些年以来,已经有一些敏捷方法陆续浮出水面:极限编程(Extreme Programming,XP)、Scrum、Crystal、精益开发方法(Lean Development,LD)、动态系统开发方法(Dynamic System Development Method,DSDM)和特性驱动开发(Feature Driven Development,FDD)等等。尽管这些方法所强调的地方各有千秋,但是它们之间存在一些共同主题:成功完成开发,使设计能够演进,创建健壮的代码,还有,最重要的是通过与客户的交互寻求反馈。

不同的方法对于不同的人来说,意义各有不同。某些人认为,假如你不照本宣科地遵循 XP 的所有核心实践,那么你就不是在实践 XP。XP 有一些重要实践,Scrum 也有自己的重要实践。此外,还有其它的重要实践可供使用,并取得成功。

开发者们会问:“我应该遵循哪个方法?”“我应该用 XP,还是 Scrum?对于项目出现的不利局面,我该做些什么才能扭转乾坤呢?”这些问题都非常具有实质性,我们将在本文中逐一解决。

为失败的项目引入敏捷特性

方法学常常伴随着一些规程(ceremonies)而来。一些重量级的开发过程会非常规程化(或者说正规化)——它们会要求你遵循一系列的步骤,编写某些文档,等等。假如它真的能为你的成功带来影响的话,一定程度的规程是很好的。通常,敏捷方法会期望你去实践单元测试,举行站立会议(standup meetings)等等。这些同样也是规程,并且敏捷方法支持者们(包括你谦恭的作者)都会表示,这是一些应当遵从的好规程。但是,这些是你应当第一顺序采用的实践方法吗?你应当采用所有提供给你的实践方法吗?你应该立刻全部采用它们吗?不必,当然不必。

让我们打个比方。我们会同意,健康饮食加上锻炼是保持强健体魄的好习惯。然而,如果一个病人患了严重的胸痛,你肯定不会(也不想)听到医生说:“如果你饮食健康并且加强锻炼的话,你就不用到这儿来了。所以说现在给我爬起来,马上来跑步机上锻炼!”这么做着实荒唐可笑,弄不好还可能把病人的性命搞丢。我们必须先将病人稳定下来,直到病情得到改善,才能用强化训练的方法进行调整。

假如你想在出现麻烦的项目中全盘引入敏捷方法,其结果也有可能是全盘皆输。在引入其它优秀的实践之前,让我们先探讨一些能帮助我们重建项目,并使其恢复元气的实践吧。

采用迭代的步伐迈向敏捷

假定你只有几个月时间来完成你的项目,然而项目团队仍远远地落在计划之后。此外,假设你的团队并不熟悉诸如单元测试和持续集成之类的大多数重要的敏捷实践。为这样的团队引入单元测试,可能需要时间理解和熟练应用。尽管单元测试可以带来显著的益处,但是对你的团队来说,目前却可能并非合适的时间。

比较稳健的做法,可以是一个渐进的(迭代且递增的)方式,使你的团队迈向敏捷。在入手解决问题之前,第一件事情应该是去了解问题到底是什么。为什么你的团队会落后于计划?有哪些东西在妨碍他们?至少,世界上所有的好方法都无法马上见效。了解首要和迫切问题是什么,并且解决它们,是很重要的。一旦你解决了首要问题,你就可以继续前进,进行改进和调整。

使用迭代式敏捷方法的尝试

我曾有这样一个机会参与到一个处于危机状态的项目中——一位翘首企盼的客户在为他行将崩溃的项目紧急求援。这个项目进行了很长时间,却成效甚微。整个项目团队并没有采取任何敏捷方法,他们没有进行交流,项目没有迭代周期。他们痛苦地挣扎着,以期能跟上进度,并努力尝试在编写新代码和修正 bug 之间寻找平衡。

他们只剩下很短的几个月来完成这个项目;整个团队陷于一片恐慌之中,项目经理几近绝望。要求团队采取例如单元测试的方法,在当时看起来并不是一个稳当的做法。那么我能尽可能少地采取哪些敏捷方法实践,来为这个项目逆转乾坤呢?根据当时项目和团队的现状,我们决定以其时看来最合乎逻辑的三个方法开始:每周迭代并提交演示版本,每天举行站立会,以及划分优先级和回溯。

每周迭代并提交演示版本

整个团队埋头苦干,发了疯似地想把事情做好。他们看到的项目范围和任务列表上的任何时间满得让人脑袋发晕。团队成员中存在一些合理的顾虑:我应该修改这些 bug 吗?我应该添加新特性吗?该是哪些新特性?那上周我开始着手的东西又该怎么办呢?还有两周前的呢?你要我一口气处理所有这些东西?就在现在?!

如果项目团队能够清楚地专注于他们应该做的工作,那么结果肯定是颇有裨益的。通过确定按照以周为单位的迭代进行工作(不同的敏捷方法推荐一至六周的时间作为迭代周期),我们可以每次定义出一周的工作范围。这样就为团队的每个成员和项目经理提供了一个让大家坐下来制定当前一周工作目标的机会。一旦用于迭代的任务列表被制定下来以后,团队的每个人参与评审。谁也不想搞出一个失败的计划——整个团队都必须统一口径,决定哪些要完成的东西是合理的。

每个周末,我们向可能为项目提供关键性反馈的核心客户进行项目演示。项目团队进行这些演示的目标,就是为了符合客户的期望,每周进行一次。在演示中,项目团队展示哪些东西已经被实际构建出来,阐明他们完成的特性,并且寻求反馈,从而了解哪些可以改进,哪些需要更改。我们也决定哪些任务应当在下周优先执行。

每天举行站立会议

团队的成员们抱怨说,他们能听到的,仅仅是行军号角声,但没有人知道其他人到底走到了那儿。他们之间缺乏有效的交流。

我们在这个项目中引入的第二个方法就是每天举行站立会(最先在 Scrum 方法中提出,并在 XP 中被采用)。每个团队成员都有机会进行一个简短的演讲。他们被要求集中讨论三件事情:前一天他们做了些什么,今天他们打算做些什么,还有哪些东西在妨碍他们(如果有的话)。

这样做使整个团队得以了解每个人在做哪些东西。而且,这对当天的准备也起到帮助作用,促使每个开发人员把重心放在自己当天的任务上。

划分优先级和回溯

一个困扰项目团队的问题是,他们很难将注意力集中在他们应当完成的工作上。开发工作就像玩“抓螃蟹”游戏一样——他们被修复那些看似毫无规律地不断冒出的问题,搞得手忙脚乱。他们主要使用电子邮件报告问题。不幸的是,这些邮件常常丢失,或者被其他堆积成山的正常邮件和垃圾邮件所掩埋。通过使用一个简单的追踪系统,我们可以输入问题和错误,为它们分配优先级,并且检查开发人员的进度。这样也为项目带来了一些好处。

其他实践方法

在这个项目中,我们又进一步引入了其他有用的实践方法,但并不是一蹴而就的。这么做的目的,不是为了变得敏捷,而是为了成功。我们采取了一种为项目团队带来自信的方式进行工作,并且让大家明白项目在前进。我们否决或者推迟了不会带来即时收益的方法,把带来长期收益的方法保留到之后进行。通过遵循一些经过选择的有意义的方法,以及团队的帮助和对成功的恳切追求,项目提前于计划完成了——这在以前是不可想象的。

结语

Ron Jeffries 明智而又贴切地表达了这样一个观点:“采用 XP 本身并不能带来任何奖励。真正的奖励来自使用正确的实践组合做事,那就是成功。”你要做的,是把注意力集中在如何取得成功上,而不是照本宣科地去实践敏捷。首先,选好能实际解决你问题并且带来进展的实践方法。然后,继续采用其他使你和你的团队变得更好的方法。你怎么知道你做的是正确的呢?除了成功,没有更好的证明方式。

参考文献

  1. Kent Beck and Cynthia Andres, “Extreme Programming Explained: Embrace Change”, Addison-Wesley Professional.
  2. Ron Jeffries, nn Anderson, and Chet Hendrickson, “Extreme Programming Installed”, Addison-Wesley Professional.
  3. Ken Schwaber and Mike Beedle, “Agile Software Development with SCRUM”, Prentice Hall.
  4. Venkat Subramaniam and Andy Hunt, “Practices of an Agile Developer”, The Pragmatic Bookshelf.

关于作者

Venkat Subramaniam 博士( venkats@agiledeveloper.com )是 Agile Developer, Inc. 的创始人。他培训并指导了美国、加拿大、欧洲和印度的 3000 多名软件开发人员。Venkat 帮助他的客户有效地在软件项目中实施敏捷方法并取得成功,并且他本人多次在大会上进行演讲。同时他是休斯顿大学的助理教员(在那里他获得了 2004 年计算机系教学优秀奖),此外他还在莱斯大学继续教育学院教授专业软件开发人员系列课程。他是《.NET Gotchas》的作者,以及《Practices of an Agile Developer》的共同作者。

2007-03-26 06:201066
用户头像

发布了 117 篇内容, 共 15.8 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

将 TIUP Package 组件能力集成到 TiUP Mirror Pack

TiDB 社区干货传送门

TiDB 源码解读 8.x 实践

國際知名榮譽顧問加入台灣分析集團總部,全面升級量子電腦Q系統

科技汇

手机直连SpaceX星链,一场“酱油比鸡贵”的营销游戏

脑极体

通信

win版UltraCompare (文件比较/合并工具) v24.0特别版

iMac小白

UltraCompare 中文版 UltraCompare 下载

AI日报|文生语音大模型国内外均有突破,Pika完成6亿新融资,视频大模型也不远了!

可信AI进展

数据虚拟化:零数据搬运,实现全域数据的集成和自适应加速

Aloudata

数据分析 数据集成 数据虚拟化 noetl

PingCAP 成为获评 Gartner 云数据库“客户之选”的首个中国独立数据库厂商

TiDB 社区干货传送门

社区活动

win版Net Monitor For Employees Pro(专业电脑监测软件) v6.3.3 激活版

iMac小白

win版Screenpresso Pro(专业截图工具) v2.1.26 中文注册版

iMac小白

喜讯!云起无垠入选《LLM驱动数字安全2024—AI安全系列报告》

云起无垠

网络安全 #人工智能

AI日报|智谱AI再降价,同时开源9B系列模型;国内外气象大模型竞逐升级

可信AI进展

高效抓取电商平台商品数据:基于API接口的艺术与实践

Noah

win版PVS Studio(静态代码分析工具) v7.30激活版

iMac小白

新三顾茅庐:大型政企为何选择「混合云」!

脑极体

云计算

win版IDM UEStudio(文本代码编辑器)v24.0特别版

iMac小白

win版Topaz Gigapixel AI(图像无损放大工具) v7.2.1 绿色便携版

iMac小白

win版FontLab(字体制作工具) v8.4.0.8858 特别版

iMac小白

win版Power-user Premium(Excel插件) v1.6.1840 特别版

iMac小白

【必收藏】TiDB 从 v4.0 到 v7.5 有哪些功能变化?看这篇文章就够了!

TiDB 社区干货传送门

版本测评

万字长文详解降本增效利器 PikiwiDB(Pika) 混合存储原理

apache/dubbo-go

大模型安全 | RAG精确应对大模型敏感问题知识幻觉难题

百度安全

Web3 在 AI 民主化中的作用:构建去中心化的 AI 模型

区块链开发团队DappNetWork

AI搜索哪家强?16款产品实战测评,效率飙升秘籍!

可信AI进展

360 智慧商业 x TiDB丨数据架构革新驱动广告业务高效运作

TiDB 社区干货传送门

实践案例 社区活动 数据库架构设计

敢于公布BUG的国产数据库才是好数据库

TiDB 社区干货传送门

管理与运维

网易伏羲有灵平台荣登《China Daily》,人机协作开辟灵活用工新篇章

新消费日报

win版IDM UltraEdit(十六进制文本编辑器) v31.0中文激活版

iMac小白

win版Steelray Project Viewer(打开导航的软件) v6.22 特别版

iMac小白

引入敏捷但不行之过甚_研发效能_Venkat Subramaniam_InfoQ精选文章