银行组织的敏捷落地

年初在一篇文章《银行IT的敏捷转身》中谈了银行IT普遍面临的敏捷转型问题,主要聚焦于这个数字化时代,银行IT从过去的成本中心,走向科技能力中心的困惑和挑战,文中我指出了敏捷转型绝对不是IT一个部门的事情。可喜的是在这半年的时间里,我们看到越来越多的银行从数字化战略的角度开始整体规划敏捷转型,把敏捷作为迈向数字化的一个坚实基础来抓。

在经历了几家银行大刀阔斧的改革后,我希望能够把敏捷落地这个话题放到银行整个组织下来跟大家分享几点心得,借机提醒正在高歌猛进的组织不要忘了初心,也为正在规划转型的组织提供一些前车之鉴。 利用敏捷宣言的模式,我总结了四个方面:

  • 敏捷文化 over 敏捷开发
  • 实验探索 over 创新项目
  • 平台思维 over 微服务架构
  • 员工体验 over 开放办公

我们应该都意识到了排比句的右手边是这个数字化时代敏捷落地的一些核心领域,但我希望通过这样的对比,强调组织级敏捷落地中左手边领域的重要性。在下文中我将逐一展开这四个对比,帮助大家理解转型过程中的一些核心关注点。(点击此处或扫描二维码观看视频回放)

敏捷文化 over 敏捷开发

金融是一个强监管和强合规的行业,在中美贸易战和P2P暴雷遗患未除的当下,监管肯定是不会松绑的。某种意义上这是合理的,有多少客户能够接受自己在四大行买的现金理财产品出现了本金亏损(即使购买时风险已经告知)?如果这种情况出现在我父母身上,他们有可能就报警了。

这样的行业管理模式下必然驱动出统一、标准化的服务(产品)开发过程及方法,以及随之配套的企业文化。在面对不确定性市场时,这样的方法和文化的弊端被放大了,没有办法快速响应变化,更无法激发创新。这是大多数银行开始走向敏捷的原罪。

经过最近20年的演进,敏捷(软件)开发实际上已经有了一套比较体系化的方法。Scrum、Kanban及XP的实践都得到了广泛应用,在《ThoughtWorks的敏捷开发》一文中我也总结了这10多年来ThoughtWorks全球形成的敏捷开发方法的体系构建及关键实践。

那么银行作为一个组织的敏捷转型,是否就是要把过去的开发过程和方法,转变成上面提到的敏捷方法,并形成自己组织内部的统一实践呢?答案自然不是。我们要解决的原始问题是如何建立对市场变化的快速响应,并能够激发组织内部的创新。我们的目标并不是要用一套大一统的“敏捷方法”来取代过去的传统方法,我们需要的是组织文化上的敏捷性,能够持续学习和改善。

就中国的大多数银行来讲,这意味着可能有多种软件开发过程和方法,甚至于在一些传统核心应用里仍然使用瀑布过程作为流程主干。当然这里并不是预定解决方案就是“双模”,从银行自身业务发展出发,谁说不可以“三模”、“四模”呢?

经过四年多的实践,某大型国有银行软件开发中心就形成了三种敏捷开发模式(开发敏捷、全流程敏捷和端到端敏捷),为中后台团队、网络金融和互联网创新分别提供了实践的牵引。如果从教条主义出发这是值得批判的,为啥不全都是端到端敏捷?但从现实的行业和企业生存环境出发,这样的敏捷落地是务实的。四年时间里我见证了该组织员工敏捷认知上的持续进步,在强监管的约束下,通过多种模式创造了时代需要的组织灵活性。从这一点出发,这样的做法和大刀阔斧的组织变革同样值得尊敬。

我们需要拥抱变化和持续改进的敏捷文化,而不是所有产品整齐划一的“敏捷”开发模式。

实验探索 over 创新项目

由于FinTech的冲击,各大银行纷纷启动了创新机制,有的甚至成立了单独的创新中心。科技创新在银行业成了最为重要的企业战略话题,各家银行的网点里目前都已经摆满了全自助的柜员服务机,有的大堂里已经开始有服务机器人在主动迎宾。

创新同样是敏捷落地过程中一个不可避免的问题,甚至在不少银行成为发起敏捷转型的原动力。在一家致力于金融科技引领的大型股份制银行的转型过程中,敏捷开发模式成为了FinTech创新项目的必选项。但除了更“快”,大家似乎都没有找到创新和敏捷的必然联系,只是因为希望创新产品快速上市,所以认为必然是敏捷的。

在这家股份制银行的一次FinTech创新项目提案评审会议上,CIO的一个问题触动了我的思考。在各个创新团队争相汇报自己的创新产品取得的成果后,CIO停顿了几秒钟,说到:“我希望大家以后不要每次都出来讲自己的创新如何成功,取得了如何的成绩。我希望大家都讲讲自己在创新的过程中遇到了什么问题,通过用户实验验证了哪些错误的假设,并谈谈怎么改进的。”

是啊,既然是创新,那就是在实验,而实验失败应该是十之八九的事情吧。如果永远都是成功,可能如这位CIO接下来点评的:“大家都没有创新,只是在延续已有业务而已。”而接受实验失败,并把失败作为一次重要的学习机会,在目前银行业里仍然十分少见。没有这样的试错文化,可能下一个“支付宝”仍然不会出现在现有的银行体系里。

我们需要通过科学实验来验证业务想法,而不是制造一堆只能成功的“创新”项目。

平台思维 over 微服务架构

金融服务已经完全依赖于数字化渠道了,各家银行都意识到了IT系统的重要性,拼命加大科技方面的投入。由于很多互联网企业的示范作用,微服务化架构也进入了银行科技的愿景里,期待着云时代能够通过微服务构建灵活的系统架构,从而能够支撑新服务和产品的高效敏捷开发。

于是很多银行都开始拿出不同的应用进行微服务改造,希望通过试点建立自身微服务架构的能力,逐步让更多的应用“微服务化”。国内银行显然没有时间等着一个一个应用的试点,于是往往会挑选不同业务领域(如零售和对公)的应用同时进行改造。然而,完成微服务拆分后,根本没有人会跨业务的审视大家在服务层面是否有共性需求,我们希望的复用性自然也就不会发生。这些服务未来可能也仅仅是一个应用改造后的“模块”,而不是真正为多项业务持续使用的“活着”的服务。

在此基础上,不可避免的需要构建一套微服务开发框架,直接采用开源框架对于银行来说还是很难满足其监管要求的。在设计和开发这个框架的过程中,我们最常听到的就是如何能够把各种服务管理述求(从注册到安全)都植入到框架里。这是一个似曾相识的故事,结局可能是一个复杂难懂的框架,看似开发工作量(代码行数)少了,但却给开发人员带来了痛苦的体验,以至于一有机会大家都会想办法绕过框架。

这些问题的解决必须依赖于我们思想观念的转变,新的平台思维是我们需要去拥抱的。我们这谈的并非是阿里提出的中台,而是从过去软件应用框架平台到数字化能力平台的转变,这个转变带来了三个方面的显著变化:

