东亚银行、岚图汽车带你解锁 AIGC 时代的数字化人才培养各赛道新模式! 了解详情
写点什么

流的本质

  • 2015-07-30
  • 本文字数:3179 字

    阅读完需:约 10 分钟

引言

如何在流程中获得良好的“流(flow)”?近日,我在瑞典斯德哥尔摩参加了一场“精益咖啡”会议。在会上,有个人描述了他们的情况,一个有四名开发人员的团队需要服务于四名不同的产品经理的需求。她说这种情况太分散。这引发了我对于这种我认为非常常见的情况以及精益和敏捷如何帮助解决这个问题的思考。

一个有瓶颈的流程

这是一张通用的流程描述图片。它可以描述任何类型的流程,请求从流程的一端进入,交付物从另一端输出。流程中有多个增加价值的步骤。如果流程没有增加价值,那么就没有存在的理由。所有流程都存在瓶颈 / 约束形式的限制 [1]。

“最窄”的瓶颈决定了流或者整个流程的生产能力。精益的一个关键概念是 _kaizen_,它的意思是应该对流程进行持续改进。当一个瓶颈消除了,另一个就变成了“最窄”的,因此,你需要继续 _kaizen_ 工作,永不结束。流程是一个公司所拥有的最有价值的东西,比其产品和服务(会随时间变来变去)更有价值。希望流程改进可以一直持续下去!

遗憾的是,我从软件开发行业中得到的经验表明,我们更关注我们做什么(产品和服务有一定的不稳定性),然后是如何做(长远来看,流程将最终决定公司的成功)。希望在软件行业中,我们可以改为更关注后者。要获得流,就需要专注。

过度分散是一种常见情况

我认为,这是一种在许多软件公司中都非常常见的情况。注意力分散“各处”——公司提供的多种产品和服务。我们常常做点这个,做点那个,以免错过可能成为“下一个大事件”的东西。由于我们一次做许多事情,所以工作变得太“稀疏”,所有任务间的上下文切换 [2] 使我们产出的实际价值越来越少。由于无法预见事情什么时候可以完成,所以我们不得不提早开始,这进一步增加了在制品数量。在制品是指你同时进行的所有工作。最终,你进入了一个恶性循环。在软件开发中,没有天然的在制品限制(所有的工作都发生在我们的头脑中或者服务器上)。在工厂中,有物理上的限制,比如有限的地面空间。

事实上,缺乏专注更可能使我们不成功。在史蒂夫乔布斯的自传 [3] 中,有一个章节讲述了一次所有苹果高管都参与的异地会议。如果我记得没错,高管们大概有 100 个不同的想法,他们认为那些想法会成为“下一个大事件”,并希望公司支持和资助。通过在几天的会议中比较和讨论各个想法,他们最终将它们归结为三个。现在的好处是,整个公司都支持那三个想法,他们可以非常非常专注。

我们希望使流程更加合理,增加生产能力

下面是我们希望实现的目标:

  • 简化我们的业务,同一时间专注于更少的事情(比如,减少在制品),以此增加生产能力,并缩短提前期
  • Kaizen,持续改进流程,消除瓶颈,获得流
  • 缩小交付增量,更快地、持续不断地为客户带来价值

一个良好的流的例子——接力棒

我是个体育迷,包括田径运动。在世界锦标赛或奥林匹克运动会中,4x100 接力赛通常是一项非常有趣且激动人心的赛事。

当前的世界记录为(男子):

  • 400 米:43.18 秒,由迈克尔·约翰逊于 1999 年 8 月 26 日在塞维利亚创造
  • 4x100 米接力赛:36.84 秒,由牙买加于 2012 年 8 月 11 日在伦敦创造

虽然迈克尔·约翰逊是有史以来最好的运动员之一,但来自牙买加的团队创造的接力赛记录比他的 400 米记录快了 15%。为什么会这样?有两个原因:

  1. 在来自牙买加的团队中,每个人都可以以最大能力跑(400 米虽然不长,但要以跑 100 米的速度来跑是不可能的)
  2. 在接力棒交接时没有速度损失

因此,在这种情况下,1+1+1+1 不等于 4,而是大于 4!我们如何将这种情况转化为一种与我们的环境相匹配的描述?

