对话阿里敏捷教练 | 成功辅导过淘宝、闲鱼,他都是如何帮助团队

为了让大家对敏捷有更多的了解,小编特意采访了阿里巴巴高级技术专家、敏捷教练张燎原。他是如何看待敏捷、如何帮助团队落地敏捷的,作为研发团队的一员,我们可以从哪些地方着手敏捷,以下是对他的采访。

嘉宾简介:张燎原,阿里巴巴高级技术专家,他是敏捷和精益方法的积极实践者和推动者,具有十多年软件研发一线实践经验,经历过消费电子、通信及互联网多个行业,长期从事研发管理、研发教练及组织转型工作,曾负责Nokia全球大规模敏捷导入实施和转型辅导,成功帮助淘宝、闲鱼、阿里云等事业部引入精益产品交付和创新方法,帮助实现DevOps转型。译有《程序员度量》、《软件驱魔》等。同时,他热衷编写代码和开源,涉及软件设计、测试驱动开发、代码重构、遗留代码的维护和持续集成及交付。工作之余,他还擅长画画和摄影,被同事戏称“最会画画的敏捷教练”。

1、燎原你好,我知道你是敏捷和精益方法的积极推动者,在阿里也辅导过淘宝、闲鱼等多个团队。从事敏捷这么多年,特别好奇,你是如何看待敏捷和精益的呢?

张燎原:以前,敏捷作为一个很时髦的概念,大家总是反复在提,就像现在的DevOps一样。在我看来,不论是敏捷、精益还是DevOps,能不能解决问题, 这个才是最重要的,一切不以解决实际问题的概念炒作都是耍流氓。去年我和何勉老师(阿里巴巴敏捷教练团队负责人)在一起讨论, 我们是在做敏捷、精益的转型还是其他的什么,后来我们决定提升研发效能。作为一个研发团队,能够持续快速高质量地交付有用的价值,才是我们觉得作为一个研发团队要追求的。

提升研发效能,主要分两点来看,第一个是回答如何持续快速高质量的交付的问题。在交付团队里,大家协作特别好,写的代码要没有太大的问题——高质量,发布特别快。所以,我们知道的比如看板、Scrum是解决我们协作的问题;测试自动化、CI/CD以及DevOps是为了帮助高质量的发布;我们提倡的DDD、Clean Code,是为了让我们的代码能够更健壮、质量更好、更Clean,大家在协作的时候,能够通过代码来交流,这些都是提升交付能力的手段和实践。

另外一点是,就要回答什么是有用的价值这个问题。对很多工程师来说,大家可能更关心代码写的好不好,从产品那拿到的需求,大家基本都认为是对的。很多时候产品提了一个需求,一个工程师可能要做一天甚至是一个礼拜才能完成这个需求。但是,如果这个需求没有价值,那就相当于白干了。所以这个时候,我们要走到源头去看一看,这个需求是否是有用的,对我们的业务有没有帮助,是否值得我们投入。

所以你问我如何看待敏捷,我不会说是要快速响应变化,因为我觉得这样还是有点抽象。回到研发的本质,我们是要持续快速高质量地交付有用价值,从解决阻碍我们达成这一目标的问题出发,选择相应的方法和实践,最终解决掉这些问题,这才是实实在在、对我们有帮助的。

2、你是如何帮助团队落地敏捷的,这中间有没有遇到一些困难?

张燎原: 我觉得首先是让大家看得见,对问题形成一致的理解。当我们开始在团队落敏捷时,大家会说我没有问题,所以首先我们要让大家看得见问题,在问题上达成共识。这样,目标才会一致,做事才能齐心。

其次,大家在解决方案上要达成共识。有的时候,针对一个问题,可能有A解法,也可能有B解法,但我们要一起探讨是用A还是用B。例如,B可能见效快,但不持久;A见效慢,但是持久。这个时候,我们得去找一个折中的解决方案。

再次,要有一条明确清晰的改进路径。解决方案要能解决问题,但同时也要给大家改进的信心。每个阶段都能解决一些问题,通过持续地发现和改进问题牵引着大家往前走。这种改进不应该都是烟斗式的,即开始会导致效率先降下来,然后才会慢慢持续往上爬。

最后,有节奏地给出有效反馈。通过在合作过程中,通过数据也好,或者观察到的问题也好,持续地给团队反馈,让大家明白自己是在正确的路上行走的。

这几点对我们来说都是比较大的挑战,但比较好的是,我们现在能驾轻就熟来应对。还有一点,大部分时间,我们是站在全局的视角来看问题,这和具体的职能团队是有差别的,他们更多是站在自己的职能的角度。大家看问题的视角不一样,在沟通的时候,也就需要更有同理心。