平台的“客户”是我们的开发人员。这里的开发人员是广义的,比如在数据分析领域,未来的银行业务人员也是开发人员。这个能力平台必须要关注开发人员,即客户的体验!

平台是持续演进的“活体”。平台上每种能力都为不同的业务应用提供着支撑,并且是持续完善的。我们不会像过去应用框架开发一样集各种述求于一身,设计就需要大半年。

平台是自服务的。开发人员不需要读上百页的技术文档,或demo项目来理解怎么使用平台能力。感谢互联网,已经为我们做出了这样的表率。

我们需要一个能够持续积淀的数字化能力平台,而不是一堆各自为战的微服务。

员工体验 over 开放办公

我经常玩笑说组织转型有两个非常好的破旧立新的契机:一是组织结构的调整,二是办公室重新装修。后者毫无意外已经成为了银行组织敏捷转型过程中的常规武器,通过打造不一样的工作环境,来促进员工之间更多的沟通和交流。

在敏捷倡导的协作和信任模式下,大部分重新装修都会选择开放式办公环境,即每个员工不再有自己的小格子间,甚至不会有自己的固定工位。这样的好处自然是我们可以更方便地让一个团队的员工们坐到一起,形成更紧密的团队协作氛围。

多年的顾问工作让我习惯了“居无定所”,每次走到客户的开放办公环境自然感觉非常适应。但也有那么几次走入新装修的彩色环境时感觉莫名的不快,所谓的开放办公桌比之前的格子间更为拥挤了,桌上一个显示器挨着一个显示器。整个场地没有几个会议室,都摆满了长条桌,团队站会都显得非常局促。这让我想起了多年前一家创业企业负责人在参观了ThoughtWorks北京办公室后跟我说的一句玩笑话:“这样的开放布局不错,单位面积里能多坐不少人,还能时刻监视每个人!”搞得我忙解释,其实我们的人均员工空间是行业普遍水平的一倍多,并且也没有人会去监视别人。

(你听说的开放办公 vs 你经历的开放办公)

这样假借开放之名来“提高”场地利用率的情况现在也正在发生着。值得提醒有类似考虑的管理者,别忘了选择开放环境的初心。我们在给团队提供更紧密协作空间的同时,也需要考虑团队的私密空间,这要求不同团队之间有一定的空间隔离,也要求足够的会议室来支撑时常需要进行的小范围协作会议。开放空间的设计不是在大平桌上整齐地排列一台挨着一台的电脑和显示器,而是更加全面的思考团队沟通协作的需求,更多的可视化空间及移动办公设施。

而这一切都是为了更好的团队和员工体验,让大家能够在安全放松的环境下去思考和碰撞,从而能够激活整个组织,创建生机型文化。借用西方管理哲学里常用的一句话:只有愉快的员工,才会有愉快的客户!

我们需要一个能够让员工感到安全和放松的团队工作环境,而不是一个为了提升利用率而拥挤不堪的“开放”场地。

银行组织的敏捷落地正在发生着,文中四点显然无法涵盖转型工作的方方面面。如开篇讲到的,我希望在帮助银行数字化转型的过程中,持续把自己的经历和观察总结分享出来,促进我们的银行业在数字化的进程中变得更加开放,从而能够碰撞出真正的创新。

Share

银行移动产品从团队敏捷走向产品敏捷

中国银行业的数字化转型刚刚拉开帷幕,移动产品成为了中国银行业的新战场。为在新战场占有一席之地,各家银行开始纷纷尝试自己移动产品的敏捷转型,更有甚者开始重新组建IT团队,用敏捷的方式重做原有的手机银行产品。

但这些转型往往在6-12个月后显示出明显的疲态。基本的实践都已经导入了,团队似乎已经“敏捷”了,但产品的响应速度并没有变快多少(想法的提出到上线的时长),产品的线上月活也没有显著的提升。那么敏捷转型到此就结束了吗,敏捷转型的下一步我们又该做什么?这篇文章作者将以多个实际案例出发,为大家揭晓银行业的移动产品如何从团队敏捷走向真正的产品敏捷。

团队敏捷是必要的,它是产品敏捷的必经之路

银行移动产品的敏捷转型很难一蹴而就,团队已经适应了“慢节奏”,习惯了阶段式的开发方式,敏捷的导入,无疑是一场变革。大规模的灌入标准化实践,最后的结果只会是“有形无实”,就像办公室中贴满五颜六色便签纸的白板,最后都沦为装饰品(数周也不更新)。

团队敏捷作为敏捷转型的第一步,以了解团队、分析痛点为前提,定制化的导入实践,让团队从传统向敏捷的开始转变。转型团队敏捷聚焦IT研发团队内部,包含产品、研发、测试人员,目标是:

  • 打造出一支敏捷迭代运作的IT研发团队
  • 建立团队级的敏捷流程及工程方法
  • 以及初步形成内部改进的种子力量

以50人的手机银行团队为例(4个全功能团队),团队敏捷从开始转型到稳定运作会持续4-8个月的时间。具体的转型过程就不在这里多做论述了。如果您的团队已经满足了以上的3个目标,那么恭喜您,您的团队已经迈出了敏捷转型的第一步。

产品敏捷的目标

“创业像开车,而不是发射火箭” ——埃里克 莱斯(精益创业的作者)

做产品也是一样。环境变化太快,产品很难像发射火箭一样,经过长时间缜密准备再发射验证。产品要像开车一样,有一个前进的方向,之后在行驶过程中根据外界的变化快速做出调整并验证,产品敏捷的目标也将聚焦于此。

  1. 帮助产品构建像“开车”一样,可以根据外界变化做出快速响应的能力;
  2. 在产品演进的过程中,帮助产品选择相对正确的“行驶”方向,帮助产品实现“弯道超车”。

很显然,团队敏捷,主要聚焦于研发团队内部的改进,对以上两点的影响并不大,更像是敏捷的萌芽和生长阶段。产品敏捷是以上述两点为目标,端到端(想法的产生到功能的上线)的分析及改进整个产品的实施过程,像是敏捷的开花结果。

走向产品敏捷的三个关键点

一、构建产品快速响应的能力

产品TTM(Time To Market)的长短体现了产品的响应能力的高低。以TTM的持续缩短为目标,是整体转型的关注点从“资源效率”到“流动效率”的改变,分析“流动单元”在产品端到端的实施过程中的流动情况,找到瓶颈点并加以改进,来持续提升“流动效率”,是转型的关键,主要分为3个步骤:

  1. 分析并定义产品端到端的实施过程;
  2. TTM的相关数据采集;
  3. 基于VSM的持续改进。

步骤1:分析并定义产品端到端的实施过程

团队敏捷中我们聚焦IT研发团队内部的迭代运作,在产品敏捷,我们需要以版本为维度,以需求为“流动单元”去梳理并定义端到端的研发过程,关键点是将产品版本与研发迭代融合