“一体式(One piece)”连续流

精益的真正目标“Nirvana”是一个一体式连续流。这里的一体式是指在工作流程中增加价值的步骤之间没有任何等待时间或库存。就像接力棒!我们开始时可以从上述哪个原因入手?当然你可以(并且应该)雇用最熟练的人,并让他们尽力而为,但最有意思的是运动员之间的交接棒。事实上,一个国家,即使它的运动员不是最好的,只要他们将交接棒的过程练习到完美的程度,那么也可以在奥林匹克运动会或世界锦标赛中取得好成绩。在决赛中,经常出现那样的情况,其中一个可能夺冠的国家因为交接棒犯规而被取消资格。

在你的组织中,你们会练习在流程的不同步骤之间交接吗?或者你们只关注流程步骤?

我们姑且将我们的“运动员”描述为:分析师、开发人员、QA& 部署人员。分析师和开发人员之间的任务(需求)交接是如何进行的?开发人员在接到需求之前就已经“提起速度”了吗?

为了确保交接过程没有遗漏,分析师同开发人员“一起跑”了吗?我猜,在大多数情况下,任务都在排队(比如在一个跟踪系统中)。

学习接力棒的例子

我们能从这个例子中学到什么呢?首先,我们需要练习交接,使交接过程尽可能顺利。在竞争模式(比如:做日常工作,交付给客户)下,这是不可能做到的。我们需要后退一步,反思我们的行为,然后做出改变,获得持续改善。其次是专注和信息共享(如果你愿意)。所有的“运动员”都完全清楚要做什么以及何时做。他们有所有需要的信息,所以能够俯瞰“整个比赛”。

如何实现流

在软件企业中,如何实现良好的流?对于许多组织而言,思想的转变是必须的。现在,我们往往专注于高资源效率(人们一直很忙)。相对于高资源效率,我们还有高流效率(工作在流程中快速移动)。我们必须做的是,暂时停止关注高资源效率,留有冗余(资源变得可用),那样,流被优先考虑,然后改善流程(kaizen),资源因此更高效。通常,总提前期中只有 1-5% 的时间增加价值,20% 增加价值是个很高的数值了 [4]。

我们希望创建的是覆盖整个价值流、包含所有所需职能 / 能力的团队。这样做,我们就可以确保交接工作尽可能地顺利,因为它们发生在彼此了解而又向着共同目标努力的同事之间。有三件事可以成就一个伟大的团队:自主性掌控性目的性[5]。

例子:如何获得流

下面是一些有关如何在流程中实现流的例子 [6]:

  • 限制在制品——通过限制流程中的在制品,可以确保工作在流程中更快地移动。团队成员应该总是想着“停止开始新工作,开始完成已开始的工作”,而不只是在完成当前工作时开始一项新任务。这可能意味着帮助另一个团队成员进行测试,以完成那项任务。
  • 缩短等待时间——研究为什么任务在等待,并努力缩短等待时间。提出如下问题:
    • 任务为什么排起了队?也许是时候解决已知的瓶颈了。
    • 如何促成所需的决策?召开所有涉众都参与的会议,推动工作继续进行下去。
    • 有什么方法可以临时消除外部依赖吗?也许可以编写一个外部系统的模拟器。这样做可以实现流,但也多出了可能需要后续“偿还”的“技术债务”(当外部系统可用,但并不能 100% 按你在模拟器中的预期运行时)。
  • 跨职能团队—— 正如在前面的小节中所描述的那样,我们希望创建一个团队,它拥有满足整个价值流所需的所有能力,我们将这样的团队称为跨职能团队。团队有“所需的一切”,我们实现了外部依赖的最小化,尽可能地消除了同其它团队交接所导致的延迟和对流的妨害。

小结

在这篇文章中,我已经讨论过,所有的流程都受瓶颈限制。在软件开发公司中,一个常见的场景是同时有太多的工作在进行,导致工作 _ 太分散 _、太稀疏。4x100 米接力赛中的接力棒是流的一个很好的例子。在文章最后,我描述了思想转变,从专注于 _ 资源效率 _ 到专注于 _ 流效率 _,然后给出了一些获得流的例子。

