OKR与敏捷开发的原理有着相似之处,但已经使用敏捷的团队再用OKR感觉会显得多余。这种误解的根源就在于对这两种模式不够了解,运用得当的情况下,OKR和敏捷可以形成强强联合的效果,他们可以创造出以价值为驱动的团队,改变团队的工作方式。

本文最后一部分分析了OKR的正确使用方法,以及如何赋予团队更多自主权。

回顾第一部分请点这里:系列文章|OKR与敏捷(一):瀑布式目标与敏捷的冲突
回顾第二部分请点这里:系列文章|OKR与敏捷(二):实现全栈敏捷

使用OKR的正确方式

与其他工具一样,OKR也可能会被滥用并沦为待办事项列表。但如果你想要专注于价值实现,那么你的目标就必须要体现这一点。因此你需要设定价值导向的关键结果:

价值就像讲笑话:你没法告诉对方它到底好不好。

价值导向的OKR不仅仅衡量结果。你还需要明白对你的客户和公司来说,什么样的结果才是有价值的。

下面的例子展示了两种关键结果的差别:

在敏捷中使用行为导向的关键结果会产生摩擦。既然敏捷团队已经有了明确的路线图,为什么他们还需要OKR呢?我遇到的所有尝试将OKR与敏捷相结合的团队,都在专注于开发活动本身。

使用价值导向的OKR能够带来变革,它可以成为连接敏捷和精益的桥梁,弥补产品和开发之间的空白。

改变侧重点

尽管敏捷使用的命名法专注于交付。我们也需要抛开一些概念,比如“完工、燃尽图、速度”。

与之相反的,我们应该专注于价值。我们不需要验收标准,需要利用OKR来定义成功的标准。

从意见转变为数据

敏捷并不是独立的数据驱动,而是HiPPO(HighestPaid Person’s Opinion)模式,即听从薪酬最高者的意见。

《谷歌的经营之道》一书生动形象地描述了这个模式:

这种敏捷模式下隐藏着一个巨大缺陷。即公司的利益相关者告诉团队应该去做什么工作,并对工作进行审查。

罗恩·杰弗里斯(Ron Jeffries)描述了一场与利益相关者的虚拟对话:

“每周你可以告诉我们你最看重什么,然后我们会告诉你哪些要求是我们可以实现的。一周之后,你就可以拿到我们的成果。如果你乐意,你就可以交付出去。”

按照泰勒管理模式,由利益相关者来决定团队应该做什么,以及交付的成果是否可以出售。这种做法默认利益相关者知道什么具有价值,且他们的意见可以作为实际价值的衡量指标。

但数据表明实际上正相反。例如,罗恩·卡哈维发表了一篇论文,对微软的一系列创意和结果进行了分析。结果,仅有 1/3的创意对期望指标在统计层面产生了积极效应。

如果敏捷开发摒弃了数据统计和成果衡量,转而选择HiPPO(听从薪酬最高者的意见)来决定应该开发什么功能,那么其误差将超过66%。

很多公司还在使用“客户意见至上”的管理模式。这种模式中,个别人的意见代表了终端客户。在过去这个做法尚且行得通,因为在数据采集上很困难。但到了数字化的现代社会,这已经成为了瀑布模型的又一个遗留问题。

用实验取代HiPPO模式

事实上,开发团队不需要个别人来代表客户的意见。因为团队可以自己采访客户以判断开发行为是否得当。OKR可以取代HiPPO,通过实验让团队学习和复盘。

OKR可以帮助团队采用假设驱动开发模式,巴里•欧莱礼将其描述为:

我们认为……
可得到……
当……我们有信心继续进行……

在这个模型中,复盘不再是为了展示可交付成果。团队在复盘中通过讨论主题和主要假设来不断完善交付成果。

赋予团队自主权

命令与控制依然存在。

命令与控制心理依然贯穿敏捷交付的全过程。利益相关者有权决定开发什么功能。因此,团队的工作模式依然是“因为这是山姆说要做的”,直到“山姆觉得不错”之后才算完工。

公司发展需要团队全身心的奉献,所以他们需要理解公司的业务问题并能够就构建内容发表意见。

马蒂·卡根曾写道:“如果你只让你的工程师写代码,那你只得到他们一半的价值。”

为了赋予团队自主权,你要给予他们自主决定如何实现预期成果的自由。因此团队的目标也需要改变:

玛丽·帕彭迪克(Mary Poppendieck)曾写道:

“或许敏捷开发实践最大的缺陷是哪个来团队决定做什么的方式。在很长时间以来,人们认为团队本身并没有责任来回答应该做什么这个问题。”

团队不需要执行由利益相关者提出的瀑布式计划,他们可以利用双轨敏捷和设计冲刺等方法来发现有价值的产品。

END

原文作者|Felipe Castro
内容编译|Worktile

文章来源:Worktile官方博客

文章转载请注明出处。