如下图,以某金融产品按月发版,研发双周迭代为例。需求分为Epic,Story两个层级,Epic为解决一个用户问题,Story为实现Epic的功能拆分。在版本迭代,我们关注的是Epic的流动(一个版本会包含多个Epic),从想法的提出,到最终的上线。在团队迭代来研发产品,我们关注于Story的流动,从Sprint Backlog的确认,到功能的持续交付(SIT环境)。端到端的实施过程覆盖了所有活动、产出件及流程流转,每一项都有自己独特的意义,每个产品的运作方式都有可能不同,重点是加强各个角色间的协作,使得团队适应该种运作方式,可以稳定的运作。

(某金融产品 产品端到端实施过程)

步骤2:TTM相关数据的采集

数据采集的前提实施过程梳理清晰且团队稳定运作。根据实施过程,我们可以清晰的得出Epic和Story的两条价值流,如下图。TTM是每个Epic从概念到上线的平均时间(如果Epic都是运营类的小需求,建议做合并成一个Epic)。当然Story的大小我们是可控的,Story的产生到集成测试完成的时间我们也要关注。

(某金融产品 Epic、Story的价值流)

数据不是通过WorkShop的问问答答就能得出的,需要借助电子工具的辅助,做准确的分析。首先作者对于电子工具的态度是:工具是辅助运作,而不能影响运作,不能出现由于电子工具的限制而改变运作结构。电子工具的目的是便于过程管理及可视化。

作者推荐的工具是Jira,Jira的优势在于可以通过配置实现高度的定制化,以及开放API数据接口(商用版)。作者建议抛开Jira中大部分的预定义好的模板及元素,根据现有的运作方式,做深度的定制(例如Story元素的重新定制)。从Jira中“问题属性”、“字段”、“界面”、“工作流”、“权限”等的自定义,到Jira Agile中的“看板”,“阶段”,“移动规则”等自定义。由于是相对于底层的定制,所以配置起来比较复杂,这里要保持开放的心态。

如下图,根据运作方式,在关键节点引入Jira做管理,并且根据运作方式,确定Jira的使用规则。

(某金融产品 配合运作方式的Jira使用)

在上线了2-3个版本后,我们就可以尝试做数据的采集及分析,Jira提供了方便的API接口供我们提取数据,要注意数据清洗及公式的配置,最后得出每个版本的TTM时长。

步骤3:基于VSM的持续改进

我们使用的实践是精益中的VSM(Value Stream Mapping)价值流图,来做持续的改进。通过Jira中的数据,建立Epic和Story的价值流图。以Story为例,如下图,数字为Story在该阶段的平均停留时长(天),按照迭代做分组。分析数据找到可能的问题点,很明显前4个迭代“待联调”和“测试中”的用时很长,之后去做该阶段的原因分析并尝试改进,再分析新的数据(第5个迭代的数据提升),以做到团队的持续改进。

当然了这里面的问题点是多样的,组织、需求、管理、技术等因素都可能成为问题的原因,这里的重点是找到核心问题,拿着数据证明去尝试解决,最终也可通过VSM也来体现我们的转型成果,这也是真实的量化的数据。

(某金融产品 前5个迭代,Story的VSM)

电子Dashboard。持续的Excel取数很难做到实时。尝试做电子Dashboard,做到价值流实时可视化,便于信息的透明化及持续改进,为提高产品的响应力打下坚实的基础,详见下图。

(某金融产品 价值流Dashboard)

到此阶段,您的团队已经有一套端到端的稳定运作方式及电子管理平台,可视化的VSM来体现问题点及成果展示。剩下的就是大胆去做瓶颈的原因分析及改进,来持续的提升产品的响应能力。

二、帮助产品实现“弯道超车”

金融科技企业对中国银行业的冲击是巨大的。多家传统银行直面差距,定义自己的移动产品策略是“追赶”,产品经理的惯性思维,“XXX有这项功能,做了这项优化,我们的产品要把它加上”。当然了如果落后,追赶固然没错,但在追赶的过程中我们也要制定赶超的策略。

金融需求无处不在,衣食住行娱每个细分场景都有金融需求出现,对于传统银行,信誉,数据、网点、存量用户等都是自有的优势。那么结合用户的需求与自身的优势实现金融产品创新,才是“弯道超车”的关键

利用设计思维的方法来获取、定义及实现用户的需求。扭转业务、产品、研发等角色的本位思维,从提出需求走向了解用户痛点,从实现需求走向为用户创造价值。

(设计思维的双钻模型)

建立产品内部的创新机制,抛开传统银行自身的限制,鼓励全员创新。如下图,从一个创新想法,到MVP的制作验证,最快只需要3周的时间。立项通过的想法进行2-3个月的孵化验证,最终有望形成新的商业产品。过程中给予创新者创新教练、团队资源的专项支持,内部创新的同时也在培养团队产品思维,提升团队的产品能力。

(某银行的内部的创新机制)

三、培养内部教练队伍

这个是敏捷转型的基础,需要进行管理、技术、产品、创新等内部教练的梯队建设。组织中缺少的是经验积累及专有人才,而不是流程规范。之后作者会以专文来讲述企业内部教练的体系建设。

总结

在移动金融产品的新战场上,银行的移动产品需要从“发芽生长”的团队敏捷,走向“开花结果”的产品敏捷。

三个关键点助力产品迈向产品敏捷:

  1. 通过产品开发过程端到端的梳理与定义,电子工具的引入,基于VSM的持续改进,来持续缩短产品的TTM,构建产品快速响应的能力;
  2. 使用设计思维打造产品,并建立产品内部的创新机制,来实现金融创新,帮助产品实现“弯道超车”;
  3. 建立企业内部的教练体系,注重人才培养及积累经验,来推动敏捷的发展,促使产品持续进步。

最后,希望中国银行企业把如今市场中的不确定性,看做是产品的新机遇。对于这种新机遇的驾驭的能力,将成为产品优胜劣汰的关键。


更多精彩洞见,请关注微信公众号:思特沃克

Share

企业敏捷在于打破常规

摘要

于软件开发领域而言,敏捷已经被广泛认可为一个行之有效的应对快速交付和不确定性的指导方法,并有一系列相对成熟的模型和框架。而企业更为需要的企业敏捷和业务敏捷则仍在探索阶段。敏捷吸引软件开发工作者的原因,是它打破传统开发常规,用不同的思维找到更好的方法,取得更好的结果。同样的,如果要业务敏捷,就要探寻业务部门所需要突破的常规。本文将与诸君分享三类业务部门突破常规的故事。


在这个技术突飞猛进、环境瞬息万变的时代,能够快速响应变化并做出适当的调整,是关系到企业生死的基本能力。企业(enterprise)需要敏捷,业务(business)必须敏捷。但很不幸的是,现行的商业和管理理论和实践普遍相对落后,连彼得·德鲁克都曾感叹:“我们称之为管理的东西反而使人们做事更困难”,更不用说支持快速响应变化。请问各位,您所在组织的管理和运作模式是否支持快速实现客户需求,是否支持快速响应变化?有哪些规则妨碍你们的工作?要迈向更好的运作模式,首先必须打破那些不必要的常规。

