如何提高团队的研发效率?

简介:   研发效率是在现代企业都关注的,注意是因为靠谱的工程师是有限的,而且软件工程师的人力成本较高,时间成本更高。在大多数情况下,软件工程是一个团队活动,通过协作实现突破。好的想法从不匮乏,但高速执行却不那么容易。高效团队会习惯于更高的标准。当研发速度停滞时,人们会创造性地寻找重建高速产出的方法,但是如果长时间停滞,也会造成人员的流失。  如何提升研发效率呢?或者说,研发速度是否可控呢?  速度是位移和时间的函数,很多时候,位移方向的目标更容易被忽视。然而,项目失败的最常见原因是团队构建了错误的东西。“绕树三匝,何枝可依。”,实际上,方向错了,停止就是进步。

  研发效率是在现代企业都关注的,注意是因为靠谱的工程师是有限的,而且软件工程师的人力成本较高,时间成本更高。在大多数情况下,软件工程是一个团队活动,通过协作实现突破。好的想法从不匮乏,但高速执行却不那么容易。高效团队会习惯于更高的标准。当研发速度停滞时,人们会创造性地寻找重建高速产出的方法,但是如果长时间停滞,也会造成人员的流失。

  如何提升研发效率呢?或者说,研发速度是否可控呢?

  速度是位移和时间的函数,很多时候,位移方向的目标更容易被忽视。然而,项目失败的最常见原因是团队构建了错误的东西。“绕树三匝,何枝可依。”,实际上,方向错了,停止就是进步。

  确定方向本身就是很困难的事,例如预测产品或市场匹配度等。通常需要关注客户的声音,成功不是提供一个特性,而是学习如何解决客户的问题。理想情况下,我们希望倾听客户的意见,满足他们的需求,同时只发布他们最感兴趣的那20% 。

  即使那些所谓具具远见的创新者,也很难预测客户到底需要什么。由于在选择方向时需要一些猜测,因此系统的灵活性和可扩展性就变得至关重要。灵活性可能表现为开放性,最大限度地提高试验的速度,减少对给定计划的承诺,快速发展的产品,以及在决策中区分可逆和不可逆的功能特性。尽管,可扩展性使犯错的代价比想象的要低,而“time to market”则肯定是昂贵的。

  有很多人尝试直接观察软件团队的研发效率,但众所周知,这样的测量是非常困难的。为了弥补这一缺陷,企业会使用员工参与度来调查与研发效率相关的问题。这样的调查往往局限于对员工参与度和与公司目标一致性的高层次衡量,这也是OKR模式的辅助手段。利用这些调查来决定是否实现了高速迭代,询问工程师实际花费了多少时间来设计和编写代码,工具是否充分,过程是否有效,以及技术债务的影响等。

  在着手进行这类问题的调查之前,一般会承诺根据调查结果采取行动,以便这些行动对目前的调查和今后对这类调查的答复产生积极影响。

  可扩展性可以通过自治团队来改进,这些团队围绕着有良好边界的特定责任区形成高度的内部凝聚力。团队所负责的服务彼此公开API; 在理想情况下,不存在跨团队沟通,因为与业务逻辑交互所需的全部都是API,而业务逻辑是业务团队的责任。

  服务的实现细节通常是不共享的,并且不存在对远程服务所依赖的数据存储进行私有访问。即使服务需要不前向兼容,API的新旧版本仍然通常会在重叠的一段时间内可用,因此业务可以在旧版本被弃用之前进行迁移。

  服务的拥有者可以按照团队自己的速度发展并发布变更,独立于可能发生的其他变更,并在时间上与其脱钩。这就是所谓的“无许可创新”。然而,确定责任领域之间的接口是具有挑战性的,这些接口会不可避免地随着时间的推移而演变,完美的自治永远是虚幻的。

  一组软件服务不断进化,就像一个鲜活的生命。发布新的接口,整个服务可能分离或合并,单个服务可能经历重大的重新设计或被弃用。理想情况下,内部团队拥有高度的自治,在组织结构上与“高内聚、低耦合”的软件设计原则相一致。

  基于康威定律,这些团队提供的服务应该是独立的。理想条件下,不需要对所依赖的服务进行任何更改,任何团队就可以实现80% 的任务。在剩下的20% 中,通过特定的接口实现。

  在符合研发路线图的情况下,服务拥有者会同意那些有意义的变更,但是在路线图上的优先级较低。这时,业务方可能会提供一个“援助团队”来实现所请求的更改。援助团队由来自业务团队的开发人员组成,这些工程师临时加入拥有服务的团队。设计、测试、编码和发布都需要服务拥有者的逐步批准; 当完成更改后,援助人员将返回到他们原来的团队。这个方式的一个附加价值是交叉授粉,在团队之间缺乏沟通的情况下尤其有效。

  产品开发的敏捷方法可以迭代和速度之间做平衡。

  即使在需求快速变化的世界里,团队井然有序的积压工作也是可以的,只要最新版本用于sprint即可。团队明确承诺从待办列表中完成一系列任务,而作为回报,则是团队获得了一个不可中断的受保护时间窗口,这是一个尽可能快速工作的冲刺。在完成这个不间断、无波动的幸福周期之后,sprint 的成果将展示团队履行的承诺。

  在下一个 sprint 计划会议继续之前,团队将进行回顾。这是一个内省会议,其中团队评估其达到的速度,并确定在随后的sprint中提高速度的方法。一个诚实的回顾,建立在信任和自我意识的基础之上,可以找出在进入下一个sprint之前如何“提高研发效率”。

  专注是实现高效研发的必要条件。

  团队希望专注于解决客户的问题,高速实现所责任的业务逻辑。他们不希望不能控制自己的团队。可靠的基础架构和基础设施是无许可创新的助推器,更是是软件架构转变的推动者。勿在浮沙筑高台,不为繁华易匠心。

  一个高效团队注重培养一种文化,这种文化鼓励团队成员高效交付成果。这是一种自我强化,具有高效文化的团队往往能够吸引到高手。重要的是,要假定团队成员是有才华的,与使命保持一致,并且希望高效工作。文化中对研发效率产生积极影响的方面包括: 多样性和包容性教程、谦逊、信任、乐于学习、愿意带着“紧迫感和重点”前进、自主性以及集体承诺取得成果的意愿等等。

  为了实现高效研发,有必要投资那些使工程师能够高速工作的系统,并最大限度地将他们的时间花费在自己的文凭领域。显而易见,出发点是构建、集成和部署代码的工具和过程,以及那些在代码发布后用来运营的工具和过程,确保代码满足可用性、可靠性、性能和安全性的要求。

  虽然基于服务的体系结构可能带来自治性的好处,但跨服务边界的故障可能更难排查。如果日志采集、传输、监控、报警和问题跟踪在各个服务之间都是通用的,那么就会很有帮助。可观测性的能力应能够进行分布式跟踪,便于精确检测关键信号和指标,并逐步细化排出空间,从而精确找到问题的根本原因。

  为了提高创新速度,需要积极寻求降低实验成本,以便能够做更多的实验。高实验率可以促进更频繁纠错。但实际上,高比率的实验可以被看作是大量丢弃的想法、文档垃圾、死代码和失败,造成资源的大量浪费。

  成功的团队拥抱失败,是指做出的大多数错误选择是容易逆转的。失败,如果处理得当,可能是一个成长的机会。错误并不是必要的罪恶,是做新事物的必然结果,可以被看作是有价值的。

  但是,我们客观地认识到了自己的错误么?!

  尽管大家都觉得软件工程越来越重要,但是太多的软件项目最终还是偏离了目标,并且超出了预算。有效的交付需要对所要的东西有一个完美的视野,同时要朝着那个视野坚定地前进,对所有的干扰视而不见,这可能是一个长期存在的误区。提高研发效率的一个更可靠路径是优化研发速度,提倡高效文化,开放的实验和学习,自治而敏捷的组织,不忘初心。

