系列文章|OKR与敏捷(二):实现全栈敏捷
OKR与敏捷开发的原理有着相似之处,但已经使用敏捷的团队再用OKR感觉会显得多余。这种误解的根源就在于对这两种模式不够了解,运用得当的情况下,OKR和敏捷可以形成强强联合的效果,他们可以创造出以价值为驱动的团队,改变团队的工作方式。
本文是OKR与敏捷系列文章的第二部分。
回顾第一部分请点这里:系列文章|OKR与敏捷(一):瀑布式目标与敏捷的冲突
全栈敏捷
想要实现业务的敏捷性,公司需要确保各层级的敏捷性。以此来替换公司传统组织架构的各个层级:
在全栈敏捷中,组织各个层级的架构转变为:
- 文化以激发团队的自我驱动力为基础。不再控制各团队详细的计划,而是以公司使命为总纲统领全局。领导们只需“明确最终结果和目的,尽可能减少对团队的约束。”
- 战略以数据为驱动,动态迭代并侧重验证假设。
- 目标将遵循敏捷模式,使用OKR。
- 策略运行‘故障检测’实验,形成较短反馈周期。
- 运营则使用敏捷开发模式。
图为Worktile敏捷开发示意图
重构组织债务
技术债是大多数软件工程师都熟知的问题。 技术债的来源主要是团队想走捷径,而技术债将导致代码难以更改且无法扩展。
技术债是要偿还的,并且还有利息。
为了解决技术债问题,团队需要重构代码,在不添加新功能的情况下完善内部架构。
渗透了敏捷交付思维的瀑布模型将导致组织债务,就像技术债那样,组织债务会导致公司变革艰难且需要付出代价。
为了实现全栈敏捷,公司需要填补组织债务,因此需要重构各层级的组织架构。但是说起来容易做起来难,许多公司的尝试均以失败告终。
那么,最好的办法是什么?
从强调“思维模式”到注重“体系架构”
许多敏捷开发圈子的人都认为,解决问题的唯一方法是思维模式的转变。好像只要我们改变了组织的思维模式,所有的问题就可以迎刃而解。
仅关注思维模式的转变是很危险的,因为它不具备行动性。
“‘思维模式’好像已经取代了‘价值’和‘使命’,成为避免老生常谈的最新行动” ,戴夫·斯诺登(Dave Snowden)曾写道。
另一种解决方法是专注于能够改变公司运作方式的实际行动。
斯坦福大学詹姆斯·马奇(James March)教授提醒我们说:“领导力不仅涉及诗和远方(愿景)还要注重体系架构。” 当然“诗和远方(愿景)”确实很重要,但很多公司却忘了体系架构:也就是公司的体系和流程的建设。
改变公司的体系架构流程复杂还有花费很多时间,但成功之后,收益远大于付出。
有一个工具可以帮助改变‘组织的体系架构’并实现业务敏捷性。 这个工具就是OKR(目标与关键结果法) ,这一目标架构已被谷歌和Spotify(流媒体音乐平台)等公司采用。
图为Worktile OKR示意图
OKR与传统计划方法的最大区别是什么呢? OKR需要定期设定及评估——通常每季度一次。此外,与自上而下的单向目标设定流程不同的是,OKR是双向的。
这就意味着团队可以根据公司的总体目标来设定自己的OKR,并在与上级沟通和探讨后使用。
这种管理模式营造了一个鼓励团队参与目标设定的大环境。他们对自己参与设定的目标具有更强的责任感,并且还会每周一次进行跟踪和复盘。
如运用得当,OKR能够帮助公司实现全栈敏捷。
创建价值驱动团队
实现全栈敏捷的关键就在于要专注于价值。
问题在于,整个公司的架构以完成上级规定的任务为重点。而敏捷则以交付为重点,二者结合将导致公司沦为以交付产品功能为重点的功能工厂。
这种对交付的痴迷由来已久。从软件开发行业将可运行的软件作为衡量进度的标准开始一直持续到现在。
正如杰夫·萨瑟兰(Jeff Sutherland)的书名所说,Scrum是“一门能够让软件开发事半功倍的艺术”。因此,看板上实际少了一栏,即“可行性”,如下面来自约翰·卡特(John Cutler)的图所示:
只有在增加价值的情况下,“完成”才具有意义。
事实上,未改进指标的功能可能会产生负面效果:新提交的代码可能存在缺陷,需要维护,并且会导致产品变得更加复杂。
尽管《敏捷宣言》存在误导性,但其中一位作者马丁·福勒也对成果进行了论述:
“解决瀑布模型问题的关键是要认识到,敏捷主义者更重视成果而非功能。功能列表是非常有价值的工具,但并不意味着最终目标。真正重要的是总体的成果,因为我认为这对客户来说才是有价值的。”
你为什么要做这个?
关于团队激励,亨里克·克里伯格(Henrik Kniberg)展示过一张很棒的PPT:
第一个团队代表了功能工厂。 这种模式下团队无法自主确定应该做什么,团队之所以从事某种工作是因为有人要求他们这么做。这种模式遵循泰勒管理模式中的计划和执行相分离的原则,这既会让团队丧失动力,也无法激励创新。
而第二个团队则走了另外一个极端,即仅凭“直觉”行事。
而第三个则是价值驱动团队。 这样的团队会专注于价值的交付,并且知道如何才能发挥最大作用。他们有清晰的目标,并且能够让自己的工作与公司战略保持一致。
TBC......
原文作者|Felipe Castro
内容整理|Worktile文章来源:Worktile官方博客
文章转载请注明出处。
系列文章|OKR与敏捷(二):实现全栈敏捷的更多相关文章
- Android异步处理系列文章四篇之二 使用AsyncTask异步更新UI界面
Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面Android异步处理二:使用AsyncTask异步更新UI界面Android异步处理三:Handler+Loope ...
- 系列文章|OKR与敏捷(三):赋予团队自主权
OKR与敏捷开发的原理有着相似之处,但已经使用敏捷的团队再用OKR感觉会显得多余.这种误解的根源就在于对这两种模式不够了解,运用得当的情况下,OKR和敏捷可以形成强强联合的效果,他们可以创造出以价值为 ...
- “全栈2019”Java多线程第三十六章:如何设置线程的等待截止时间
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 下一章 "全栈2019"J ...
- NodeJS全栈开发利器:CabloyJS究竟是什么
CabloyJS CabloyJS是一款顶级NodeJS全栈业务开发框架, 基于KoaJS + EggJS + VueJS + Framework7 文档 官网 && 文档 演示 PC ...
- 【强烈强烈推荐】《ORACLE PL/SQL编程详解》全原创(共八篇)--系列文章导航
原文:[强烈强烈推荐]<ORACLE PL/SQL编程详解>全原创(共八篇)--系列文章导航 <ORACLE PL/SQL编程详解> 系列文章目录导航 ——通过知识共享树立个人 ...
- MySQL优化篇系列文章(二)——MyISAM表锁与InnoDB锁问题
我可以和面试官多聊几句吗?只是想... MySQL优化篇系列文章(基于MySQL8.0测试验证),上部分:优化SQL语句.数据库对象,MyISAM表锁和InnoDB锁问题. 面试官:咦,小伙子,又来啦 ...
- 一步步实现windows版ijkplayer系列文章之二——Ijkplayer播放器源码分析之音视频输出——视频篇
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
- 微信JS分享功能--微信JS系列文章(二)
概述 在上一篇文章微信JS初始化-- 微信JS系列文章(一)中已经介绍了微信JS初始化的相关工作,接下来本文继续就微信JS的分享功能进行描述,供大家参考. 代码 $(document).ready(f ...
- openstack系列文章(二)
学习openstack的系列文章-keystone openstack 架构 Keystone 基本概念 Keystone 工作流程 Keystone Troubleshooting 1. open ...
随机推荐
- Git打标签与版本控制规范
前言 本文适用于使用Git做VCS(版本控制系统)的场景. 用过Git的程序猿,都喜欢其分布式架构带来的commit快感.不用像使用SVN这种集中式版本管理系统,每一次提交代码,都要为代码冲突捏一把冷 ...
- noip前集训
10.18 关网了,2333 上午考试,130 rank16 一直在刚T2的割点,却直接弃了一道第一眼看上去不可做但实际并没那么难想的小模拟 但是T2没搞出来是不是也要反思一下,先是割点板子忘了,之后 ...
- BZOJ_3993_[SDOI2015]星际战争_二分+网络流
BZOJ_3993_[SDOI2015]星际战争_二分+网络流 Description 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进 ...
- jdk源码剖析一:OpenJDK-Hotspot源码包目录结构
开启正文之前,先说一下源码剖析这一系列,就以“死磕到底”的精神贯彻始终,JDK-->JRE-->JVM(以openJDK代替) 最近想看看JDK8源码,但JDK中JVM(安装在本地C:\P ...
- Python + Appium 【已解决】driver(session)在多个class之间复用,执行完一个类的用例,再次执行下个类的用例时不需要初始化
实现效果:打开App进行自动化测试,只需打开APP一次,按先后顺序执行n个py文件中的相应操作,实现自动化测试. 示例:如截图示例,一个App,根据此APP内不同的模块,写成了不同的py文件, 预期结 ...
- Mui Webview下来刷新上拉加载实现
有些事情经历过之后才会发现,原来再次之前我是如此的啥,因为是第一次做,毫无头绪,有时会想假如有个一demo就好了,那么就不会花费这么多的无用功了.今天使用mui 的webview实现了一个H5页面的上 ...
- 基于 ReactJS 开发简单的可视化业务编辑器 01
线上可以看的,跟github上的代码不一样的:https://whensea.com/wfd/ 程序中经常有一些业务需要定制化,我定制化这些业务的方式主要是基于工作流.配置等方式.由于个人水平限制并不 ...
- CSS 圣杯布局 / 双飞翼布局的实现
工作的越久,有些基础知识我们可能就逐渐淡忘了,今天我们来回顾一下css的圣杯布局和双飞翼布局, 这两个名词你可能不熟, 那三栏布局你肯定就非常熟悉了, 就是两边定宽, 中间自适应 的 布局 1 , 圣 ...
- Spark2.4.0伪分布式环境搭建
一.搭建环境的前提条件 环境:ubuntu-16.04 hadoop-2.6.0 jdk1.8.0_161. spark-2.4.0-bin-hadoop2.6.这里的环境不一定需要和我一样,基本版 ...
- 【坑】解决CentOS 7.1版本以上安装好zabbix 3.4 无法重启zabbix-server的问题
1. 问题所在 报错信息:zabbix_server[]: segfault at ip 00007f78842b4bd0 sp 00007fff1995a818 error ] 2. 产生原因 Ce ...