探寻更有效的运作模式并非容易的事。幸运的是,软件群体已迎来新希望。交付周期缩短的压力下,软件团队已经成功的实践新的工作方式,我们将之统称为“敏捷软件开发”。敏捷团队能够高效有效地协作,产出客户满意的软件产品。敏捷团队惊人的效率和激情,对业务工作者是一种鼓舞。组织领导希望业务人员有同样的敏捷能力和效果。

但是,业务敏捷(business agility)并没有明确的定义。敏捷联盟(Agile Alliance)将业务敏捷定义为“业务能感知内部、外部的变化,并及时回应以便于为客户提供价值。业务敏捷不是一种具体方法,甚至不是一个整体框架,它是形容一个组织怎样在成长思维下运作,而这种思维很类似于敏捷软件开发群体形容的敏捷思维。”敏捷联盟进一步表示,没有固定的敏捷实践、角色、或者周期。因此,业务敏捷的组成可说是还处于探索阶段。因此,业务敏捷是什么,它的目标是什么,它的广度和深度是什么,还需要每一个组织自己去定义。目前,没有任何参考的模型,各组织需要自行探索,自己检验。

在敏捷软件开发方法体系,业界有不少通用的模型,比如Scrum、XP等,来指导敏捷开发的实施。以上模型以软件团队作为出发点。业务敏捷的出发点呢?它从哪里开始?业务部门的领域不同,需要的敏捷模式则不同。比方说:销售部门的敏捷可能就跟财务部的敏捷完全不同,采购部的敏捷和人力资源部的敏捷也应该不同。同样的,敏捷对于高层管理者和业务部门领导来说也有不同的意义和侧重点。

我们或许可以考虑让这些业务部门尝试成熟的Scrum框架,让这些部门有迭代运作的概念。这或许有用,但我觉得不能解决业务的根本问题。原因很简单,业务部门都有他们惯用的例行工作分配和跟踪机制。在这些例行会议当中,他们会讨论与跟踪问题,并商定改进措施。所以,如果跟业务人员只是谈论“一般”的敏捷迭代做法,持续改进,他们就可能会感觉“我们都知道,已经在做了,没什么新鲜的”。

敏捷吸引软件开发工作者的原因,是它打破传统开发常规,用不同的思维找到更好的方法,取得更好的结果。敏捷宣言中的四个价值观:

个体和互动 高于 流程和工具

工作的软件 高于 详尽的文档

客户合作 高于 合同谈判

响应变化 高于 遵循计划

右边就是常规,左边就是崭新的思维模式。同样的,如果要业务敏捷,就要探寻业务部门所需要突破的常规。

敏捷宣言也提出“我们一直在实践中探寻更好的软件开发方法,身体力行的同时也帮助他人。由此我们建立了如下价值观。”同样的,我将分享我的一些个人在业务敏捷经验和体会,供大家讨论,我把这些经历分为三类:

  1. 业务与IT的敏捷(Business and IT Agility)
  2. 客户参与的敏捷(Customer Engagement Agility)
  3. 业务自身的敏捷(Business Agility in Itself)

这三类经历都在说明,业务人员如何跳出他们存在的心态和思维,找到突破。

业务与IT的敏捷

谈到业务敏捷,很自然的就谈到业务部门和IT部门的合作。下面的场景相信大家都不陌生:业务和IT双方并不和谐,各自维护自己的利益,互相对抗。业务压需求,IT抵抗需求。其实,从企业整体目标的角度考虑,他们应该是相互合作的合作伙伴关系,没有高下之分。

这是很多企业里常见的做法:业务方希望以最低价格完成目标,所以跟许多供应商合作,让他们之间互相竞争价格。这些供应商,有些做开发,有些做所谓的“独立测试”,他们互相竞争报价。在极端情况下,一个业务部门有十几个供应商,分别负责开发、测试、用户体验等等不同的工作。在这种讨价还价,随时停止供应商服务的情况下,供应商怎么可能有热情和忠诚?有些业务部门不仅仅对供应商这样,甚至对公司内部IT的同事也一样。IT服务质量难免受损。

业务与IT的敏捷协作基础是互相尊重,互惠互利。我分享两段个人经历:

第一个经历是我2014年的一个大型敏捷转型项目,包括供应商大概有好几千员工,该业务在一年后扩张至约万人。当时我们提供IT组织敏捷转型方案,并且辅导团队落地实施。正好我辅导的某个团队,业务代表和IT代表水火不容,一开口就吵,几乎不说话,关系很尴尬。业务代表希望将70个左右的需求都要现实,但是IT方面抱怨说需求不明确,做不到。IT代表问我,到底他们哪一方合理,这让我左右为难,倾向哪一方都有损失。这时,我便问业务代表是否真的希望每一个想法(Idea)都实现,以及每一个想法当前的进展情况。如我所料,那些想法的进度并不相同,有些想法就是想法,业务代表只是想与IT代表共同讨论。说到这里,IT代表才平下心情。我们便建立一个想法看板(Idea Kanban),附有清晰的标准定义和具体的排序规则。这形成业务方和IT双方的合作基础。这个运作方式受组织的认可,并且变成了其他业务团队的参考模型。

第二个经历更是难以忘记。业务代表想创造一个B2B电子商务平台,向欧洲和香港市场发展,有大量的业务需求。IT方面正手忙脚乱地实施落地,工作量特别大,不少加班情况。为了满足业务需求,IT部门有并行的版本开发。这意味着业务方必须参与验收测试(UAT),而同时也需要投入准备德国和香港的演示和销售工作,所以工作量也很繁重。总而言之,业务和IT双方都被压得喘不过气。其实,对我来说,解决办法很明显:就是要聚焦,不要把精力分散。为了让香港客户演示的成功,应该把大部分精力集中在这里,不必要并行版本开发,反而应该舍弃一些已经计划发布的工作。我参加他们业务和IT的协作会议,并指出我的想法。业务方很果断的舍弃一个版本,并同意专注于演示的准备。取消一个并行版本之后,业务和IT突然感觉轻松多了,特别开心。为了纪念这次的决定,业务代表还提议在敏捷宣言前合影留念!

客户参与的敏捷

说到客户参与,我想把本文的重点放在线上和线下的“人为渠道”(human channel)方面。在目前提倡数字化背景下,组织提倡自动化和智能化,希望通过技术手段,更好的为客户服务。客户通过这些自动化智能化的渠道办理业务,不需要业务人员的参与,减少业务人员和客户通过移动或其他方式进行沟通。虽然,这将让客户更方便,但是在某种情况下,会失去跟客户人与人之间的接触机会。数字化和业务敏捷存在的意义就是让业务给客户更人性化的服务,如果要人性化,怎么能够完全没有人为的参与呢?所以,在本文当中,我分享两个相关经历。

