速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

敏捷杂交 —— 新型实验还是“没弄明白”

  • 2012-01-13
  • 本文字数:3440 字

    阅读完需:约 11 分钟

引言

他们没弄明白。他们做错了。直到他们遵循了所有的准则和实践,他们才是真正的敏捷。”你之前有没有听过这类评论?随着敏捷世界中杂交的增长,对不纯粹的敏捷思维的鄙视也在增加。讽刺且自相矛盾的是,敏捷的主要成果就是让我们摆脱了瀑布过程一体适用的哲学。现在,敏捷中狂热的人们在犯同样的错误……把敏捷作为唯一的方法。本文将尝试展现,作为软件专业人员寻求持续创新和更好的方法时杂交不仅是必要的,甚至是我们的首选。

瀑布式开发不起作用

敏捷主义者以说这句话而闻名,事实上他们有大量支持他们观点的证据。但如果他们的雄辩言辞换种说法或许会更准确些:“敏捷往往对在特定类型的组织内使用特定类型技术的特定类型项目效果更好。”并不是说瀑布过程绝无效果,只是它并不是对所有项目都有效。你能找到许多业界老手,他们会告诉你他们用瀑布过程效果不错。他们在撒谎?他们在拒绝变化?

事实是这两种技术都能依赖于各种因素而发挥作用。我将在下面探讨其中一些因素,除此之外还有些其他因素。我强调这些是为了展示在软件开发投入的付出和被感知的过程中情境在其中有着怎样重要的作用:

1. 项目类型

这是个固定投入的软件产品还是个符合当前策略并将形成核心业务的软件产品?固定投入软件产品通常更适合于传统的瀑布过程,而史考特证券会发现使用敏捷会更有帮助。为什么呢?第一种情况下,项目被视作一种开支来管理、跟踪和监控。在史考特证券,他们的在线交易平台“就是”他们的业务。可以在我之前的一篇文章:为什么有些公司敏捷实施不成功?中找到对这一区别的更复杂的解释。

2. 使用的技术

与传统的复杂客户端应用程序相比,基于 web 的技术通常需要较少的开发时间。由于浏览器遵循(大部分)行业标准,因此基于 web 的技术更易于实现。它们是最适于应用敏捷方法论的技术。如果你正在部署一个复杂客户端产品,要安装在公司中 15 个部门的 16,000 台笔记本电脑、台式机上的各种操作系统(或虚拟机)上…你的开发过程将更具瀑布式特征。你或许仍会在以一定时长的迭代周期中进行开发,每两周一次把代码部署到测试环境中,但这一产品以两周为一个迭代交付一次是复杂且充满风险的。这需要更多的规划。每 30 天就安装些新东西到每个人的台式机上可不是个好主意。到第一次安装相关的问题都得到解决的时候,就要准备另一个 30 天的安装了。这个产品会处于持续的变动状态。功能性的交付非常重要,但稳定性、一致性和性能也同样重要,这需要在所用的各项技术和产品的定位间进行权衡。如果更多的变更和快速交付功能很重要,当前的技术组合是否能提供支持?如果想要的是一个稳定的、可信赖的几乎不会当机的系统,那么可能就不必重做整个软件交付过程了。

3. 项目复杂度

当项目是个新的社交媒体创业项目时,敏捷与之乃是天作之合。项目的复杂度很可能包含在开发者 / 创立者的脑海,并且他们对信息的需求的澄清就在附近(甚至可能就在同一个房间中)。他们的开发投入可能不需要任何集成的硬件。他们有自己的开发 / 发布周期,不会与公司其他部门打交道。他们可能不会把他们的软件与其他软件团队整合,并最终可能在能获得反馈和信息的业务过程改进上也没有任何投入。

将其与一个横跨公司六个部门的一个六西格玛黑带业务过程重组项目相比较。这一项目的软件开发部分也许只是全部投入的一小部分。他们对信息和需求的澄清的需要将由一个“指导委员会”决定,这个“指导委员会”可能一个月会谈不超过一次。可能还有其他外部软件需要他们提供接口并从中获取信息(或者发送信息给对方),因此对集成的谈判和时间的安排是很关键的。

有一点要弄清楚:项目的复杂度越高则更有可能需要更深入的规划…甚至是必须的。复杂度的情境给了我们机会停下来思考我们的方法。

4. 文化

