50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

敏捷采纳中的死亡计划

  • 2014-09-23
  • 本文字数:1767 字

    阅读完需:约 6 分钟

当企业采用敏捷,并开始配置自组织团队的时候,管理层会感到对事情失去控制。流程、评审委员会和咨询机构,在转型到敏捷方式的时候这些都成了多余的东西,但他们却不自知,Marcel Heijmans 如此评论道。试图通过增加额外的计划来重新获得控制权,这只会让事情更糟糕,造成“死亡计划((Death by planning))”的结果。

Marcel Heijmans 是一名在 Mnemonics 名义下工作的独立软件工程师,他将在敏捷与软件架构研讨会2014 上发表名为死亡计划的演讲。这是在荷兰召开的为期一天的会议,软件架构师、开发工程师、需求工程师和信息分析师在一起分享软件架构知识。

InfoQ 采访了 Marcel,就敏捷项目计划、规模化敏捷、以及对于那些想做更小、更频繁交付的企业而言,在敏捷采纳和实践当中架构的作用等问题进行了讨论。

InfoQ: 你演讲的标题是《死亡计划》。你能阐述一下这是什么意思吗?

Marcel: “死亡计划”是一个项目管理反模式,描述了软件项目中由于过度计划导致的问题。对于确定性的、线性扩展的过程,详细地计划是很恰当的。当过程表现出更多的随机行为,详细计划的复杂度会大幅增加。许多软件项目,其本质上就包含了未知的、无序的活动。

InfoQ: 计划在敏捷和瀑布式项目中有什么不同?

Marcel: “项目”受限于固定期限、固定成本、以及 / 或固定范围。瀑布式方法提供了一种结构来规划和控制这些参数。我认为“敏捷式项目”是一种自相矛盾的说法。如果放宽“计划”的定义,你可以认为对产品待办事项列表的排序是一种计划。当然,Scrum 里的 Sprint 是典型的计划行为,Sprint 受限于时间和范围。因为一个 Sprint 的周期足够小,详细的计划是有用的。

InfoQ: 你认为软件开发是系统工程(Engineering)。这意味着什么?

Marcel: 工程(Engineering)是(工作中)用于解决问题的部分,先于制造环节,并且难以计划。在很多领域里,有大量工作都需要很精确地执行,但只执行一次,工程只是这些工作中的一小部分。但工程贯穿于软件开发始终,因此对软件开发过程做详细的计划是不太适合的。

InfoQ: 对于企业采纳敏捷,你的观点是怎样的?你能使敏捷开发规模化吗,如果能的话你是怎么做的?

Marcel: 企业接纳敏捷,因为它能带来成功。敏捷(Scrum)中的很多方面都很容易被企业所接受。而那些不容易被接受的、基本的方面,则常常被忽视掉。“用户反馈”部分(以及对应的产品负责人角色)对于大型组织而言确实很难接受。讽刺的是,敏捷广受好评的成功,主要来源于这一部分。此外,敏捷中那些容易被接纳的部分是可以被规模化的,例如创建团队、迭代式工作、每日站会、Sprint 回顾,而且有许多框架可以帮助做到。“用户反馈”决定了产品是否准备就绪;规模化“用户反馈”循环的难度,与企业在敏捷上的文化共识度成反比。

InfoQ: 企业采纳敏捷的过程中,架构在计划里扮演了什么角色?

Marcel: 软件开发的工程性质、加上大型组织里固有的复杂性、以及企业无法始终如一地实施敏捷,导致了不可预测性。当管理层感觉失去控制的时候,会祭出“标准”计划管理工具,以期重新获得控制权。但是详细的计划对于工程活动是不合适的;架构师的作用是为手头的问题提供技术解决方案。因此,对于一些问题而言,架构设计不是最好的解决方案。

InfoQ: 从你的经验看来,对于想要更小、更频繁交付的企业,有什么实践可以推荐一下吗?