在某家金融科技公司,客服人员每人每天有350次通话指标。其实,通话次数和通话质量是两回事。我便问他们是否有建立一些有意义的关系,解决他们的问题。这些一线客服人员便滔滔不绝的讲述他们与客户接触的感人故事:一名客户问客服夜间上哪里买药,另一名客户询问哪里能找到托儿服务、等等。很明显,这些都是超出客服的工作范围。在他们分享经验时,我能感觉到他们的热情,他们助人为快乐之本的心态。我相信他们的客户也会特别感激。在这分享中,客服人员理解他们的意义不是为了达到冷冰冰的通话次数目标,而是有同理心的帮助客户。客服人员不是接电话或拨电话的机器,他们是一群具有影响力的大使,帮助组织建立人脉,建立口碑。当业务意识到这一点,就会有更强大、更有创新力的服务。如果你想要客服更人性化,你必须关注他们,鼓励他们呈现人性化的一面。这是敏捷的基础——以客户为中心,以人为本。

这个故事是我在某家银行的经历。作为一个每月领取人民币薪资的新加坡人,还要把工资汇到新加坡,这手续其实很麻烦。在银行风险政策的要求下,每次境外汇款都要亲自跑支行两趟去办理手续,对我这样一个差旅频繁的人来说,这是个很大的问题。不过与支行经理商量之后,商定一个稍微简单的办法,将两次亲自现场办理手续减为一次。支行的王经理不仅满足我作为客户时间上的要求,在自己的工作上取得成就,更交了新朋友。这是个体现出一线人员寻找流程创新和突破的很好例子。

一线员工不是推销产品、提供信息的渠道。他们是真正能够与客户立建关系的大使,所以他们应该赋予更多权利。但是,不少企业往往对他们就像对待机器一般,完全没有决策权,完全百分百的遵循过时和不完备的流程制度。以上两个案例体现了一线的突破。这就是所需要的业务敏捷。

业务自身的敏捷

业务敏捷的第三方面是业务自身的质量和管理方式。这跟客户、合作伙伴和IT没直接关系。这是业务自身的核心,通常与领导层有关。业务的决策和经营体现了领导者的意愿。领导做事的方式对业务敏捷有很大的影响,通常表现在细节上。

我在知识共享领域有一段有趣的经历。客户所在的业务有不同产品线,规模很大。领导层希望不同产品线分享知识,让员工互相学习,找到更好的解决方案。但是,业务的安全部门有责任保护机密。因此,两个部门产生了冲突——知识管理部希望分享,安全部门需要维护保密性。讨论之后,最终没有将知识分享的项目交给知识管理部,而交给安全部门负责,这样他们就需要改变保密政策。这显然了创造共同视野的好方法。

在另一个组织中,不同额度的采购需要不同的级别的审批权限,这在某种程度上是有道理的,但却给带来巨大的问题。一个项目当中所需采购工作,就需要获得不同级别的批准。较小的采购交给较低管理层的批准,而较大的采购则交给更高管理层的批准。结果,经理们看到的是完全不同的采购,而不是一个项目的所有主要采购。经过一次改善活动之后,让每个项目都由一个单独的人来批准重大的采购,而采购业务的合作使他可以批准指定项目相关的所有其他采购。这大大简化了审批过程,将审批周期从最多21天缩短到最多3天。

最后一个例子是一家有很多个不同子公司的业务,每一个子公司经营的业务都不同,成熟度也不同。于是,我们合作设计了一个共同的绩效框架,用于管理不同子公司。这个框架基于麦肯锡的三维度、基于业务驱动变量,它们适用于B2B、B2C和混合商业模型。过去,他们集中于金融指标,经过共同的努力,他们得到了更好的领先指标,能够追踪客户和商业伙伴的成长。为总公司和子公司之间提高了急需的可见性,优于以往不透明的方式。

敏捷即打破常规

如果你已经尝试过敏捷,你可能会在开始的几星期或者几个月内感到很新颖。但是,如果在这期间没有任何突破,没有任何思维的创新,没有打破常规,团队就很容易回到老样子。团队们可能说他们有Scrum活动,有一系列的“敏捷”仪式,但是,我的经验告诉我,如果只有表面上行动,没有根本上的改变,这是很难持续的。若要真正的敏捷,就必须更上一层楼,就必须有思维的突破和创新。敏捷软件开发如此,业务敏捷也如此。

各位业务敏捷实施者,你们有哪些最关键限制因素?这些因素背后的原则和政策是什么?你可以做出哪些改变?你可以克服这个限制吗?要付出什么代价?如果你袖手旁观,后果会怎样? 我们追求的是管理层面的突破。这些突破,往往就是一个简单的决定,就向打开一扇门那么简单。但是打开门后,海阔天空。

今天,你有没有尝试打破常规?欢迎分享。


更多精彩商业洞见,请关注微信公众号:ThoughtWorks商业洞见

Share

忘记“规模化敏捷”

[摘要]

虽然敏捷软件开发理念已为业界普遍接受,但敏捷的大规模落地应用仍然是一个非常大的挑战。敏捷开发模式的标准化是规模化应用的一个重要前提,很多组织和企业都已经在开展这方面的工作。市场的需求也催生出了如SAFe、LeSS这样的“规模化敏捷”框架,但本质上,规模化敏捷是一个伪命题,这样的“标准化”并没有帮助我们解决落地时的两个核心问题:即面向市场和商业模式变化的业务科技合作,及云时代的企业科技架构。

当然如果你仍然认为敏捷的框架体系是最重要的,可能获取一个“敏捷国际认证”对你来说也是关键的,点击这里便可一键获取!

目录


  1. 敏捷走向生命周期的尽头
  2. 软件开发标准化的伤害
  3. 不忘敏捷初心
  4. 下一个“敏捷”长啥样?
  5. 敏捷的规模化落地

敏捷(Agile)是2001年由17位资深软件领域专家们一起发起的针对软件开发工作价值观的倡议。作为一种软件开发理念,与之伴随出现了很多实践框架和方法,如Scrum、Kanban和XP。而这些方法目前已经逐步成为了我们软件开发的事实标准,类似持续集成(Continuous Integration)这样10年前,被大家认为是“极限”的方法,现在也已经成了开发团队的一个标配。

值得一提的是很多开发组织里敏捷的大规模应用仍然是一个非常有挑战性的任务。软件自身的多样性和这个行业的高速发展,造成了敏捷方法落地的种种挑战。在过去10年时间里,我自己在这方面的咨询辅导工作或多或少跟适配团队和实践有关。相信在下一个10年,我们还需要持续去解决敏捷开发落地的问题。

市场的需求当然也催生出了一些所谓“规模化敏捷”框架,如SAFe和LeSS。很多需要解决敏捷大规模应用的组织,于是感觉有了框架和标准。也有很多企业,询问我支持什么样的规模化敏捷框架。

希望通过本文总结一下这两年来我持续表达的观点:规模化敏捷是一个伪命题!所谓伪命题就是不要为一个不存在的问题,去寻找一把看似精美的战斧——敏捷这把锤子,遇到组织级灭霸,可能不好使了。