关于作者

Tomas Rybing居住在瑞典斯德哥尔摩,自 1996 年开始从事 IT 工作,最初是名顾问兼程序员。从 2007 年开始,他的关注点转到了团队领导、项目领导、产品管理和开发方法。他有一个妻子和两个孩子。他的主要爱好有运动、音乐和旅游。你可以通过电子邮件博客或者 Twitter 同他联系。

参考资料

[1]约束理论

[2]上下文切换——头号公敌?

[3]《史蒂夫·乔布斯传》,Walter Isaacson,ISBN 978-1451648539

[4]悖论:忙碌的蜜蜂

[5]《 Drive: The Surprising Truth About What Motivates Us

[6]《Kanban in Action》,Marcus Hammarberg & Joakim Sundén

2015-07-30 09:212966
用户头像

发布了 1008 篇内容, 共 373.7 次阅读, 收获喜欢 340 次。

关注

评论

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

Dimitra 和 Ocean Protocol 解读农业数据背后的秘密

股市老人

24小时自助共享洗车有人洗吗

共享电单车厂家

24小时无人自助洗车 自助洗车加盟 车白兔自助洗车 自助洗车店

企业在创建产品帮助中心时需要注意的问题!

Baklib

企业 客户服务 帮助中心

使用 SSH 方式拉取代码

攻城狮杰森

git GitHub SSH gitee 7月月更

华为云Stack南向开放框架,帮助生态伙伴高效入云

华为云开发者联盟

云计算 后端

“智慧工厂”上线,破局传统工厂数字化转型

AIRIOT

低代码 物联网 低代码,项目开发

英特尔发布开源AI参考套件

科技之家

Allure测试报告怎么设置

和牛

测试

鸿湖万联致远开发板正式合入OpenHarmony主干

科技汇

使用Java客户端发送消息和消费的应用

hum建应用专家

云计算

在线SQL转YAML工具

入门小站

工具

5分钟快速梳理你的HTTP体系

程序员海军

前端 HTTP 7月月更

Grafana Labs携手阿里云,将提供国内首款Grafana托管服务

Lily

在创建生成WIFI二维码手机扫码链接

入门小站

工具

Python|类与对象

AXYZdong

Python 7月月更

24小时共享自助洗车店你见过吗

共享电单车厂家

24小时共享自助洗车 自助洗车加盟 自助洗车店

24小时自助共享洗车店要多少钱

共享电单车厂家

自助洗车加盟 车白兔洗车 24小时自助共享洗车 自助共享洗车店

C 语言入门(六)

逝缘~

7月月更

区块链合约安全系列(三):如何认识及预防公链合约中的自毁攻击

BSN研习社

区块链、

Allure测试报告怎么设置

和牛

测试

什么是真正的HTAP?(一)背景篇

StoneDB

MySQL OLAP OLTP HTAP StoneDB

如何在企业工作中应用知识管理,解决企业的问题?

Baklib

知识管理

HDFS、纱线、蜂巢MRS中使用Ranger实现权限管理全栈式实践

华为云开发者联盟

大数据 后端 MRS

牛逼!这份24W字的SpringBoot从入门到实战让你彻底玩明白

了不起的程序猿

Java springboot java程序员

深入理解 Linux 的 TCP 三次握手

C++后台开发

Linux TCP 后端开发 C++后台开发 C++开发

渲染与云渲染:一部电影的制作25%的时间是在“等”

Finovy Cloud

GPU服务器

加盟自助洗车真的不用招人吗

共享电单车厂家

自助洗车加盟 车白兔自助洗车 无人自助洗车

【森城市】GIS数据漫谈(四)— 坐标系统

ThingJS数字孪生引擎

洗车店洗车贵试试自助洗车吧

共享电单车厂家

自助洗车加盟 车白兔自助洗车 什么是自助洗车 自助洗车价格

要想不踩SaaS那些坑,得先了解“SaaS架构”

华为云开发者联盟

云计算 开发 SaaS DTT

linux之拖拽上传文件

入门小站

Linux

流的本质_文化 & 方法_Tomas Rybing_InfoQ精选文章