Marcel: 许多企业即便采纳了敏捷,也会保留发布频率很低的发布时间表。这种方法为管理层的过度计划提供了完美的温床。系统环境的复杂性、系统间相互依赖是导致发布问题的主要原因。频繁发布是需要通过技术手段解决的。通过“计划”在十多个互相依赖的系统上同步发布时间表,这是一种时间上的巨大浪费。

运用类似 Fowler 描述的“功能开关(Feature Toggle)”机制,可以解耦提供者和消费者之间的发布依赖性。这样用一个很小的额外努力(构建“功能开关”),就能减少发布的复杂性。

另一种实践是做到自动化部署。我发现用工具将发布变得更可靠、更自动化,这将提高发布频率。尽管系统间仍然存在依赖关系,较高的发布频率依然可以降低对发布时间表同步的压力。

查看英文原文: Death by Planning in Agile Adoption


感谢曹知渊对本文的审校。

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

2014-09-23 08:491351

评论

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

前端开发之Vue 技术栈编写表单组件

@零度

Vue 前端开发

Linux常用命令速查手册

入门小站

Linux

30个类手写Spring核心原理之Ioc顶层架构设计(2)

Tom弹架构

Java spring 源码

2022世界物联网AIOTE博览会-北京开幕

InfoQ_caf7dbb9aa8a

<<活法>>读后感

Tiger

28天写作

【入门教程直播第三期】如何完成一次高质量的 OceanBase 数据迁移

OceanBase 数据库

数据库 学习 开源 课程 oceanbase

注册了一个新域名(10/28)

赵新龙

28天写作

netty系列之:一个价值上亿的网站速度优化方案

程序那些事

Java Netty nio 程序那些事 12月日更

2022年企业采购多云管理软件就选行云管家!

行云管家

云计算 公有云 混合云 多云 云管理

浅析流媒体CDN与WEB CDN的业务差异

郑州埃文科技

CDN加速 IP网络 在线并发

大数据开发之传输组件Sqoop的功能介绍

@零度

大数据 sqoop

架构实战营-模块六作业

无名

架构实战营 「架构实战营」

Camtasia有哪些基本功能

淋雨

Camtasia 录屏软件

2022北京-大数据-博览会

InfoQ_caf7dbb9aa8a

Kyligence 智能数据服务与管理相关研究

Kyligence

技术专题合集

🏆【Alibaba中间件技术系列】「RocketMQ技术专题」Broker配置介绍及发送流程、异常(XX Busy)问题分析

码界西柚

RocketMQ 消息队列 Apache RocketMQ 12月日更 System Busy/Broker busy

Linux一学就会之文件系统结构-硬链接和软链接

学神来啦

Linux 运维 链接 linux云计算 硬盘

青岛等保测评机构有几家?咨询电话多少?在哪里?

行云管家

网络安全 等保 等级保护 等保测评 等保2.0

MySql优化:一条SQL语句的执行过程是怎样的?

秋水

MySQL性能优化 内容合集 签约计划第二季

2022北京-AI人工智能-主题展

InfoQ_caf7dbb9aa8a

10年经验总结,华为fellow教你如何成为一名优秀的架构师?

华为云开发者联盟

架构设计 架构师 华为fellow 云服务运维

OceanBase 源码解读(七):一文读懂数据库索引实现原理

OceanBase 数据库

开源 oceanbase 技术解析

万吨黄金做后盾!央行数字货币正式拉开序幕

CECBC

数据库大赛50强之「中国人民大学」:培养工程性精英人才,共筑数据库美好未来

OceanBase 数据库

开源 新闻动态 oceanbase OceanBase 数据库大赛

央行数字货币完成闭环测试 亮剑在即

CECBC

2022北京展会专题

InfoQ_caf7dbb9aa8a

极光笔记|基于CMPP协议集成短信测试桩全流程实践分享

极光GPTBots-极光推送

模块6作业

Asha

在自己的服务器上部署hexo博客

为自己带盐

Hexo 28天写作 12月日更

站在你领导的角度考虑问题

张老蔫

28天写作

区块链技术何以成为中国数字化转型最新驱动力?

CECBC

敏捷采纳中的死亡计划_架构_Ben Linders_InfoQ精选文章