敏捷正走向生命周期的尽头

说这句话的时候我自己也带着一些伤感, 这里并非是想哗众取宠地呐喊一句 “敏捷已死”。敏捷作为一种开发理念,已经成为了现代软件开发的基础。然而,软件开发作为接下来这个数字化时代的基建行业,仍然有很多超越当年敏捷所谈及的事务。从时下爆款的区块链,我们就可以看到完全不一样的“开发团队”——形象代言人和挖矿小分队,都成为了这个开发团队里必不可少的成员。

什么标志着敏捷走向了生命周期的尽头?为什么不是持续演进成为敏捷2.0呢?

咨询行业对理念和方法的生命周期是有着最快感知和反馈的(如下图所示)。一旦一个理念和方法成为了事实标准,那么咨询公司需要做的事情就是体系化总结,通过标准化来帮助目标企业更快落地。一个我们都知道的案例,就是华为在IBM的帮助下,在上个世纪成功规模化应用了IPD。但即使有了华为这样的成功案例,IPD在后续中国企业落地时也是普遍失败的,原因是下一代的方法显然已经显现出了更大的优势。IPD有着完整的流程、方法和实践定义,当年的敏捷相比之下是混乱之极的,但仍然不可阻挡一波拥抱敏捷精神的互联网企业快速崛起。

​ (图示:开发方法随着行业成熟度提升而经历的生命周期。一种方法的成熟某种意义上只是为下一次创新做准备。当突变发生时,新方法将超越现行的主流方法,形成新的生命周期。)

当下的敏捷是何其相似!各大咨询公司蜂拥而至,都开始了“敏捷咨询”,资深的敏捷专家们开始总结大而全的框架,生怕遗漏了任何一个时髦概念——“价值流”大家都谈就加一个,“DevOps”火就先放里面。当你艳羡框架的完整时,往往需要警惕这个框架的时代价值,别忘了你做敏捷的初衷是什么?

在这个问题上,我在ThoughtWorks曾经纠结了好多年,每次有“写框架、卖咨询”的冲动时,都先后被老马(Martin Fowler)和Jim Highsmith这样的敏捷宣言签署者给拍了回来。确实也要感谢他们,能够站在行业发展的角度Let Agile Go。

早在10年前,华为给我的命题是:用敏捷开发改造IPD。记得我们最后“成功”把大家痛恨的“软需”改造成了用户故事(User Story),并构建起来了一条嵌入式系统的持续集成流水线。虽然现在看来,那是多么简单的任务,但当时大家还是激动地出了一本“葵花宝典”,记录了整个改造过程。听到这个名字大家可能都会笑而不语,XXX之后的IPD还是IPD吗?

同样的事情可能马上就会发生。有一天,中国的BATJ们可能会说:用XXX改造敏捷。我相信这个XXX不会是敏捷2.0,而我不希望成为那个在汇报中必须听到“敏捷改造成功”的管理者(即使团队写了另外一本“葵花宝典”)。

软件开发标准化的伤害

之前总是会顾忌得罪圈子里的老伙伴们,好在很多敏捷圈子的老一代们都已经去了各大知名企业做管理者(侧面印证了敏捷方法的成熟),敏捷顾问又是一波新人,所以今天才写这篇文章。再则最近几次关于AI的研讨和培训,着实让我觉得不能成为敏捷的“遗老遗少”,所以除了自省也希望鞭策更多的人。

企业里的很多管理者会说规模化敏捷框架至少给出了标准,让我们有章可循。很不幸的是这个“标准化”对目前的软件开发是有害的。标准化的基础在软件开发这个行业目前是不存在的,这个行业的基础知识积累还远不能支持有效的标准化,在未来很长一段时间软件开发都会是世界上最大的手工行业(可笑的现实~)。

谈标准化时我们必须跳出自身行业,看看别的成熟行业是怎么成功标准化的。程序员从心底是抵触“码农”这个可能未来的,所以暂且不说建筑行业。咱们看看临床医疗,算是一个标准化程度相当高的产业,但一个豪斯医生这样的天才也需要至少10年的培养,学习各个标准步骤;也没有人会写出《七天学会胆结石移除》或者《心脏起搏器的10种安装》这样的“速成”秘籍。从行业知识积累角度,临床已经是一个成熟的成年人,有着过去四五十代的知识积淀,尚且如此,何况软件开发仍然像个正在探索世界的小孩子,才经历了不超过四代人的知识积淀!

而显然,我们不应该以小孩子探索期得到的经验为依据,就开始进行行业范围大规模的标准化。CMM的失败在于软件学术业觉得软件开发就像算法论证一样,找到了nlog(n)的最佳算法就是普世的。但很可惜底层的运算环境,仍然会从单个冯诺依曼模型变成池化的云,再变成量子计算……

所以,让敏捷完成其历史使命,不要把敏捷标准化成另外一个CMM。软件开发行业需要下一个“敏捷”,下一个基于新知识积累的创新理念和方法!

不忘敏捷初心

当年的敏捷通过宣言的形式发表也是煞费苦心。在我们批判敏捷没有框架、没有标准的时候其实应该感谢17位参与者的克制和包容。我们很容易被自己十多年的经验所蒙蔽双眼,一边告诉别人要持续改进,一边却总认为自己这套是包治百病的。

他们的初心是值得学习的,我们每一代从业者都是在为这个行业的日益成熟积累经验。我经常拿开发和测试同事们开玩笑,“警告”他们未来不是成为“软件开发劳动力”,就是被AI所取代。但实际上软件开发的未来,包括职业的分工,都是一个未知数。持续学习的开放心态和着眼实践经验积累的学习方式,是软件开发在这个历史时代必须的。

另外一个值得提出的初心就是对软件开发“管理”的认知。由于软件开发并没有太多的先验知识,所以管理很多时候是会产生副作用;因为背后的标准并不具备普世性,随着生产工具的进步很快就成了畔脚石。用COBOL主机开发的方式去管理基于JavaScript的前端开发毫无疑问是偏执的。

这对我们的管理者提出了很高的要求,于是有一些企业高管开始要求全体管理者必须上手一线代码实践。当然这些做法都是不得已而为之,管理者的“初心”,是希望大家能深入理解这个年轻而高速发展的行业,直面缺乏标准化的现实,把自己日常的管理工作变成是去持续改进,做一个领导者,而不是所谓标准的监察者。

下一个“敏捷”长啥样?

那么,大家就会问下一个突破在哪里?未来的软件开发是什么样子的?很抱歉没有人可以准确预见发展的趋势,这个问题也可能不是大家目前最关心的。但既然写这个话题,我总还是要分享一些自己的思考,权且留作日后回顾的笑谈。

实际操作层面的标准化

随着老马即将出版的《重构第二版》,我们会发现实际代码层面的评判标准日益成熟。我们早已走过了代码能工作就是好的阶段,即使在过去最混乱的JavaScript领域(重构再版就是基于JavaScript的!)。在软件架构和代码结构方面,我们会逐步看到业界共识的质量标准。这两年基于GitHub等开源平台的兴盛为这个层面的标准化提供了契机。