3、在敏捷实施过程中,给团队建立信心真的很重要,能具体说说你是如何在短时间内给团队建立信心的吗?

张燎原:在实施转型或提效的时候,需要持续地给大家信心。我们不太建议一股脑地给一个完整的解决方案,把之前的全部推翻掉,就按照新的来。因为我们接触的团队,基本上都是工作在现有的业务上的,哪怕是创新型的一些团队,大家之前也一起磨合了很长的时间,大家都有自己熟悉的工作方式和习惯。

我们团队之前有一个案例:《4个迭代,从批量交付到持续交付转型》,就非常典型,每做一个迭代都是让大家看到收益,然后才有信心做第二个迭代。例如,当时的第一个迭代是把所有的职能端到端的拉齐,让大家看到整体。这个时候就减少了各个职能之间的交流误会,整个沟通就顺畅了。然后在整个可视化的协作流程中,大家就会发现:喔,原来需求有这么多反复、原来需求太大了,甚至需求都没搞清楚就开始了。其实很多时候,这些都是大家自己发现的。当解决了协作的问题,大家有了信心,就开始着手解决需求的问题。当需求澄清的问题解决后,又会发现发布速度是不是可以更快一点,原来一个月发一次,现在是不是可以每个礼拜都能发。这样每一个迭代都会有一些点得到了改进,并且也能够持续暴露其他的一些问题,能够让大家朝比较理想的状态前进。

如果你告诉大家落一个解决方案需要半年的时间说半年之后才能看到结果,你做了一个月没结果,大家能接受,第二个月没结果,大家可以坚持,如果第三个月还是如此,可能就没有然后了......这是我们在制定解决方案的时候需要特别考虑的。

4、你们的敏捷实施或提效一般多久能见到效果?

张燎原:从目前在阿里接触的一些团队来说,一个月内,基本上就能够看到一些明显的效果了。当然这跟我们合作的团队也有很大的关系,大家彼此都挺配合的,甚至有的时候他们比我们还专业,他们会说,燎原老师,你看这种方式是不是会更好。然后我发现他给出来的点可能是我都没想到的,所以在这个过程中,我们也是在相互学习。

当然,改进是一个持续的过程,目标越大,要投入的时间可能就会越长。

5、一般什么时候可以判断说这个团队辅导OK了?

张燎原:一般情况下,在辅导开始的时候,我们都会有特别明确的目标,我们会清晰地把需要改进的问题定义出来,让大家看得见,找出根因,而不仅仅是现象。随着问题逐渐被解决,后面我们会有意识的慢慢抽身出来,看没有我们的时候,是不是也能够work起来,如果我们发现没有我们也行,这个时间也就到了。

在这个过程中,很重要一点,我们要善于发现和培养有潜力的同学,在被辅导团队留下种子,这些同学会是团队持续改进的生力军。

6、有什么方法可以帮助一些团队发现自己的问题?

张燎原:我觉得能做IT的人都是聪明人,如果他没有发现这个问题,更多的是因为他没有这个意识,没有意识到自己要去看有没有问题。所以我们会通过其他的一些渠道,让大家去意识到这件事。老实说,大家不缺方法,缺的是意识,我们希望能够让大家意识到这件事情的重要性,如果我们没有一个很好的研发能力去支撑业务效能的话,我们也很难把业务效能做好。虽然很多时候我们只觉得业务效能很好很重要,我承认确实很重要,但研发效能是基础。如果你有一个很好的点子,但是没有很好的这种研发团队,没有研发方式来支撑。你的点子,也实现不了。

7、如何让更多的有需求的团队也能得到你们的支持?

燎原:确实,让我们去辅导一个团队,肯定没有问题,但是如果让我们同时去辅导很多的团队,精力肯定就忙不过来,一个人一天就24个小时。这个时候我们会有一些策略,例如,就像前面所述,我们会培养业务团队的一些同事,让他们成为这方面的专家,就像一颗种子,他也会发展壮大,然后他自己做的一些事情,对他所在组织都会有很大的帮助,这是一种杠杆撬动的力量。另外,我们还会通过其他的一些手段,例如线上、线下的培训课程、最佳实践文章、案例分享,以及鼓励更多同事把他们一些好的点子share出来。我相信这样一个一个的点,都能够帮助规模化。