公司是否易于接受新想法和新思维方式?他们是否想探索敏捷软件开发?他们通常如何适应变更?如果公司是保守的,那你对敏捷的引入也许不会有大量追随者,也许还会由此产生敌人。谨慎是必需的。更自由的组织很可能会把变更视作自由和授权。但另一方面,组织可能会过于狂热。在这种文化下,新的思维方式会快速流行起来,并在洞察力和深思有机会决定行止之前快速找到富饶的土地扎根下去。

第三条路

在敏捷和瀑布之间是实用主义。这就是一些车间,在其中把敏捷和瀑布的零部件拼凑在一起,成为自己的过程 / 行动。关注技术和结果,跳过教条和浮夸之词。

实用主义者通常被他们的敏捷同仁们奚落为“不愿意坚持到底”。相反,我总是会争辩道,他们所做的才正是最初敏捷创始人们所做的:在如何开发和构建系统上来试验新的想法。考虑到上面提到的情境,实用主义者明白,没有灵活性的教条的软件开发方法是注定要失败的。

的确,新想法来自实用主义者。

远不是“没弄明白”,他们正在寻找那些始终工作良好的甚至可能对所有项目都有效的部分。这种试验、调整和不随波逐流的意愿是创造力最纯粹的形式。这种意愿应该被鼓励和被照看。根据历史经验,这会孕育出某种变革。

下面有一些实用主义的方法,是我所看到和听到的似乎有些道理的:

1) 在棘手的问题 / 缺陷或关键架构系统上运用结对编程 —— 与其把这一项极限编程技术作为规范供起来,实用主义者更愿在需要时使用它。此外,我曾见到过一个团队,他们在一个房间里,一起讨论代码和关键集成部分以消除分歧,从结对编程演变成了群体编程。

2) 在 Scrum 方法之上附加更多的传统项目管理实践 —— 热切的敏捷人士会告诉你这从来都行不通。但以我的经验来看并非如此。例如,一个有着繁杂业务流程组件的项目中软件开发项目只是全部投入的一部分。你也许能用 scrum 来开发软件,但这样的 scrum 过程会需要与整个业务项目及它的实践、程序、时间表、风险和预算紧密地结合起来。多数企业不会选择 scrum 方法来进行一个业务流程项目。

另一个例子是一个采用离岸供应商的项目。由于时区不同和供应商有限的资源这类项目会很难以协调。另外,除了项目成本,供应商也许会要求你为每日的 15 分钟站立会议,迭代回顾时间和迭代规划时间付账。你不得不权衡额外的沟通是否值得在项目成本中增加额外费用。通常你能够通过每周的碰头会和详细定义的规范来达到同样的质量。此外,供应商通常有交付客户所求的合同义务。否则,就没人付款。这种情形下对“正确理解”的鼓励是非常高的,这也许使得瀑布方法更合意

3) 敏捷中的变更管理 —— 敏捷拥抱变化,但拥抱任何和所有变化会导致团队走向失败。我们都曾参与过这样的项目:客户在整个开发过程中频繁地改变主意,多次修订一组故事,甚至是修订在数个迭代之前就已经开发出来并测试通过的原始需求。这么做也许有很好的理由,但也会有很不好的理由:举棋不定的 product owner 注意不到或是考虑不到预算的问题并且觉得项目结束遥遥无期,或是需要“亲眼见证”后才会认可。在这些情形中的项目范围蔓延危害整个项目,也许使得领导层对敏捷产生怀疑。由 scrum master 或更传统些的项目经理精心安排的更强的变更管理技术越来越有必要,用于记录系统的进程、调整预算和进度偏差。

4) 用户故事经理 —— 敏捷方法就是团队和 product owner 在一个 sprint 规划期间把这些放在一起。然而,这常常导致故事写的不好,没有说明所有细节。敏捷需求误解是常见的问题。委任一个全职的用户故事撰写者对一个项目来说是昂贵的,也是值得的。清晰的用户故事会使得更容易编码、更好测试和最终更高的质量。

这仅仅是一些我看到过的事情。但是,我很希望能听听大家的经历。你们在敏捷和 scrum 中看到了什么创新?

总结

实用主义者不会把敏捷或是瀑布这两种方法看成‘要么接受要么放弃’的交易。我愿意把他们看作把世界视为想法超市的独立思考者。

“让我们召开每日站立会议吧,但我仍然需要甘特图来与其他部门结合在一起。”

“我喜欢每 30 天就向我们的客户展示我们的工作,但我需要一些强有力的变更管理,因为这个客户有些非常古怪的想法。”

