近日,腾讯DevOps产品专家王一男在GOPS大会上发表了题为《互联网研发效能方法工具落地金融行业的实践方法》的主题演讲。文章整理自王一男在GOPS大会上的演讲。
大家好,我是腾讯TEG的王一男。过去一年,我的主要工作是把互联网企业内部的研发效能工具产品化对外toB,给其它行业尤其是金融行业客户提供研发效能提升的解决方案。在这个过程中我发现腾讯等互联网公司的效能工具和方法落地金融行业时会遇到一些"水土不服"的现象。今天的分享是过去一年工作的经验总结,希望能够推动敏捷、DevOps跨行业赋能过程中遇到的问题的解决,给互联网和金融科技领域的同事们提供一些帮助。接下来,我将从以下三方面进行分享:
1.互联网行业与金融科技的研发特点
2.互联网行业与金融行业研发主要环节的比较
3.互联网行业与金融行业研发管理、工程效能发展趋势
概述
互联网和金融科技在开发运维一体化、研发性能建设、工程能力建设方面越走越近是一个趋势。腾讯、百度、阿里等互联网公司越来越重视研发效能,通过自研研发效能工具,不断提升整体的工程能力。
同时,随着互联网金融的兴起,传统的金融行业也逐渐拆分出金融科技公司,并尝试不断提升企业研发能力。和互联网行业相比,金融科技在研发管理、工程效能方面存在着难、关、痛。在落地互联网研发的效能工具和方法时,也存在着隔行如隔山的问题。
互联网行业与金融科技的
研发异同
1. 在研发管理和工程效能领域,互联网和金融科技越走越近,主要原因有以下几点:
1)业务和产品遇到的挑战越来越相似;
2)产品所使用的技术相近,如AI、大数据、云计算;
3)研发人员规模相近,5千人以上,甚至多于1万人;
4)研发管理、工程效能遇到的问题和挑战相近。
怎么样把互联网的优秀产品、工具和管理方法实践赋能到金融科技中,怎么样把金融科技中优秀的管理实践迁移到互联网上是一个值得热议的话题。
2.但在研发效能和项目管理方面上,互联网和金融科技有本质上的不同:
1)互联网研发不懈追求“更高效率”;金融科技更加注重“风险管理”;
2)互联网专注在“快”,追求最高效率,认为比别人快就赢了;金融科技有监管的约束,需要走更多的流程,因此目标在风险管理。
互联网在赋能金融科技时要考虑到金融科技的本质是风险管理,金融科技在做快的同时也要考虑到风险。
3.互联网公司要解决研发管理“新问题”,金融科技要迎接工程效能“新挑战”。
互联网到了一味追求快的瓶颈期,研发管理也遇到了新问题。当互联网要做行业赋能、接触到各个行业时,就得“慢”下来,需要考虑管理管控的问题。金融科技则是相反的,过去一直在管理管控,但现在由于业务和市场的压力要不断地“快”起来,所以这是个相向而行的过程。
互联网行业与金融行业
研发主要环节的比较
1. 需求/项目/产品管理
组织架构的不同会导致管理的模式不同:互联网里的组织架构更扁平,业务BG里是完整的研发团队,一个部门天然就是一个产品团队。而金融科技的组织结构则决定了一个需求从提出到审核再到开发阶段需要经历更长的流程、经过更多的角色。在这个过程中,所需要的流程、工单、字段比较多,因此互联网的效能工具,尤其是需求/项目管理相关工具就显得有些"力不从心"。
产品管理与项目管理的区别:互联网更多的是产品管理,而金融科技更多的则是项目管理。
1)互联网的组织结构就是一个个产品团队,这个产品团队里不仅仅有产品经理,还有产品研发团队,例如TAPD、工蜂。所以产品管理的特点是负责产品全生命周期,从端到端。而且团队是持久性的,并且是个需要业务和技术的“多面手”的多功能团队。
2)金融科技则更多的采用项目制,通过弱矩阵的结构把各个部门临时组织到一起,串联其中的各项流程。它的特点是需要有较好管理和协同能力的项目经理角色。
目前面临的问题:互联网缺乏项目管理管控实践经验和必要的工具支撑。金融科技领域则面临着研发效率跟不上业务需求增长的速度的问题,需要突破项目管理的禁锢,快速迭代开发上线。
实践证明只用工具是不行的,方法流程也需要改一改,否则落地是很难执行的。过去,老研管都是拆业务需求、拆项目、拆子项目、拆功能需求、拆开发任务。后来,项目、子项目被弱化,从业务意向就开始拆用户故事,以产品管理的方式做业务意向,子项目是做功能需求,开发任务的拆解做迭代开发。弱化后的流程依托互联网需求/项目管理工具实现,产生了比较好的效果。
未来发展的趋势:图示绿色的圈是互联网研发管理实践现在所能覆盖的范围,最边缘的是需求管理、工作项管理、文档管理。因为互联网比较重视工程能力,所以在产品管理、开发管理、发布关系、准入等方面做的比较好,管理方面做的相对弱。
金融科技恰好和互联网有一些互补性,我们看客户现有的管理系统和平台时惊讶地发现,过去学习过的项目管理、软件工程管理的项目流程和方法一直都在金融科技里被实践应用,比如项目组合、团队、风险、工时、供应商、资源管理等。但是在这一方面,互联网研发管理实践中做的比较少。
金融科技项目在管理上做的很好,但在产品上工作项的拆分、敏捷迭代的拆开、团队文档协作、测试管理、CICD等方面还有待加强。因此这是金融科技和互联网企业合作工具和方法开发时的一个重点。趋势是明显的,互联网和金融科技殊途同归。
2.代码管理
从趋势上来看,全球的SVN使用量在没落,Git作为版本管理、配置管理核心工具的份额在上升。互联网行业目前基本都使用Git,腾讯去年也完成了从SVN迁Git的工作。做研发效能的金融科技甲方也在执行从SVN迁Git的过程中。
但是,在招标采购Git管理工具后做部署实施环节上,甲方客户对SVN和Git有一些错误的理解。例如,由于缺乏对Git的了解,甲方的研发团队给Git提的需求还是以SVN的视角提的,但Git是分布式的,跟SVN有本质的区别。因此金融科技在迁Git的时候,甲方同学无论是一线研发同学还是负责项目的同学,首先得基于Git定义好方法流程再开始使用工具。
在金融科技里,SVN、Clear Case的做法都是以文件的形式放到另一个分支上。在Git中也有这样的行为叫做Cherry-Pick,把一个版本从一个分支拿到另一个分支,但是Git的实现方式并不是以文件的版本进行存储的。以使用SVN时的思维方式来给Git工具提需求是不太合理的。实践得到的经验是要和客户沟通,给客户提供一个基于Git的解决方案,帮助其实现最终目标。
工蜂根据银行客户的需求,加强了文件、文件夹、分支的权限,限制了文件类型提交,开发了在线Cherry-Pick和统计分析功能。这些是企业级别在迁移配置管理工具时的一些特别需求,也是过去做不到但现在国内厂商能做到的。在过去的SVN时代,大部分金融科技都会有配置管理工程师,配置管理不仅是单一代码仓库的管理,而是整体的批量的仓库管理。
金融科技和互联网对代码质量的认知是不一样的。互联网关注研发效能,利用自动化的检查工具来保证代码质量。并且,代码的质量是由开发人员保证而不是由测试人员保证。
互联网的代码准入的评审分为机器评审和人工评审。目前,腾讯工蜂也在完善代码准入流程,目标是在Q2完成并上线,标准化代码准入环节。但金融科技目前还没有统一的代码准入标准,代码质量是由测试人员保证,代码扫描工具仅个别团队搭建使用。
提高代码质量管理的准入能前移质量风险,从而提高整体的研发效能。DevOps的特点和做敏捷开发的目标是Fail Fast(越早失败越好)、Fail Early(越快失败越好)、Fail Often(经常失败)、 Fail Safe(安全地失败)。
3.CI/CD
在互联网,CICD不仅是自动化工具,还是一个流程工具,串联开发、测试、运维等流程。但在实践中,一站式全流程的DevOps流水线很难落地金融科技,因为很难找到负责将三四条独立的流水线串成一条并设立标准的人。金融科技独特的组织架构决定了很难将开发、编译、提测、验收、测试和执行放到一条流水线上协作开发。
在研发实践上,把整个流程可视化,使整个流程全自动化,把所有的决策在一条流水线上执行,这就是DevOps,金融科技在这一方面还需在DevOps理念的普及,组织结构的支撑、自动化工具的落地方面进一步加强。
4.度量改进
互联网做度量的目的是以效能改进为最终目标,金融科技则是为了做目标管理和评分。互联网对效能改进考核的要求较低一些,因此收集到的数据也会更多更真实准确。
一旦度量指标变成考核,提供的数据就有可能做假,但如果只是为了度量改进,提供的数据就会更准确真实。互联网以工程数据为准,而在金融科技企业中,很多数据是来自于手填,准确度不高。并且金融科技对数据的数量要求高,因此就需要更多的字段、流程节点,效能也就比较低。目前的自动化度量落地金融科技的实践已经得到了比较好的反馈,比如度量外包团队的CR能力、单测能力以及开发能力。
互联网行业与金融行业
研发管理、工程效能发展趋势
金融科技和互联网公司在DevOps方面的管理方式和工程实践、工具方面都是相向而行的。互联网应该多学习金融科技在项目管理、科学管理等方面的实践经验,金融科技则应该学习互联网的敏捷、代码管理、效能度量的整套研发体系。
近日,TAPD也上线了JIRA数据迁移、Confluence数据导入的功能,支持金融和其他行业的企业更平稳顺滑进行数据迁移,感兴趣的同学可以前往《服务升级!Jira&Confluence数据导入更方便》一文了解详情。
虽然国内的效能产品和国外领先的产品还有一定差距,但是我们坚信坚持做就能做得更好。相信国内的研发管理工具平台能更好地开发,更上一层台阶!
推荐阅读
点击图片即可阅读原文