还有另外一个很重要一点,我们所在的研发效能团队,通过各个业务部门的实践,对实践方法及不同场景的总结沉淀,会形成一些体系化的东西,然后与工具做更多的结合,让大家通过工具就可以轻松上手,把好的实践最大化。例如,现在Aone的看板,看板上为什么分那些阶段、为什么有那样的一条条泳道、需求是怎样移动的,最早我们是用物理看板,但是现在我们把它都融入到产品里,团队建好自己的项目空间,就自动会有一块项目看板,从而让好的实践在更多的团队得到使用。

8、作为研发团队的一员,我们每个人可以如何着手去实施敏捷?

我觉得单独从了解方法或知识的角度来说,看完了一本书或者一篇博客,10天半个月可能也就忘了。但是我们可以从自己现实当中的问题出发,比如做为程序员可以去思考,如何能够让代码变更高效地发布。例如你可以搭一个持续集成的流水线,让大家的代码一提交就触发自动化的检查、自动化的测试和部署,把这个做好就是往敏捷,往研发效能的提升上就走了一大步。

对产品经理来说,需求应该如何组织,是否都有对应的目标,任务朝需求对齐,需求朝目标对齐。对于一线管理同学,可以思考整个团队的能力模型,团队的协作当中有哪些问题,比如测试和开发同事、前端和服务端之间的协作有没有更好手段,让大家的协作更高效。这样每个人都站在自己的角度上,改进一点点的话,形成合力。大家再在站在系统的角度,串起来一起看,就会改进很多。

即使是一个刚入职场开发同学,也可以思考代码能不能写的更clean,减少code smell,把这代码写的别人一看就懂,每一段代码都能有很好的单元测试,减少维护成本。这些都是在提升研发效能,在实践敏捷。敏捷不是挂在嘴上,而是落在每天的工作里。

9、最后,本周六你的分享《从持续交付到业务创新》,希望能给大家带来哪些收获?

张燎原:很多时候我们做工程师,都是站在自己的位置去看待问题,很少有机会能够站在全局,端到端的角度去看待问题。这次分享我希望能够带着大家一起,从研发的端到端、从需求到交付,去了解我们可以通过哪些手段去提升研发效能,以支持我们提升业务效能。

对于每一个不同的角色,能够富有同理心地去看待软件研发过程中的其他职能的工作,真正做到“眼高手低”:即看到整体,落到实处,整体形成合力,往组织效能最大化的方向去努力。

阿里有一句话叫做:一张图、一场仗,一颗心,首先画好一张整体的图,把团队之间协作的图画好,我们才能得对齐,上下同心,然后把这场仗打好。期待与大家的交流。


原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/518559.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用Flink取代Spark Streaming!知乎实时数仓架构演进

作者 | 知乎数据工程团队 “数据智能” (Data Intelligence) 有一个必须且基础的环节,就是数据仓库的建设,同时,数据仓库也是公司数据发展到一定规模后必然会提供的一种基础服务。从智能商业的角度来讲,数据的结果代表了用户的反…

Java-接口的定义与实现

// 接口都需要有实现类 public interface UserService {// 常量 默认是 public static final,一般不会再接口定义常量int AGE 99;// 接口中的所有定义的方法其实都是抽象的 public abstract // public abstract void run();void add(String name);void delete(S…

4 年 46 个版本,一文读懂 Spring Cloud 发展历史

作者 | 方剑责编 | 唐小引头图 | CSDN 下载自东方 IC出品 | CSDN(ID:CSDNnews)Spring Cloud 自 2016 年 1 月发布第一个 Angel.SR5 版本,到目前 2020 年 3 月发布 Hoxton.SR3 版本,已经历经了 4 年时间。这 4 年时间里…

让开发部署提速 8 倍,我参与贡献这款 IDE 插件的全过程

如何像参与开源那样,去参与一款 IDE 插件的设计? 作为一款 IDE 插件的使用者,我是否能决定下一个版本的功能? 自从产品经理银时小伙和他的开发小哥们在去年12月发布 Cloud Toolkit(一款 IDE 插件)以来&am…

这难道是原子、比特and供应链的新内涵?京东如是说……

本文为CSDN博主「L-JingJing」的原创文章 原文链接:https://blog.csdn.net/sch881226/article/details/105301572 从遍览采茶风光到感受入口醇香,如今我们真的可以做到高效追溯每一片茶叶的“记忆”了吗?答案显然是肯定的,据了解…

干货!看云原生时代阿里云的四个“最”

云原生已经成为 IT 领域最热的词之一。到底有多火,大家感受一下: 2015 年在旧金山召开的首届 KubeCon 只有 200 余参会者,而今年第二次在中国举办的KubeCon迎来了3000现场观众,遍布全球的线上关注开者则更是不计其数。Gartner最近…