系列文章|OKR与敏捷(三):赋予团队自主权的更多相关文章

  1. 系列文章|OKR与敏捷(二):实现全栈敏捷

    OKR与敏捷开发的原理有着相似之处,但已经使用敏捷的团队再用OKR感觉会显得多余.这种误解的根源就在于对这两种模式不够了解,运用得当的情况下,OKR和敏捷可以形成强强联合的效果,他们可以创造出以价值为 ...

  2. 系列文章|OKR与敏捷(一):瀑布式目标与敏捷的冲突

    OKR与敏捷开发的原理有着相似之处,但已经使用敏捷的团队再用OKR感觉会显得多余.这种误解的根源就在于对这两种模式不够了解,运用得当的情况下,OKR和敏捷可以形成强强联合的效果,他们可以创造出以价值为 ...

  3. JVM系列文章(三):Class文件内容解析

    作为一个程序猿,只知道怎么用是远远不够的.起码,你须要知道为什么能够这么用.即我们所谓底层的东西. 那究竟什么是底层呢?我认为这不能一概而论.以我如今的知识水平而言:对于Web开发人员,TCP/IP. ...

  4. 彻底搞懂 etcd 系列文章(三):etcd 集群运维部署

    0 专辑概述 etcd 是云原生架构中重要的基础组件,由 CNCF 孵化托管.etcd 在微服务和 Kubernates 集群中不仅可以作为服务注册与发现,还可以作为 key-value 存储的中间件 ...

  5. 微信JS图片上传与下载功能--微信JS系列文章(三)

    概述 在前面的文章微信JS初始化-- 微信JS系列文章(一)中已经介绍了微信JS初始化的相关工作,接下来本文继续就微信JS的图片上传功能进行描述,供大家参考. 图片上传 $(function(){ v ...

  6. openstack系列文章(三)

    学习openstack的系列文章-glance glance 基本概念 glance 架构 openstack CLI Troubleshooting 1. glance 基本概念 在 opensta ...

  7. Office 365 开发概览系列文章和教程

    Office 365 开发概览系列文章和教程 原文于2017年2月26日首发于LinkedIn,请参考链接 引子 之前我在Office 365技术社群(O萌)中跟大家提到,3月初适逢Visual St ...

  8. 开篇:软件项目的整个流程 - IT软件人员学习系列文章

    这段时间闲来无事,就在总结以前的项目经验,然后写成博客的形式以进行记录.本文就对<IT软件人员学习系列文章>做个开篇吧. 对于IT软件的开发来说,无外乎B/S.C/S和Android.iO ...

  9. IT软件人员的技术学习内容(写给技术迷茫中的你) - 项目管理系列文章

    前面笔者曾经写过一篇关于IT从业者的职业道路文章(见笔者文:IT从业者的职业道路(从程序员到部门经理) - 项目管理系列文章).然后有读者提建议说写写技术方面的路线,所以就有了本文.本文从初学者到思想 ...

随机推荐

  1. Guava新增集合类型-Bimap

    Guava新增集合类型-Bimap BiMap提供了一种新的集合类型,它提供了key和value的双向关联的数据结构. 通常情况下,我们在使用Java的Map时,往往是通过key来查找value的,但 ...

  2. jquery简易版xwPop.js弹出消息对话框插件

    xwPop.js弹出消息对话框插件是一款含有多种情景模式的原生模态消息对话框代码,可用于替代浏览器默认的alert弹出对话框,它提供各种参数和方法,功能非常强大.目前已经在项目中有应用到xwpop开发 ...

  3. Android 7.0 存储系统—Vold与MountService分析(一)(转 Android 9.0 分析)

    Android的存储系统(一) 看了很长时间Vold存储模块的相关知识,也死扣了一段时间的Android源码,发现Android存储系统所涉及的函数调用,以及Kernel与上层之间的Socket传输真 ...

  4. 【STM32H7教程】第6章 STM32H7工程模板建立(IAR8)

    完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第6章   STM32H7工程模板建立(IAR8) 本章 ...

  5. 4K视频在线看,网速跟不上怎么办?

    灿烂的阳光,温柔的风,二狗子一打开窗,觉得春天到了. “天气这么好,宅家玩电脑.”二狗子说着,点开了爱奇怪 App,最近一期的版本更新提到了支持 4K 视频播放,这是二狗子等了好久的功能. “今天我就 ...

  6. Netty源码—五、内存分配概述

    Netty中的内存管理应该是借鉴了FreeBSD内存管理的思想--jemalloc.Netty内存分配过程中总体遵循以下规则: 优先从缓存中分配 如果缓存中没有的话,从内存池看看有没有剩余可用的 如果 ...

  7. 简述Java中的final关键字

    final关键字可用于修饰类.方法和变量,final修饰的类不能被继承:final修饰的方法不可被重写:final修饰的变量不可被改变. 1. final类 final修饰的类不能被继承意思是fina ...

  8. Hibernate工具类_抽取重复核心代码

    问题:在Hibernate中每次执行一次操作总是需要加载核心配置文件,获取连接池等等都是重复动作,所以抽取出来 解决: package com.xxx.utils; /** *Hibernate的工具 ...

  9. Java并发——volatile关键字

    什么是内存可见性? 这里就要提一下JMM(Java内存模型).当线程在运行的时候,并不是直接直接修改电脑主内存中的变量的值.线程间通讯也不是直接把一个线程的变量的值传给另一个线程,让其刷新变量.下面是 ...

  10. Eclipse4JavaEE安装SpringBoot

    第一步:下载SpringBoot SpringBoot官网下载链接 第二步:在Eclipse里进行安装 打开Eclipse,菜单栏Help ->Install New Software,进入下图 ...