目录
相关文章
|
2月前
|
资源调度 数据可视化 项目管理
项目管理系统在制造业的应用,提高生产效率的秘诀与解决方案
制造业面临产品交付挑战,项目管理系统成为提升效率的关键。Zoho Projects提供解决方案,包括基础信息管理(如门户配置、用户管理、权限设置和自动化)、任务管理(规范流程,支持模板和文档导入导出)和资源调度(分配人员,可视化展示资源使用)。该系统助力企业优化作业效率,已被超过20万家公司采用,并获福布斯认可。
34 3
|
12月前
|
搜索推荐 测试技术
持续提高软件研发团队效能
提高软件研发团队效能是一个持续的过程,想要快速提高效能的实践几乎都是以失败告终。
128 0
|
9月前
|
存储 监控 架构师
十年业务开发总结,如何做好高效高质量的价值交付
软件交付是一个非常复杂的过程和体系,需要保障好每个阶段的质量和效率才能保障最终的质量和效率。本文将尝试从需求交付的前、中、后三个环节来阐述一下如何做高效高质量的价值交付。
142230 2
|
Cloud Native 前端开发 IDE
「技术人生」第10篇:如何做研发效能提升(即指标体系建设过程回顾)
本文作者将给大家提供一些简单的容易实操的方法,能够让所有人都知道什么是效能的提升,如何提升个人的效能,如何提升团队的效能。
1440 2
「技术人生」第10篇:如何做研发效能提升(即指标体系建设过程回顾)
《研发效能提升36计-敏捷协作篇:束水攻沙,持续加快产品交付速度》电子版地址
研发效能提升36计-敏捷协作篇:束水攻沙,持续加快产品交付速度
359 0
《研发效能提升36计-敏捷协作篇:束水攻沙,持续加快产品交付速度》电子版地址
|
数据挖掘 BI 持续交付
看懂这5幅图,研发效能分析和改进就容易了
作为 CTO 或企业管理者,我们如何去了解和衡量研发团队的研发效能呢?作为 PMO 和效能负责人,我们该从哪几个维度来回答关于研发效能的问题呢?如何通过效能数据分析,帮助企业管理者透明化研发效能水平和变化趋势,分析效能问题根因、指导改进行动、衡量改进效果。
2124 0
看懂这5幅图,研发效能分析和改进就容易了
|
API
打造高效交付团队心得
  我 15 年前创办第一家公司,到现在我还是不怎么管理。我怀疑很少有人能做到这一点。在我的公司 AngelList,我们需要的是一个自我管理的团队,并产出代码。   我们的做法如下。   保持小规模团队。所有的人都是干活的,没有指挥家。绝对没有中层管理人员,所有业务拓展都是通过 API 来完成。   外包一切非核心工作,克制住赚取最后一个铜板的冲动,老板也要做客户服务工作。
230 0
|
项目管理 持续交付 前端开发
为什么你的高效交付,却没有好的业务成果?
11月中旬,作者在 TOP 100 案例和人人都是产品经理的两次大会上分别进行了两场关于价值交付的分享,结合分享后的反馈焦点,立足业务整体交付的价值最大化,特产此文。
1992 0
为什么你的高效交付,却没有好的业务成果?
|
监控 搜索推荐 测试技术
团队协作效率低下怎么办?阿里文娱PMO这么做
在日常工作中,作为产品技术P(鼓)M(励)O(师),经常会收到来自团队五花八门的问题求助, 比如“业务规划不是很了解”、 “客户交付周期比较长”、“约定的里程碑达不成”,这些问题相信大家都有同感。阿里文娱项目管理专家王春丹将和大家聊一聊这些问题的解法,以及如何帮助组织协同提效。
437 0
团队协作效率低下怎么办?阿里文娱PMO这么做
|
运维 Java 测试技术
在创业公司,不懂运维的程序员如何兼顾公司的运维工作
我是一名创业公司的Java开发工程师,公司没有运维团队,由程序员负责代运维。
5562 1