深入解读 Knative Eventing 0.7 版本新特性

前言 Knative Eventing 0.7 版本已经于 6 月 26 号正式发布。本次发布主要围绕重构 Channel 特性展开。本篇文章重点解读了这些特性,并且以此展望一下 Knative Eventing 后续版本的发展。 新特性 重构 Channel 作为 Eventing v0.7 版本最大的特性, 重…

Java-异常01 Error和Exception

异常 捕获异常 https://www.bilibili.com/video/BV12J41137hu?p77&spm_id_frompageDriver

OpenKruise - 云原生应用自动化引擎正式开源

在本次 KubeCon 上,阿里云将为全球用户分享阿里巴巴超大规模云原生落地实践、云原生前沿技术与应用包括OpenKruise 开源项目、开放云原生应用中心(Cloud Native App Hub),同时将重磅发布边缘容器、云原生应用管理与交付体系等产品…

过去15年间,到底是什么真正推动了云计算的革命?

来源 | Ohad Maislish译者 | 孙薇 责编 | 徐威龙封图| CSDN下载于视觉中国虚拟机的兴起我还记得,我第一次听说虚拟机是在2002年,我们需要一种能够在Windows OS上运行Linux的方法。当头一次看到在VMware Workstation上运行的虚拟机时,我非常震…

支付宝的商业与技术创新双轮驱动 创造数字时代普惠金融“奇迹”

2019年6月28日,在中国国际软件博览会上,蚂蚁金服金融科技产品技术总监杨冰发表主题演讲,分享了蚂蚁金服在过去的十多年里,是如何通过商业创新与技术创新的双轮驱动,创造出数字时代的普惠金融“奇迹”。 蚂蚁金服金融科…

Java-异常02 捕获和抛出异常

ArithmeticException 算术异常 public class Test {public static void main(String[] args) {int a 1;int b 0;try { // try监控区域System.out.println(a/b);} catch (ArithmeticException e){System.out.println("程序出现异常,变量B不能为0");} fi…

基于Tablestore Tunnel的数据复制实战

前言 数据复制主要指通过互联的网络在多台机器上保存相同数据的副本,通过数据复制方案,人们通常希望达到以下目的:1)使数据在地理位置上更接近用户,进而降低访问延迟;2)当部分组件出现故障时&a…

今天,我要教妹子学会Spring:Aware、异步编程、计划任务

来源 | 沉默王二教妹子学 Spring,没见过这么放肆的标题吧?作者我有一个漂亮如花的妹妹(见封面图,别问我怎么又变了?还不能一天做个梦了?),她叫什么呢?我想聪明的读者能猜…

Java-异常03 自定义异常

// 自定义的异常类 public class MyException extends Exception{// 传递数字 > 10private int detail;public MyException(int a) {this.detail a;}// toString: 异常的打印信息Overridepublic String toString() {return "MyException{" detail };} }public …

SLS机器学习最佳实战:批量时序异常检测

0.文章系列链接 SLS机器学习介绍(01):时序统计建模SLS机器学习介绍(02):时序聚类建模SLS机器学习介绍(03):时序异常检测建模SLS机器学习介绍(04)…

一张900w的数据表,怎么把原先要花费17s执行的SQL优化到300ms?

来源 | 程序员乔戈里 封图| CSDN下载于视觉中国有一张财务流水表,未分库分表,目前的数据量为9555695,分页查询使用到了limit,优化之前的查询耗时16 s 938 ms (execution: 16 s 831 ms, fetching: 107 ms),按照下文的方…

浅析基于 Serverless 的前后端一体化框架

概述 Serverless 是一种“无服务器架构”模式,它无需关心程序运行环境、资源及数量,只需要将精力聚焦到业务逻辑上的技术。基于 Serverless 开发 web 应用,架构师总是试图把传统的解决方案移植到 Serverless 上,虽然可以做到既拥…

Java-总结

常用类 集合框架 IO流 多线程 网络编程 GUI 注解与反射 https://www.bilibili.com/video/BV12J41137hu?p80

一文告诉你,如何在 Kubernetes 的容器引擎中运行 KVM 和 VMware VM!

作者 | Gilson Melo译者 | 天道酬勤 责编 | 徐威龙封图| CSDN下载于视觉中国随着微服务的出现,人们通常会问:“是否有可能通过Kubernetes上的微服务在基于内核的虚拟机(KVM)或VMware 中运行我的旧虚拟机,还是需要将它们…