系列文章|OKR与敏捷(一):瀑布式目标与敏捷的冲突
OKR与敏捷开发的原理有着相似之处,但已经使用敏捷的团队再用OKR感觉会显得多余。这种误解的根源就在于对这两种模式不够了解,运用得当的情况下,OKR和敏捷可以形成强强联合的效果,他们可以创造出以价值为驱动的团队,改变团队的工作方式。
本文第一部分介绍了瀑布式目标与敏捷之间的冲突。
功能工厂
敏捷的诞生是为了确保软件的交付,可以替代瀑布式开发来管理软件项目。敏捷模式注重的是可交付成果(开发需求或软件功能)而非项目价值(业务成果)的管理。
事实上,敏捷中并没有单独跟踪结果的规范。
《敏捷宣言》本身具有一定的误导性,因为它告诉人们要衡量可交付成果,它的第七条原则规定:“可工作的软件是进度的首要度量标准”。
该原则默认所有可使用的软件都有价值,这显然是错误的。因为有些项目能够产生价值,有些不能;用户可能会采用软件的某些功能但却会摒弃其他的功能。
大多数公司陷入了“功能工厂”模式,其团队压根不关注交付产品的价值。正如约翰·卡特勒(John Cutler)所描述的那样,开发人员就像流水线的工人那样“坐在工厂里,批量制造各种功能,然后传送出去”。
马蒂·卡根(Marty Cagan)强调过这种模式可能导致的可怕后果:
“开发团队忙着具化细节、写代码和测试。他们对更大背景知之甚少,甚至不太相信自己的产品真的能成为解决方案。他们不在乎这些功能是否真正解决了潜在的业务问题。因为他们衡量进度的标准是输出而非成果。”
距《敏捷宣言》发表已经过去15年了,大多数公司使用敏捷只是为了交付,而在缩放框架上几乎没有什么帮助。因为他们选择这条阻力最小的路并且专注于改善软件开发过程。也正因此,几乎很少有公司能够真正实现公司业务的敏捷性。
敏捷交付
我喜欢把公司看成是一个包含了五个层级的架构,即文化、战略、策略、运营和目标。
公司目标反映公司的工作和运营方式,因此它也会渗透到其他四个层级。
传统公司的组织架构图示如下:
在传统的公司架构中,各个层级的特点分别是:
- 文化是自上而下的,是指挥和控制。
- 战略是静态的年度计划。
- 目标遵循了瀑布模型。
- 策略通过豪赌模式和长反馈周期产生作用。
- 运营则使用瀑布式开发和项目管理模式。
通常,公司采用的敏捷,是指敏捷交付功能。仅仅只是用来替换公司最底层的架构:
敏捷交付仅在运营层面实践精益和敏捷性。当团队进行分散的实验时,敏捷取代了瀑布式开发,这也就导致团队无法形成实验文化。尽管各处都开展了一些A/B测试,但许多高风险假设未能得到验证。
鉴于敏捷交付不涉及其他层级的架构,因此其优势变得越来越小, 瀑布模型的缺陷与公司敏捷性的实现之间存在直接冲突。
瀑布式目标
在设定目标时,瀑布模型的思维模式仍然十分常见。公司通常会以年度为单位,自上而下地规定一系列静态的目标,而这与公司保持敏捷性之间存在直接冲突。
瀑布式目标遵循了静态的规划模式。通常由一群高层管理人员集体制定公司的年度目标,然后逐级向下传达,并最终形成公司该年度的固定计划。
没什么能比瀑布更形象地描述这种自上而下逐级传递目标的设定模式了!
这种静态的模式包括下列几种假设:
- 可以提前明确整个计划的全部步骤;
- 绝大多数计划都是正确的;
- 市场状况基本保持不变;
- 变动会很小。公司会在年中审核的时候处理这些细微变化,并在之后制定一个更新后的详细静态计划。
以项目为基础的瀑布式目标
更糟糕的是,瀑布式目标不关注价值,因为它们反复围绕着管理层批准的一系列项目而设定。
弗雷德里克•泰勒(FrederickTaylor)曾写道: “每个员工的工作都应该至少提前一天由管理层详细规定出来。” 如果他得知当今的公司依然遵循着他的教导,想必会异常欣慰。
在泰勒的敏捷管理理论中,团队存在的意义就是为了完成项目的交付。管理人员将严格按照流水线工厂的模式来规划工作。这种管理模式将导致公司反应迟缓、难以适应变化,同时还会增加风险和浪费。
在敏捷交付中,大多数的缩放框架都是能够取得一定成效的,因为他们着重通过敏捷的思维方法来推动瀑布式计划的实现。
由静变动的计划
信奉静态计划模型的人就像是苏联时期的中央领导人,他们制定5年计划方案,认定自己可以预测未来。
相较之下,动态计划则拥抱变化。他们在一个较小的计划周期内运转。动态计划假设市场条件和计划本身都会发生变化。更重要的是,我们对问题的理解将伴随着了解的深入而变化,而计划也会做出相应调整。
正如肯特·贝克(KentBeck)所写的: “一成不变地按照既定计划行事的唯一方法就是拒绝学习、固步自封。”
你希望团队可以在更短的周期内更新迭代并检验假设,那你怎么能效仿苏联通过瀑布式流程来设定一系列的静态目标呢?
这样肯定行不通,尽管我们在交付层面实现了敏捷,但在其他方面依然使用瀑布模型。
我们需要改变。
TBC......
原文作者|Felipe Castro
内容整理|Worktile文章来源:Worktile官方博客
文章转载请注明出处。
系列文章|OKR与敏捷(一):瀑布式目标与敏捷的冲突的更多相关文章
- 系列文章|OKR与敏捷(三):赋予团队自主权
OKR与敏捷开发的原理有着相似之处,但已经使用敏捷的团队再用OKR感觉会显得多余.这种误解的根源就在于对这两种模式不够了解,运用得当的情况下,OKR和敏捷可以形成强强联合的效果,他们可以创造出以价值为 ...
- 系列文章|OKR与敏捷(二):实现全栈敏捷
OKR与敏捷开发的原理有着相似之处,但已经使用敏捷的团队再用OKR感觉会显得多余.这种误解的根源就在于对这两种模式不够了解,运用得当的情况下,OKR和敏捷可以形成强强联合的效果,他们可以创造出以价值为 ...
- Geotrellis系列文章链接
本文存放了我在博客园中撰写的Geotrellis系列文章链接,方便查阅! 一.geotrellis使用初探 二.geotrellis使用(二)geotrellis-chatta-demo以及geotr ...
- IT人经济思维之投资 - 创业与投资系列文章
前面笔者写过一个文(IT从业者的职业规划),主要通过笔者的从业道路的经验,介绍了IT从业者的职业选择道路问题,主要从技术.业务和管理三大方面进行了描述.然后,通过文(IT从业者的职业道路(从程序员到部 ...
- 重新想象 Windows 8.1 Store Apps 系列文章索引
[源码下载] [重新想象 Windows 8 Store Apps 系列文章] 重新想象 Windows 8.1 Store Apps 系列文章索引 作者:webabcd 1.重新想象 Windows ...
- JVM系列文章(四):类载入机制
作为一个程序猿,只知道怎么用是远远不够的. 起码,你须要知道为什么能够这么用.即我们所谓底层的东西. 那究竟什么是底层呢?我认为这不能一概而论.以我如今的知识水平而言:对于Web开发人员,TCP/IP ...
- Office 365 开发概览系列文章和教程
Office 365 开发概览系列文章和教程 原文于2017年2月26日首发于LinkedIn,请参考链接 引子 之前我在Office 365技术社群(O萌)中跟大家提到,3月初适逢Visual St ...
- MyBatis 源码分析系列文章导读
1.本文速览 本篇文章是我为接下来的 MyBatis 源码分析系列文章写的一个导读文章.本篇文章从 MyBatis 是什么(what),为什么要使用(why),以及如何使用(how)等三个角度进行了说 ...
- 一步步实现windows版ijkplayer系列文章之四——windows下编译ijkplyer版ffmpeg
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
随机推荐
- JAVA基础复习与总结<五> String类_File类_Date类
String类 .Java字符串就是Unicode字符序列,例如串“Java”就是4个Unicoe字符组成. .Java没有内置的字符串类型,而是在标准java类库中提供了一个预定义的类String, ...
- S0.4 二值图与阈值化
目录 二值图的定义 二值图的应用 阈值化 二值化/阈值化方法 1,无脑简单判断 opencv3函数threshold()实现 2,Otsu算法(大律法或最大类间方差法) OpenCV3 纯代码实现大津 ...
- LOJ 6019
挺没意思的题 全都读进去算一个每个阶乘的系数 然后算一遍每个数的系数 最后在质数处算一下答案 #include<bits/stdc++.h> using namespace std; #d ...
- FTP连接超时
今天程序在连接FTP服务器,突然无法连接,用Windows 的 Explorer能正常连接,但用 WebRequest.WebResponse连接时,总是抛出连接超时异常. 后查找相关资料,原因是:程 ...
- MicroSoft CryptoAPI data/file encrypt/decrypt
linux 用第三方库 Crypto++, 还未实战. CryptoAPI使用两种密钥:会话密钥与公共/私人密钥对.会话密钥使用相同的加密和解密密钥,这种算法较快,但必须保证密钥的安全传递.公共/私人 ...
- insert
(1)INSERT INTO SELECT语句 语句形式为: Insert into Table2(field1,field2,,field3,...) select key1,key2,,key3, ...
- java points[复习]
1 - & 与 && 的区别: &:不管左边是true还是false,右端都会进行运算: &&:当左端为false时,右端不再进行运算: 即在与运算时, ...
- 2018申请淘宝客AppKey
1.www.alimama.com 申请账号进入后2.进入我的联盟,按下面的步骤 完成以后等待网站审核. 3.审核完成后 按以下的图,申请进入开放平台或得appkey 4.最后就可以进入开放平台申请看 ...
- Python-字典与json的转换
#json是字符串,只不过长得像字典 import json user_info='''{"niuhy":1234,"shanbl":44566}''' #js ...
- 【javascript】函数中的this的四种绑定形式 — 大家准备好瓜子,我要讲故事啦~~
javascript中的this和函数息息相关,所以今天,我就给大家详细地讲述一番:javascript函数中的this 一谈到this,很多让人晕晕乎乎的抽象概念就跑出来了,这里我就只说最 ...