CategoryResourceRepost/极客时间专栏/黄勇的OKR实战笔记/OKR管理心经/19 | 敏捷与OKR都是为了“拥抱变化”,两者如何无缝整合?.md
louzefeng d3828a7aee mod
2024-07-11 05:50:32 +00:00

135 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<audio id="audio" title="19 | 敏捷与OKR都是为了“拥抱变化”两者如何无缝整合" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/d8/92/d81b02e804829d0f63ef28772e691f92.mp3"></audio>
你好,我是黄勇。记得在十多年前,我第一次了解到了“敏捷”的概念,当初我只是把敏捷理解为高效,不过后来才发现,**敏捷不只是高效,更多的是适应外界环境的不断变化,并做出灵活调整,**这就是我们常说的“拥抱变化”了。
今天,我想和你从“拥抱变化”开始聊起,看看传统敏捷方法所遇到的一些现实问题,以及如何将敏捷与 OKR 相结合,进而发挥出更大的效用。
## 为何敏捷可以拥抱变化?
在此之前,我先来给你讲讲什么是“敏捷”。其实,敏捷概念提出之初,人们就一直在关注并探讨敏捷的落地问题,首先是《敏捷宣言》的诞生,它正式宣传了“四大价值”这些软件开发方法:
<img src="https://static001.geekbang.org/resource/image/67/26/67048cd0d9bb6a9f4a657fd93e640826.png" alt="">
### 什么是敏捷?
由上述讲述内容可知,敏捷强调个体之间的互动,要求能够发布可以工作的成果,提倡跟客户建立合作共赢,也推崇拥抱变化的思维。
在十多年前来看,敏捷确实是一套先进的方法论,虽然在传统软件开发领域,其实大家更在意的是流程、工具、文档、合同、计划这类不变的东西,但是人们所处的外界环境在不断变化,面对的业务也在不断变化,人们常说“唯一不变的就是变化”。逐渐地,人们开始接受敏捷,并认同它所主导的核心价值。
另外在敏捷宣言提出后业界也出现了一些偏实践的敏捷方法例如XP 极限编程、Scrum 敏捷方法、看板等。而这些敏捷方法中包括了很多有价值的工具,比如,每日站会、结对编程、代码评审、持续集成、测试驱动、计划扑克等。
### Scrum 敏捷方法
尤其是 Scrum 敏捷方法,还提出了团队的角色分工和协同流程。
比如,由 Product Owner产品负责人负责维护 Product Backlog需求池由 Scurm Master项目负责人召开 Sprint Plan Meeting计划会议和 Daily Scrum Meeting站立会议最后全员一起参与 Sprint Retrospective Meeting回顾会议
<img src="https://static001.geekbang.org/resource/image/0a/d1/0ae6fe4700fbba86a57d9aaeba6898d1.png" alt="">
实质上Scrum 敏捷方法的核心思想,就是将不断变化的业务需求放入 Product Backlog Product Owner 从 Product Backlog 中取出优先级较高的需求并将其放入 Sprint 迭代中,随后定期发布一次迭代,每次发布都需向客户交付可以工作的软件。
此外Scrum 的会议也在此过程中扮演了重要的角色,不仅跟踪了进度,也能起到计划和复盘的作用。
可见,每次 Sprint 的迭代都是一个固定的阶段,该阶段包括了一些具体的任务,我们通过完成这些任务去实现阶段性的目标。这样一来,基于“任务驱动”的方式看似敏捷,而在实际应用过程中,往往又会遇到一些现实问题。
## 传统敏捷方法有何问题?
以我们团队为例,曾经使用 Scrum 敏捷方法进行软件开发,不过经历了几次迭代后,我却发现似乎团队伙伴们更关注每次迭代中的任务本身和实现细节,而且技术团队就像一台机器,在周期性地运转,并不断地对外交付客户所需要的成果 —— 代码。
### 发现问题
**技术团队疲于奔命,不过一旦发现自己交付的成果无法体现自身价值时,整个技术团队的士气都会受一定影响。**
比如,技术团队完成了 2 周的迭代,上线了一个新功能,但发现上线后 2 个月内都很少看到用户在使用功能,更别说积累大量数据了。
此时,技术团队就会认为产品团队当初接受了业务团队当初提出的“伪需求”,让技术团队花大量精力去做了一件没有意义的事情,长此以往,技术、产品、业务三个团队之间就容易产生一些分歧甚至争吵。我觉得这样的事情不应该频繁发生,而是应该依靠一种机制来解决。
### 分析问题
既然问题已经出现,那么就不妨仔细分析一下 Scrum 敏捷方法的价值。其实Scrum 敏捷方法划分出许多 Sprint 迭代,这样操作的价值主要体现在以下几个方面:
1. 让 Sprint 迭代周期更短,更能适应外部环境带来的变化或影响,实现“小步快跑”的节奏。
1. 让 Sprint 迭代变得更有规律性,从而提升团队协同工作效率。
1. 让每一次的Sprint 迭代的目标变得更加聚焦。
那么,迭代周期到底需要多短?如何让每次迭代都更有规律、更加聚焦呢?
### 解决问题
不难发现,当我们学习了 OKR 之后很容易就会发现OKR 和敏捷所提倡的方法类似。同样地,实施 OKR 也是要**固定周期、小步快跑、一步一个脚印的**。通过团队使用 OKR可帮助伙伴们围绕团队目标不断努力做出贡献让团队精力更加聚焦。
可见OKR 和敏捷之间存在了大量的相似性,是否能在敏捷中使用 OKR从而让敏捷迭代的目标更加聚焦让团队更有激情地去实现所迭代的目标呢于是我自行设计了一套**基于 OKR 的敏捷方法,**下面我将详细介绍它的用法。
## 如何在敏捷中使用 OKR
敏捷过程中的许多环节都涉及到开一些重要会议比如项目启动时有计划会议项目执行过程中每天都有站立会议项目结束后还有回顾会议。此外敏捷也需要团队内部高度协同。可见OKR 执行过程中也是类似。
### 开季度会
在每个季度开始之前,技术、产品、业务三个团队的负责人会在一起开一次重要的会议,在会上主要讨论的是:本季度业务遇到的用户痛点有哪些;业务上优先级最高的需求是什么;要想解决这些需求,能对公司年度 OKR 的哪些方面有所支持或贡献。
接下来,产品和技术团队也会聊聊自己部门季度 OKR 是什么,以及与公司年度 OKR 对齐的逻辑是什么。
最后,大家将在会上决定本季度即将发布几次迭代,以及每次迭代的目标是什么。
其中,会议组织者往往是产品负责人,他将引导大家一起制定出每次迭代的 OKR以及迭代 OKR 中包含哪些 O以及能支撑 O 的 KR 是什么。
### 经验输出
我的经验是,**一般设置 2 周 1 次迭代,为了目标更加聚焦,每次迭代 OKR 仅包含 1 个 O。**也就是说,每个季度差不多有 6 次迭代,总共将实现 6 个目标。
比如Sprint1 的目标是提高用户注册率Sprint2 的目标是提高付费转化率Sprint3 的目标则是改善程序性能问题而Sprint4 的目标是解决数据安全问题Sprint5 的目标是为了解决高并发问题Sprint6 的目标是为了解决系统稳定性问题。
下面是 Sprint1 迭代的 OKR
>
<p>Sprint1 OKR<br><br>
O提高用户注册率<br><br>
KR<br>
1每日网站平均 UV 为 10000 次<br>
2每周吸引新用户注册 1000 人<br>
3将用户注册率从 0.1% 提升到 1%</p>
在设置迭代所对应的目标时,我们会根据公司年度 OKR 和部门季度 OKR 进行考虑,最终给出一份技术、产品、业务三个团队都认可的迭代 OKR。
### 深度协同
**在每次迭代中,技术团队都要深刻理解产品团队给出的需求文档,并在此基础上拆分为多个任务。**
比如Sprint1 是为了提高用户注册率,我们将重点放在提高潜在用户数和吸引用户注册这两件事情上,而对于提高潜在用户数而言,我们将会在多种不同的渠道上进行引流,包括在网站上改善用户注册入口的用户体验,以及做一些营销工具等小型应用程序。
### 高度融合
此外,项目负责人会将迭代中的任务与迭代 OKR 中的 KR 进行关联,比如,改善用户注册入口的用户体验将对 Sprint1 OKR 的 KR2 有推动作用。
这也就是说,项目成员在完成自己所负责的任务时,就知道自己的工作对本次迭代有何贡献。通过完成任务来驱动 KR 进度更新,从而促进 O 的完成,这种感受会有效加强项目团队的参与感和成就感,进而产生激励效果。
当迭代发布后,我们将基于此 Sprint1 OKR 对 Sprint1 的目标做出评估,技术、产品、业务三个团队的负责人将在一起复盘本次迭代的过程和结果,最终会看到我们投入了多少成本,又将成本投入到了哪些地方,以及所对应的价值产出。
可见OKR 与敏捷具有高度融合性OKR 让敏捷变得更加敏捷。
## 总结
敏捷虽好,但它更加聚焦于软件开发本身,能帮助技术团队加快开发节奏,以小步快跑的方式去拥抱业务的变化。但是,敏捷毕竟也不是完美的,除了技术团队,其他人不会关心我们用了什么开发方法,而更关心的则是用户需求和自身诉求能否得到满足。
此外,当需求池积累得越来越多时,技术团队将坠入“生产代码”的陷阱中,我们生产的是代码,而不是价值。如何让我们生产的代码变得有价值呢?必须确保我们做的事情是在建立共识情况下进行的。
因此,我们需要在敏捷过程中学会管理迭代的目标,使用 OKR 工作法将有效解决这个问题,不仅让技术、产品、业务等团队的目标更加聚焦,还能让技术团队所交付的成果,更容易验证出它的价值。
从我的实践经验来讲,**OKR 可与敏捷过程无缝整合,敏捷关注迭代,迭代关注任务,任务由人去执行,人更关心产出,产出可推进 KR 的完成KR 可推进 O 的完成O 完成了对人产生激励效果**。
今天的核心内容可归纳为以下三点:
1. **任何看似完美的方法,实质上都有自身缺陷,关键在于灵活应用,敏捷和 OKR 都不例外。**
1. **只有结合问题思考解决方案,并努力创新实践,才有可能从根源上解决问题。**
1. **敏捷一般应用于软件开发领域,而 OKR 可应用于任何领域,两者结合,值得尝试。**
祝愿你也能敏捷与 OKR 结合之路上产生更多的收获,沉淀出更多有价值的实践经验。
## 思考时间
你在敏捷开发过程中还遇到过哪些问题?借助 OKR 思维,你会怎样解决这些问题?期待你的留言。
最后,如果这篇文章让你有所收获,请把它分享给你的朋友,我们一起探讨。