写点什么

透过 OKR 进行项目过程管理

  • 2020-03-18
  • 本文字数:2650 字

    阅读完需:约 9 分钟

透过 OKR 进行项目过程管理

项目管理是项目的管理者在有限的资源约束下,运用系统的观点、方法和理论,对项目涉及的全部工作进行有效的管理。即从项目的投资决策开始到项目结束的全过程进行计划、组织、指挥、协调、控制和评价, 以实现项目的目标。[1]


在有赞,进行项目前会经过一系列的规划流程,确认资源后即启动项目进行。本文接下来会讨论的是如何透过 OKR 的方式来管理项目研发过程。

一、简介 OKR

OKR(Objectives and Key Results) 全称为目标和关键成果[2]。是由英特尔公司制定,由 John Doerr 引入谷歌后,广为大众所知道。在 OKR 的系统中,首先要制定一个「目标」,这目标要非常明确可衡量的,且必须要能符合 SMART (Specific、Measurable、Achievable、Relevant、Time-bounded) 原则,这样才能用来衡量是否已经实现目标。例如:不能说「想让网站成长」,而是要说「让网站的营收较去年同期成长 10%」或者说「让网站的 APRU 每月成长 15%」,这就是给定一个明确、可量化的目标给大家完成,OKR 的目标不能是模糊、不明确的。


OKR 流程


  1. 明确事项的目标

  2. 对关键性结果进行可量化的定义,并且明确标定「达成目标」与「未达成目标」的措施

  3. 共同努力,达成目标

  4. 根据项目进展进行评估

二、项目管理与 OKR

简单介绍过 OKR 后,再回到项目管理上来看,大部分的项目会有几个关键内容:


  1. 里程碑、完成时间

  2. 工作/任务量

  3. 资源


下图为我司一般通用的项目研发流程


2.1 结合 OKR 与项目过程进行目标拆解

将 OKR 运用在项目管理的过程里,我们会需要订定长期目标、关键指标,这非常简单,因为项目本身就是一个具有范围定义的,所以:(你也可以结合一些敏捷开发方法论来辅助,像是 Scrum[3]、Kanban[4])


  • 目标 (O) - 项目上线,当然,你的项目也可以定义与业务指标相关,这样会让项目更有价值,例如:让 xxx 位使用者能使用等

  • 关键指标 (KR) - 里程碑,当达到一个里程碑时,其实就是完成了一个项目里的关键指标

  • 行动 (AC) - 投入哪些资源、需要哪些团队共同合作的策略、方式等


当长期的目标已经制定了,但项目过程中的每个环节仍旧有许多未知、不明确的问题等待挖掘,且不同的项目内容,问题也各不相同。以 Scrum 方法论举例,在 Scrum 的过程中,提到了一些会议环节,像是 Planning Meeting、Daily Meeting 等,在大部分的会议中,我们会强调同步「昨天做了什么」、「今天要做什么」、「目前遇到了什么问题」。我们可以简单的将 OKR 结合进这些会议里,让会议的价值再提升一些。这时候我们就能切出一些更细致的目标、关键指标与行动方式,此时产出的就会是中期目标、短期目标。



透过一连串的自上而下的拆分、定义目标,会让项目的各个里程碑更明确、更细致。另外,跨团队的协作上,也能根据目标凝聚出当前应该要有的目标意识,某种程度上来说,可以避免不同团队在过程中虽然是奔着大目标在执行,但是在中间环节彼此目标不同所导致的资源等待与浪费。



随着目标的细分、关键指标的不同,粒度愈细的目标对于项目管理者来说愈容易管理,可以想成是在一个大的项目里,有许多不同时间点的小项目。在笔者手里进行的项目中,一般常用来订目标与检验结果的时间,提供给各位读者参考下:


  • 每月第一天,制订当月目标,对于疑问制定行动策略,月底检验关键指标

  • 每周第一天,制订当周目标,对于疑问制定行动策略,每周最后一天检验关键指标

  • 每日上午 10 点制订当日目标,对于疑问制定行动策略,晚上 6 点检验关键指标


看似有了更多的会议,但这些会议通常会在 20 分钟内结束,且价值极高,因为目标就在眼前:


  • 完成的目标明确且可被检验

  • 对于产生出来的问题,所提出的行动策略能大大的提高响应速度

  • 不同团队间的协作聚焦提升

  • 不同的阶段,目标是自上而下被拆分,能在下层的目标 (日目标、半日目标) 上进行检验,进而调整上层目标 (周目标、月目标等),降低因市场变化等因素,导致最后完成的内容与当初的规划的差异过大

2.2 人员的要求

在 OKR 的理论中,会要求每个人都能找到自己的目标,这时候就会需要有人来检视这个目标是否合理、是否太大或太小、或是是否跨职能/业务上的目标有一致,在一个项目里我们通常会有几类负责人可以对目标进行把控。


  • 业务负责人

  • 产品负责人

  • 技术负责人

  • 测试负责人

  • 运维负责人


在不同的目标制定上我们会需要这些负责人能够识别出来各成员、不同职能团队的目标是否在同一目标上。透过这个方式能间接的提升:


  1. 各负责人对于项目与业务目标的对齐、节奏,可以安排更精细节点做出适当的决策,像是是否能在某些功能完成时先上线给使用者使用。

  2. 要求各负责人对于全局观的把控更为强烈,在项目的过程中,其实也是培养未来的新团队小组长/负责人的一种路径。

  3. 原本可能沟通较少、节奏不一致的情况能够降低,风险也能提前被挖掘出来,并在前期就能先进行调研、修正。