当然这个层面的标准化也是最有可能被AI应用所颠覆的,毕竟全球最大的“手工业”必然会是AI技术应用最有利可图的行业之一。

行业层面的定制化

云已经是不争的软件开发基础设施,这样的水平切割已经形成了实际意义上的IaaS、PaaS和SaaS的分化。就我个人过去两年体验来说,各层软件在整个软件生命周期定义上还是存在明显差异的。比如构建一个IaaS层的基础服务,较之一个SaaS层的应用服务,在需求管理和发布上线领域就存在着显著不同。

在水平分层的基础上,我们越来越多地感受到了商业领域业务模式不同对软件开发的影响。前一段时间我写了一篇《银行业IT的敏捷转身》引起了行业的广泛关注,其原因就是金融行业在数字化时代越来越依赖软件,而从业人员发现他们的敏捷运用跟其它行业存在着很大不同。

这样的不同存在于方方面面,比如我经常挤兑同事吴雪峰的 “抛弃型演进式架构”,也许在区块链这样的投机领域就是一个真命题。

在一横一纵的行业化背景下,软件开发本身还需要很多的经验积累,短期标准化的必要性不大。对于一些更为传统的产业,在中国也面领着“互联网+”的冲击,存在更多不确定性,尝试着去标准化一个定制的“XXX行业的规模化敏捷”模式,也可能是弊大于利的。

敏捷的规模化落地

希望看到这里你理解了我为什么说 “规模化敏捷” 是一个伪命题。当大家在热议HBR关于敏捷的话题,认为敏捷就是真理的时候,需要理解我们现在的挑战是如何在一个大型开发组织里落地敏捷。而这个落地,不是靠套用一种 “规模化敏捷” 框架就能解决的。目前看,有这么三件事情是必须做的:

1. 建立持续改进的内部力量

这是软件开发组织最重要的管理举措(没有之一)。在行业缺乏足够先验知识积淀的今天,作为从业者我们能做的,就是让组织持续积累经验,并且具备从经验中学习和改善的能力。如果说我希望参与一项标准化工作,那就是行业里对教练的标准化“定义”,因为我希望帮助整个行业明确这个角色或团队在组织里存在的必要性及重要性。

2. 系统思考整个开发过程

软件开发不存在管理和技术的区分。由于立项、审计等多方面的传统制约因素,很多咨询公司人为地划分了所谓管理咨询和技术咨询,帮助刚开始合作的团队去理解如何落地敏捷。于是有了“只做管理”或“只关注技术”这样的说法。

事实上软件开发和很多工程制造业在这方面的差距是巨大的,即使Scrum这样的简单管理框架在落地时,也是受制于技术架构约束的;我们还没有办法让技术足够标准化,从而不约束管理。自从目睹了有人挥舞Kanban做“纯管理提升”产生的悲惨现场,再有任何团队说“这次只做管理”,我都坚决拒绝。

3. 为创新建立安全试错环境

面对未知最好的方式就是探索,而探索意味着大多数时候都是失败的,毕竟从失败中我们学习到更多知识。很多组织和企业说我们一直在做啊,我们每年都会有创新项目,投资一两个小团队去做。这个数字化时代,软件行业的创新应该是中国改革开放式的,即使不能用“雨后春笋”这样的形容词,也应该是全员参与的。已经有很多的案例告诉大家为什么隔离出来一两个小团队“专职”创新是不可行的了。规模化创新意味着创新不仅仅是IT的事情,是组织各个部门、各个角色共同的愿景;也意味着我们承认创新是一个不停试错的领域,从错误中我们提升成功的可能(让统计学发挥作用)。

所以虽然我反对“规模化敏捷”,但我却站队了“规模化创新”!

最后,让我们摆正心态,让敏捷成为软件开发历史进程中的一块儿重要垫脚石;让我们持续探索,为软件开发领域的知识累积添砖加瓦,并共同期待新一代创新理念和方法的诞生!


更多精彩洞见,请关注微信公众号:ThoughtWorks商业洞见

Share

亲历者说:敏捷?我被洗脑了吗?

几年之前我还是个野生程序员的时候,对“敏捷”这个词是有些抗拒的。那时候,要么是没有想法、懒得去理会,要么就是主观上拒绝:

肯定又是些无所事事的人弄出来的无聊概念,帮他们自己刷存在感的东西!

敏捷,就是那些咨询公司弄出来给别人洗脑的嘛,那些理念太空,根本无法落地!

那些一大堆概念都是些什么鬼?条条框框太多了,运作起来太麻烦了!

不用敏捷,我们现在不也挺好的吗?敏捷跟我有什么关系?

但后来我却选择加入了 ThoughtWorks,这个传说中的敏捷大本营,一方面因为很多出名的书都是 ThoughtWorks 的人出的,另一方面也想亲入虎穴一探究竟。而如今,历经敏捷项目的洗礼,我已经成为专职的一线咨询师,为众多大型企业提供敏捷转型过程中的技术指导。

他们

在一些朋友看来,我自从换了工作,就开始在群里转发一些敏捷相关的文章,发表一些感言。在转发这些内容的时候,我经常用到的叙事口吻是“他们”。

他们的代码真的写了好多测试。

有时候要开一整天的会,我真不知道他们是怎么撑下来的!

感觉跟着他们一起做测试驱动开发好像没那么难。

这段时间里,我让自己成为一个“警惕的观察者”。不管是主观上的警觉,还是故意在外人面前将自己打造成这样的一个形象。深怕在我还没有觉察到的时候就已经被敏捷洗脑了;同时也希望在曾经的好友面前以尽量理性、中立和客观(理中客)的形象示人:不过,这不妨碍在他们看来,我已经被洗脑了。

后来我了解到,这如同学习新知识过程“守破离”中“守”的阶段。“守”的过程既是获取新认知的过程,也是与过去的认知做比较和更新的过程。观察现象——对比质疑——私下学习——拨开疑云,大体就是这样的不段重复,在不断了解新实践的过程中,也同步去认识它、理解它。

渐渐地,一系列疑问得以解答,使得最终我接纳了敏捷开发思想,并认为它是适用于现代开发团队中的工作方法。

疑问

在过去我呆过的团队中,一直有两个无法解答的问题。那时作为技术经理,我经常被别人问到的问题,也是我自己无法用经验回答的问题。

  • 做完这个功能,你估计需要多少时间?
  • 为什么大家在办公室显得很安静、气氛有点压抑?