敏捷杂交是好事。它会促进实践中的创新。没有敏捷杂交,我们无疑将重复犯前敏捷(pre-agile )世界中的错误。从某种意义上来说,极端敏捷人士是对的:实用主义者没有正确地遵循方法论。但,这不是坏事。

关于作者

Christopher R. Goldsbury是一名软件开发专业人员,在职业生涯中他担任过各种角色:开发人员、架构师、scrum master、开发经理、项目经理和质量保证经理。Chris 把他的经验和想法写在他的博客上。


给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2012-01-13 00:001918

评论

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

SpEL快速上手及实践

转转技术团队

Java spring 后端

细数下,FinClip 6月都干了啥

FinClip

音视频通话前的网络及设备检测该如何操作?

ZEGO即构

音视频开发 通话检测

新书上市 | 20年行业实践,一线工程师的必读之作

图灵教育

软件设计

内部排序——交换排序

乔乔

7月月更

公有云计费套路多?这里有一份破招详解

焱融科技

搭建帮助中心,推动SaaS企业发展

Baklib

SaaS 客户服务 帮助中心 文档管理

Flink 引擎在快手的深度优化与生产实践

Apache Flink

大数据 flink 编程 流计算 实时计算

升哲科技入选《中国企业家》2022年度“新锐100”企业

SENSORO

一体化实时HTAP数据库StoneDB,如何替换MySQL并实现近百倍分析性能的提升

StoneDB

云原生 #数据库 HTAP 大数据 开源 #开源

小白 0-1 学习 app 开发,从配置到 helloword

YonBuilder低代码开发平台

跨平台 安卓 低代码开发 多端开发

观测云产品更新|新增查看器显示列多种快捷操作;新增 Pipeline 一键获取样本测试数据;新增场景自定义查看器文本分析模式等

观测云

【7.1-7.8】写作社区精彩技术博文回顾

InfoQ写作社区官方

优质创作周报

东方甄选品控翻车,如何通过智能协同的供应链建设建开启可持续商业模式?

数商云

数字化转型 供应链 企业数字化

2022 开放原子全球开源峰会 OpenAnolis 分论坛携干货来袭!

kk-OSC

centos 开源 龙蜥操作系统 开放原子全球开源峰会 OpenAnolis

GQM 概述:构建研发效能度量体系的根本方法

思码逸研发效能

研发效能 创新方法 效能度量

云脉芯联加入龙蜥社区,共建网络“芯”生态

OpenAnolis小助手

开源 芯片 龙蜥社区 CLA 云脉芯联

这么强?!Erda MySQL Migrator:持续集成的数据库版本控制

尔达Erda

数据库 程序员 开发者 云原生 MySQL 运维

中文拼写纠错:怎样改善模型对 multi-typo 的纠正效果?

澜舟孟子开源社区

人工智能 自然语言处理 nlp 文本生成 文本纠错

工作中养成的工作习惯与给老板的汇报

松子(李博源)

大数据 个人成长 高效 高效率 工作总结

构建工业软件开源工具链,2022 开放原子全球开源峰会开源工业软件论坛即将开幕

kk-OSC

开源 开放原子全球开源峰会 开源工业软件

【LeetCode】单词替换Java题解

Albert

LeetCode 7月月更

帮助文档——助客户快速了解您的产品如何使用

Baklib

工程师世界的《原则》,Quora创始人豆瓣9.2分神作!

博文视点Broadview

共建开源人才生态,2022 开放原子全球开源峰会聚焦 “产学研用”

kk-OSC

开源 数字化 产学研用 开放原子全球开源峰会

wallys/DR8072V01/IPQ8072A networking SBC supports dual 10GbE, WiFi 6

wallys-wifi6

走进天太|加速智能生产力落地 让机器人随处可见

科技之家

关于TCP与UDP你应该知道的

是乃德也是Ned

7月月更

ACM MM 2022 | 腾讯优图11篇论文入选,含盲超分辨率算法等研究方向

科技热闻

一文搞懂Python上下文管理器

曲鸟

Python 7月月更 上下文管理器

【计算讲谈社】第五讲|不止能上路,更能做好服务:自动驾驶产品规模化的问题定义

大咖说

人工智能 自动驾驶 阿里云 科技

敏捷杂交 —— 新型实验还是“没弄明白”_研发效能_Christopher R. Goldsbury_InfoQ精选文章