2.3 目标检验的方式

在每个 O (目标) 订出时,也会有与之相对应的 KR (关键指标) 和相对应完成 KR 的 AC (关键动作),在实际的操作中这些 KR 能提供明确的目标定义,协助项目成员、负责人在进行检视时,有明确的验证标准。像是:


  • 日目标:完成客户管理模块,KR1:客户管理模块能完全跑通,KR2:单测覆盖率 70%

  • 周目标:完成 CRM 系统,KR1:完成各模块整合且无严重系统流程阻塞,KR2:集成测试覆盖率 70%


这时我们便可在目标检验时,进行演示、操作,看看相对应的指标是否达成,未达成的部分可以透过订定新的 AC 来加速、加强各相关人的行动方式,也可以转换 AC 为下一个目标的行动点或关键指标。透过这样一连串的目标管理过程,使得项目的目标明确且可控,各个与目标的相关人也能知道当前的目标与进度,能适时的提出改进点或行动点,进而降低项目偏离预期的可能。

三、后记

本文虽然只是简单的介绍了下 OKR 与项目管理过程的结合方式,但是其中有许多敏捷方法隐含在其中,像是 Scrum、Kanban、XP 等,也有些传统的项目管理隐含在其中,像是 WBS、里程碑等。不同的项目类型、复杂度,我们可以选择性的加减某些方法、工具的使用方式与节奏。进而找出计划驱动与价值驱动的平衡点,达到保证一有一个「好过程」与「好结果」的双赢目的。


不同的企业、团队可以有更多丰富、深入的玩法。但其最终目的皆是以达成目标、减少资源浪费、可控为出发点。对于目标制定的方式也可以结合「吃掉那只青蛙[5]」的方式来达到更好的效果。


最后附上一些常见的管理方式比较表:



[1]项目管理 - https://wiki.mbalib.com/wiki/项目管理


[2]OKR - https://wiki.mbalib.com/zh-cn/OKR


[3]Scrum - https://wiki.mbalib.com/wiki/Scrum


[4]Kanban - https://wiki.mbalib.com/wiki/Kanban


[5]吃掉那只青蛙 - https://book.douban.com/subject/3371165/


2020-03-18 19:541102

评论

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

GrowingIO 增长平台产研项目管理实践

GrowingIO技术专栏

项目管理 程序员 Jira growingio

Fork原项目新增分支的同步和推送

Skysper

git

读深入ES6记[四]

蛋先生DX

ES6 6月日更

平阴玫瑰×浪潮云洲:见证一朵玫瑰的绽放

云计算

跨域背后的故事(一)-----同源策略

卢卡多多

浏览器 同源策略 6月日更

联想积极参与CSMM标准制定和推广,推进中国软件产业高质量发展

科技热闻

来自 Apache APISIX committer 的经验分享 —— 编程之夏专访

API7.ai 技术团队

后端 技术人 API 网关

一文说尽 Linux 系统的 swap 交换空间

看山

Linux 6月日更

Java字符串池、常量池、intern的爱恨纠葛

叫我阿柒啊

Java 常量池 intern 字符串常量池

技术干货 | 如何实现对动态PPT的云端录制?

ZEGO即构

音视频 WebRTC RTC 即构 动态PPT录制

产品策略闭环是个什么环?

万事ONES

项目管理 研发管理 ONES 产品策略

ONES CTO 冯斌 | 大型团队敏捷项目管理实践与思考

万事ONES

项目管理 研发管理 团队协作 ONES 研发工具

Java 并发编程—— Executors 分析应用

Antway

6月日更

Kubernetes手记(7)- 控制器配置清单

雪雷

k8s 6月日更

你真的很忙么?

escray

学习 极客时间 朱赟的技术管理课 6月日更

关于 JavaScript 是否加分号的问题

KooFE

6月日更

Pandas之:深入理解Pandas的数据结构

程序那些事

Python 数据分析 pandas 程序那些事

应对全场景AI框架部署挑战,MindSpore“四招”让你躺平

华为云开发者联盟

深度学习 AI mindspore 算子 ai框架

【Flutter 专题】107 图解自定义 ACEPageMenu 滑动菜单 (二)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 6月日更

react源码解析11.生命周期调用顺序

全栈潇晨

react.js

技术实践丨体验量子神经网络在自然语言处理中的应用

华为云开发者联盟

自然语言处理 量子 量子神经网络 量子模拟

5000字 | 详解 Java 中的 21 种锁

悟空聊架构

Java 读写锁 锁升级 6月日更

缓存与数据库的双写一致性

leonsh

MySQL redis 缓存

如何解决回归任务数据不均衡的问题?

华为云开发者联盟

深度学习 模型 标签 数据不平衡 DIR

只记得文件类型如何用EasyRecovery实现恢复?

淋雨

数据恢复 EasyRecovery 文件恢复 照片恢复

项目管理100问 | 研发团队如何实现无缝协作

万事ONES

项目管理 ONES Project 研发团队

【21-3】PowerShell 环境

耳东@Erdong

PowerShell Windows Server 6月日更

Python——列表元素的增删改

在即

6月日更

常见词向量模型

Qien Z.

6月日更 词向量 SkipGram 矩阵分解 Glove

【Vue2.x 源码学习】第十篇 - 数组数据变化的观测情况

Brave

源码 vue2 6月日更

WorkPlus Lite 企业级移动平台

BeeWorks

透过 OKR 进行项目过程管理_文化 & 方法_Steven_InfoQ精选文章