在成功学的洗脑课程中,有一句被强调最多的话:“失败一定有原因,而成功一定有方法!”那么,我们过去回答不了的上面这些问题,以及由它们导致的管理上的难题,其根本原因又是什么呢?获得管理上成功的方法又是什么呢?我带着这两个问题离开了之前深度参与的创业项目。与朋友分享了要探索新征程的想法之后,他真诚地邀请我加入他的创意,并希望由我来带领团队一起续写新的故事。我猛然间发现,其实虽然之前在团队里担任所谓技术经理的职位,但我真正给团队带来的帮助似乎更多的只是一个有经验的工程师给新手的指导。那时候,第三个疑问产生了:

  • 如何去做好一个团队带头人?应该安排团队成员每天做什么?

这些疑问不得到解答,我就如同掉下井底的青蛙,虽然能听见外面世界的声音,却只能看到井口大小的世界。

答疑

加入新团队后不久,这些疑问就完全得到了解答。第一个要实现的需求就是一个“明星”功能,集成第三方系统的调查问卷。团队很快组织了需求计划会议,并细致地过了一遍第一期要完成的目标,实现这个目标要包含的业务范围,而具体又包含哪些步骤(用户故事)。

  • 目标:发出问卷链接,并将数据收回来。
  • 范围:选取模板、发送链接、收回数据、发送提醒邮件
  • 步骤:
    1.  管理员在外部系统中创建好模板(不需要开发)
    
    1. 用户可在 XX 页面中使用选项来选择问卷模板(系统自动将外部系统中的模板名字同步到本地系统)
    2. 用户可在 YY 页面中使用链接发送调查表单,客户收到包含链接的邮件
    3. 系统自动将外部系统中收到的数据同步到本地系统中以供使用
    4. 如果没收到提交数据,系统自动在7天后自动发出提醒邮件,客户再收到一封包含链接的邮件

接着开发人员和测试人员对还不够详尽的细节提出问题,讨论获得一致,一起对各个步骤大致估计所需时间。每个用户故事并不确定由谁来做,而是大家一起就其中的细节进行讨论,并就所需时间形成一致:有的人说需要 3 天,有的人觉得 2 天就够了。他们会叙述自己的想法,并最终达成共识。

这项活动,以及之后的迭代过程中,基于这个会议的开发过程解答了我第一个疑问。

他们有一个角色叫 BA,会写一个个的用户故事来描述需求,一两天就可以完成一个故事。明确的前提条件和验收标准(从哪里开始做,做到哪里为止),让开发工作变得有节奏感,需求不清楚的时候随时就这个需求的范围进行讨论。

相比于拿别的产品做个演示,甩一句“就照这个做”,然后就天天催进度、做出来之后又说不对劲的产品经理,有一个专门负责业务、随时可以叫过来讨论的 BA 让开发人员感到倍感轻松。

江湖上传言说敏捷不需要文档,原来是谬误。敏捷并没有说不需要文档,只是说认为团队成员之间的沟通协作比详尽的文档更重要。所以,用户故事仍然是会包含必要的描述内容的。要写清楚为什么要做这项功能,以及验收标准等。

团队一起估计时间的过程,不光可以消除特定人估计时的无助感,更重要的是它让所有人都了解用户故事的细节,在后续开发中谁都可以参与开发。

相对较小的用户故事,估计起来要比一整个功能(比如对整个调查问卷功能进行估计)估计起来靠谱得多。即使有特定的用户故事估计不准确,其影响范围也是可控的。

把所有故事的估计时间相加,即为整个功能所需要花费的时间。

估计只是帮助做计划的一种方法,在后续开发过程中,如果发现比当初估计的要复杂,或者简单,需要与 BA、PM 等角色一起更新这个估计值,从而帮助团队及时完善一开始制定的迭代计划(如果必要,可以加入一些,或者减去一些,或者修改一些)。

这样,我发现开发团队的时间原来是需要管理的,而管理时间这件事其实也需要花些心思才能做好。这时候,如果你问我某项功能需要多久做好?我会告诉你,让我来拆分一下功能,粗略估计就成为了可能。

而后面的其他疑问也很快得到了解答。关于团队气氛,如果一个团队里每个成员都在闷头做自己的工作,独自面对自己的交付压力和技术挑战,成员之间互相帮不上忙,他们的气氛一定不会太好。而如果所有人通力配合工作在相同的功能上,一起理解消化业务,一起解决技术问题,共同做技术决策,并分担解决缺陷(BUG)的责任和压力,那么团队的气氛怎么会不好呢?

最后一个问题,关于团队。

团队里大家的角色是如何分配的,规模又应该多大?团队之间应该如何配合?这就不难回答了。典型的业务功能团队,以及后来出现的微服务团队,都很好的诠释了团队结构和规模问题。有一个论述产品设计和组织结构关系的康威定律,值得我们深入思考。团队带头人?我突然反应过来,一定要有这个角色么?如果大家都能很好地运作了,那其实这个所谓带头人的作用是很淡化的,这也就是所谓的自组织团队了。如果一定要一个带头人,那他的职责一定是确保这样一种自组织的机制在团队中持续地运作下去。

所以,我被洗脑了吗?

也许你可以这样认为。

作者我现在是接受了敏捷思想的,其中还有一些工具和方法,我还在持续学习过程中。不过,“洗脑”这个词本身其实具有一定的预设立场,它是那些质疑者的说法。

那么,重新回到问题本身。敏捷是什么呢?它会将人们洗脑吗?

敏捷不是什么宗教,它只是一种生产软件的思路,一种倡议。它倡议,通过加强团队成员间的交流协作,尽快交付高质量、有价值的软件,让团队以良好的响应性来拥抱软件的变化。为了符合这种思路,它一般又会有一些典型的实践方式。我们可以说哪些实践是由敏捷方法所推荐的,因此是“敏捷的”;而哪些实践是不推荐的,因此是“不够敏捷的”。但不会说哪种是好的,哪种是不好的。

比如,敏捷的:

  • 自主提交代码,尽早集成
  • 自动化一切,包括环境初始化
  • 代码由团队共享,随时重构和优化

不敏捷的:

  • 逐次代码提交都需要他人审查并批准的管控
  • 手动部署生产环境
  • 不让他人修改自己编写的代码

但这些“不敏捷”的条目,基于团队具体情况,可能实际操作起来更可行,就可以根据目前的阶段去施行,并向着更敏捷的方向去持续改进。类似地还有,敏捷不会说团队一定要开站会,站会一定要在早上开等等……相反,如果要求团队一定要做某件事,其实它与敏捷思想是背道而弛的。我们应该遵循敏捷理念去对实践进行改良,以适应团队实际情况。

事实上,“敏捷”一词来源于英语 Agile,这一英文词汇也类似于中文中的形容词“敏捷”一词,其适应性相当广泛。人们往往用它来形容业务的灵活性,思路的开放性等。因此对于敏捷来说,并不存在什么洗脑不洗脑的说法。它只是一种风格,一种态度。只要你运用这种思路和风格去让团队协作越来越好,开发出来的软件的质量越来越好,那就是敏捷的。敏捷中典型的具体实践方法有 Scrum)、XP 和 Lean 等。此外,近年被广为谈论的 DevOps,也已经成为了敏捷软件方法的典型实践。


更多精彩洞见,请关注微信公众号:思特沃克

Share