You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

130 lines
16 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 04 | 团队试点(一):让你的敏捷实践“事半功倍”
你好,我是宋宁。
上节课我给你讲了怎么做敏捷推进前的评估诊断,也帮你做了短期的推进计划。接下来我要用两节课时间,给你讲讲推进敏捷的第二个步骤:团队敏捷试点。
试点工作的展开可以分为**试点前准备**和**试点推进过程**两步。今天我先来讲在做团队敏捷试点前,你需要做哪些准备,试点推进过程我在下一节课会再做详细讲解。
说到这里你可能要问了:直接给公司所有团队都直接导入敏捷不就得了,为什么还要费精力先搞个敏捷试点?
这是因为,敏捷实践毕竟属于一场变革,与其它所有变革一样,都需要先从局部试点试水,只有在试点中积累了切实的经验教训,确定了可行性后,才能去大规模推广。如果不先在试点试水,就贸然在全局上推广,一旦在推进过程中遇到水土不服等问题,不只阶段性的成果会前功尽弃,再想倒回去做新的改变也更不容易,最终整个变革大概率会走向失败。
## 为什么要做试点前的准备?
现在你知道了为什么要做试点,那是不是在毫无准备的情况下,立马就着手做呢?
我先来带你看一家创业公司推进敏捷的故事。因为是创业公司工作节奏本来就非常快老板希望他们做敏捷时也能够“短、平、快”快速行动、快速见成果。于是相关的负责人只对团队成员进行了两个小时的简单培训直接就要求所有团队上Scrum。
但效果极其不好问题更是显而易见。因为此时大家连Scrum Master是谁都不知道况且没有任何前期铺垫直接就要求团队改变熟悉的工作模式团队成员既不理解为什么要改变也不知道这种新模式到底该怎么做。大家很快就接受不了这种工作方式做得一塌糊涂连个形式上的敏捷都没做到更别提见收效了。此时负责人到处救场劳累不说团队也不满意老板更不满意最后整个敏捷实践就这么灰头土脸地草草收场了。
这家创业公司的敏捷实践为什么会失败原因就是他们在推进试点前没有做好试点前的准备工作。俗话说“凡事预则立不预则废”敏捷也是如此只有做好详细、充足的准备我们才能在推进试点时真正做到有备无患。有人还给敏捷试点前的准备工作起了个名字叫迭代0Iteration 0这更足以见得这些准备工作的重要性。
## 如何做好敏捷试点前的准备?
现在你知道了为什么要做试点前的准备那么到底该如何做才能为你的试点打开一个好局面呢下面我就结合一个我接触过的实际案例给你讲讲做好试点前准备工作的基本要点。另外简单介绍一下这个案例的主角它是一家拥有一千多名研发人员的银行我们姑且叫它B公司。
### 1\. 选择试点团队
首先,你需要挑选试点团队,让他们充当推进敏捷的排头兵,快速打赢变革的第一仗。一般来说,有以下这些特征的团队会成为我们的首选:
* 采纳敏捷的意愿相对强烈;
* 业务价值高或采纳敏捷会在短期内给团队带来很大收益。
为什么要选择这样的团队?
这是因为,相对强烈的实践意愿,是团队落地敏捷的优渥土壤。如果团队愿意接纳敏捷,那么在推进过程中,团队成员会很容易发挥他们的主观能动性,成员之间的配合度也会相对较高,更易于产生良好的化学反应,也更有利于克服推进过程中遇到的困难与不适,使敏捷顺利推进并取得成效。
另外如果团队做的产品业务价值高,或者敏捷能在短期内给他们带来很大的益处,那么团队排头兵的示范效应就会比较好。一般而言,这样的项目比较重要,公司也会高度关注,团队做起来也会更认真,也就更重视自己的敏捷实践活动是否能取得成果。而且如果敏捷能在这些团队里率先取得胜利,那么它在公司里的影响力就会更大,也会让其它团队更加信服,为进一步推进它打下良好基础。
此外我建议你选两个或两个以上团队来进行试点。因为只选一个团队孤品风险太大也没有竞争效果而两个或两个以上团队容易产生竞争性对比效果明显大家都会争着把事情做到最好。当然这也要看敏捷教练的数量一般来说一个教练一次只能带23个团队否则一个教练的精力是没办法照顾到每个团队的。
比如说B公司他们希望通过导入敏捷提高研发效能。在试点时我们选择了两个团队手机银行产品团队和直销银行产品团队。对于B公司这样的银行来说这两个产品都是他们的核心产品在互联网的冲击下业务压力很大所以他们要求研发团队能够快速响应因此团队有相对强烈的敏捷实践意愿。
### 2\. 前期准备工作细则
选好了团队就要配合团队做一些前期准备工作你需要从6个方面去准备
* 组织和人员
* 管控治理规则
* 需求范围
* 架构
* 方法和工具
* 办公环境设施
下面我就结合B公司这个案例逐一把这些准备工作详细讲给你。
**首先,是组织和人员的准备。说到底敏捷是要靠人来执行和推动的,因此,我认为在所有准备工作中,这一条是最重要,也是最需要你花费心力来做好的,它直接关乎了敏捷试点乃至整个敏捷推进工作能否成功。**从组织层面来说,你要查看当前的项目组织结构是否适合做敏捷,如果不适合,就要重新组织。从人员层面来说,你需要对参与试点的人员进行相关培训。
那具有什么特点的组织结构更适合做敏捷呢?**简而言之,就是“高内聚,低耦合”。**这本来是软件开发中用来衡量软件设计好坏的词,一般而言,模块内部高度聚集和关联,而模块之间关联程度低,这样的软件才是好软件。
**引申用在组织结构中,高内聚指的是日常工作中,全功能小团队内部成员之间的沟通合作更紧密;低耦合则指的是,团队之间的沟通协作要远比团队内部的少。这样的组织结构才更适合推进敏捷。**
那要怎样来划分组织结构呢?其实,业界如今已经有很多这样的组织结构框架,但在这里我想提醒你的是,**框架虽然多,但本质都是一样的,都是为了让小团队内的沟通合作频度更多,也更加顺畅,而团队之间的沟通协作尽量少一些。**
这里我用Spotify框架来说一下它目前是“高内聚低耦合”组织结构的一个通用典范。
它分两层下面一层是Squad指的是一个个全功能小团队每个小团队中都有自己的业务分析师、开发人员、测试人员和迭代经理Iteration Manager能端到端负责一个需求或者产品。一般来说团队中的人数要限制在59人当团队人数超过9人时也要分拆成不同的Squad。而当Squad超过5个时就要考虑把它们划分到不同的Tribe部落中去它是组织结构的第二层。在敏捷中我们就是按照从Tribe到Squad这样的线条去管理团队的。
参考这个结构框架我们将B公司的研发团队进行了重新组织。以B公司的手机银行项目组为例这个项目团队有将近30人开发团队和测试团队分属不同的领导也在不同的办公区办公。
我们把它分成了4个小分队每个小分队都是有开发、测试、业务和迭代经理的、独立的功能团队。在这之外我们还设立了产品负责人这个角色用来把握整个产品。为了沟通方便我们设法将小分队里的人都安排到一起来办公。在重组完成后我们又定义了各个角色的描述和职责并进行了宣讲在团队内达成一致。
在完成团队组织结构的重组后接下来还需要给团队成员进行培训。在上面B公司重组好的团队中我们是这样做的
* 进行“敏捷思想基础”和“敏捷实践基础”两门基础课程培训;
* 组织拆书会,选择一些敏捷基础的书籍,每个人都来读一节,一起来分享,这样团队成员很快就有了一定的敏捷知识储备。
此外,除了对团队进行培训,我们还对相关项目的干系人也做了一些宣讲,内容是兄弟公司是怎么做敏捷的,取得了什么成效等等。
以上这些都是试点启动前的培训,在试点运行过程中,我们也会根据团队实践情况,针对大家对敏捷认知模糊的部分,随时做出讲解。比如随着团队工作的推进,我们会深入讲需求条目化、怎么做用户故事以及怎么做拆分等等。
**其次,是管理治理规则准备**。相信你还记得在前面的课程中我给你讲过敏捷是有规则的不是随意的、自由奔放的不能想怎么做就怎么做。所以在做好组织结构和人员的准备后为了大家能更好地协同和配合省掉管理和交流中不必要的争执你也要做一些管理治理规则的准备并在试点之前就跟大家同步明确好保证整个试点工作有序运行。因此在B公司我们做了架构和设计的治理规则质量管理策略规则等等。
**再次,是需求范围的前期准备**。要想顺利开展后续的迭代,前期需求的准备是必不可少的。但因为在敏捷中,需求是逐渐涌现出来的,所以在后面的每个迭代中,我们都会对下一迭代要做的需求进行新的梳理。
在前期我们做好这些准备就可以:
* 项目的高阶需求范围、高阶发布计划;
* 高阶的史诗级故事;
* 近期2个迭代要开发的用户故事。
如何准备好这些用户故事呢通常我们会开几个工作坊一起来头脑风暴一下。例如在B公司我们就做了几个工作坊写好了几十个用户故事并将其按照优先级排序。这里请你注意用户故事不仅要准备好相应的故事描述还要有验收标准。
**接着,是架构上的准备**。做好需求就要开始架构。关于敏捷里的架构之前业界也有很多相关讨论但总体来说都是希望抛弃原有的瀑布模式。由于在敏捷中需求是分步提出来的也是不断演进变化的因此相应地要采用演进式架构而不是做成一锤子买卖。正因为这样在迭代0的时候你只要基于当时的信息做好架构就好后面可以随着项目的深入及时调整。
这时候我们做架构的方式,是在完成初始需求分析之后,根据它来做架构建模。在项目早期,进行一些高层次的架构建模,会有助于团队与关键利益相关人商讨系统采取的技术策略,这样做的关键目标是快速识别出架构策略,快速完成架构建模。
在B公司我们通过召开建模的头脑风暴会议讨论了系统的功能特征并思考了实现这些特征的高层设计策略从技术图表、用户交互流程图、领域图和变更流程图四个方面做了建模。
**再来看看方法和工具的准备。**做完上面的准备后,你还要根据自己在第一步,也就是评估诊断时的访谈结果,根据痛点选择适合自己团队的敏捷方法,当然方法的使用是灵活的,也许一开始你用的方法随着敏捷的推进不再适用,那后面你就要做出相应的调整或改变。
在B公司起初我们在管理实践上选择了Scrum在技术实践上则选择了单元测试、自动化回归测试还有搭建DevOps流水线。然而在实际推进试点过程中我们发现在当时的情况下由于团队的老旧代码过多做单元测试的收益不大所以我们及时调整优先推进了自动化接口测试、自动化回归测试和DevOps流水线而选择在试点后再尝试做单元测试。
“工欲善其事,必先利其器”,要想把试点工作做好,工具方面也不能马虎。你需要在试点前选择、构建、测试、部署工作过程管理工具,并在测试后安装好;与此同时,你也要选好自动化测试用的工具,如果自动化工具不到位,所有工作都靠手工处理,效率就会过于低下。
工作过程管理工具主要指研发作业流程管理工具比如Jira和Trello等国内也有人用禅道。你可以根据实际情况通过这样的原则来选择工具
* 如果试点团队已经有自己的工具,那可以先自行试用、评估一下这种工具在敏捷中好不好用,也就是说,看看敏捷的过程在工具中是不是可视化的。比如说有的工具只有需求管理的作用,没法将后面的开发、测试过程囊括在内,这时你就要考虑是要将两种不同功能的工具合起来使用,还是重新选用新的工具;
* 如果试点团队没有自己的工具那么无论是工作过程管理工具还是自动化测试等工具都可以根据预算以及公司要求的安全性级别来引进新的工具。一般来说这些工具又可分为付费工具和开源工具像Jira、Confluence等Atlanssian的付费工具后续的服务要好一些而免费的开源工具如Jenkins则能节省资金这还是要结合自身情况去选择。
在B公司由于他们的团队规模较大考虑到后续可能需要Atlanssian的一部分插件来做管理工作我们选择了Jira做工作过程管理工具。另外考虑到目前Jenkins做持续集成的案例比较多为了日后方便我们又选择了它来做持续集成并用SonaQube来做代码扫描。
要将敏捷做好,除了上面的“软”件,也离不开硬件的支持,所以**办公环境设施的准备也很重要。**如果项目中有成员是远程办公的,就需要准备必要的音视频设备,远程会议工具;如果项目都在一个区域,就还要有适用于敏捷开发的办公环境,如物理看板和开放式的工位等等。
在B公司由于他们所有团队的员工都在一个区域办公我们就在办公区张贴了一些关于敏捷的宣传画报也安放了物理看板这可以方便团队学习和交流提高工作效率。
## 总结
OK说到这里我们的试点准备工作就大功告成了现在我来总结一下以便于你更好地理解。
所谓“凡事预则立,不预则废”,在推进团队敏捷试点之前,你要挑选好试点团队,并做好试点工作前的充分准备。如何做好准备工作呢?一句话:**调整好结构、组织好人员、划定好需求、搭建好架构、选择好方法和工具、布置好办公环境。**你要注意,这些准备工作是相辅相成的,每一步都马虎不得。
俗话说“心急吃不了热豆腐”,在推进敏捷时,不能盲目地求快,不能省略掉该走的步骤。如果不做试点前的准备工作,就直接开展敏捷活动,那么团队成员既没有心理上的准备,也没有知识和技能上的储备,整个试点工作也会如同一团乱麻,达不到预期效果。做好了各项准备,未雨绸缪,才能让我们的试点工作“事半功倍”。
## 思考题
现在,我想请你来思考一下,在团队试点前的准备工作中,关于组织和人员的准备,你会怎么做呢?你有没有更好的方法呢?
我是宋宁,欢迎你在留言区与我分享你的疑问和思考。如果你觉得这篇文章对你有启发,也欢迎你把它分享给你的朋友,我们一起来探讨和学习。