「效能(Effective)」如何只能从企业外部评价,而不是企业内部。企业内部只有成本要素,所以,使用「效率」这个词可能更加贴切一些。

作者:乔梁

来源:《持续交付2.0》第三章

现代管理学之父彼得·德鲁克曾告诫我们:

「对所有的企业来讲,我们都应该记住的最重要的一点就是:结果只存在于企业的外部。……在企业的内部,只有成本。」

也就是说,在我们创造的产品或服务真正被用户所使用之前,我们只能衡量成本,预测价值。

只有产品或服务被用户消费,并且最终能够变现(即:有客户为之付费,无论是谁),才能证明其价值的存在。

1

狭义的研发效能就是指

快速验证环的转速

当我们通过探索环对最小可行方案达成共识以后,要借助“验证环”的快速运转,才能将其交付到用户(客户)手中,从而得到真实且可靠的反馈,以验证之

决定「快速验证环」运转速度的有两个要点:其中之一就是由「价值探索环」中得出的最小可行性解决方案的大小和复杂性;另一个就是本文要讨论的「科学验证环」自身的运转速度,如下图所示:

为了提升其运转速度,我们需要遵守以下四个基本工作原则

验证环的工作原则主要包括质量内建、消除等待、重复事务自动化、监测一切。

很多软件开发方法已为我们提供了诸多优秀实践,消除生产过程中的浪费。

然而,有一些实践可能会超出团队当前所具备的能力。此时,组织领导者应该制定并实施相应的能力提升计划。

2

第一个工作原则

质量内建( Build Quality In )」

以「瀑布开发方法」为代表的传统软件开发方法,虽然强调每个阶段的输入输出质量,但是在项目前期只是产出大量的详细文档,却没有开发出可以运行的软件。直到进入后期集成测试阶段,才将所有代码模块放在一起运行起来。

这种做法导致发现软件问题的时机较晚,缺陷被发现之后的修复成本也比较高。《代码大全2》一书,对于缺陷产生的成本也有如下的表述:

「发现错误的时间要尽可能接近引入该错误的时间。缺陷在软件食物链里面呆的时间越长,它对食物链的后级造成损害就越严重。由于需求是首先要完成的事情,需求的缺陷就有可能在系统中潜伏更长的时间,代价也更加昂贵。」

详见以下引用图表,从表中数据可以看出“引入缺陷的时间和找到缺陷的时间”与“修复缺陷成本”之间的成本倍数关系。

缺陷引入阶段、发现阶段与修复成本之间的关系

这种企图通过后期大规模检查达成软件质量目标的做法,恰恰与戴明博士的质量观点背道而驰。戴明博士是世界著名的质量管理大师,他提出的质量管理“十四条”是全面质量管理的重要理论基础。

其中的第三要点如下:

「我们无法依靠大批量的检验来达到质量标准。依靠检验提高质量已经太迟了,且成本高而效益低。正确的做法,从生产过程的开始之处,就做到质量内建。」

「质量内建」就是从生产过程的第一个环节开始,就要注重产出物的质量,并且在每个环节中都要开展质量保障活动,消除因质量问题导致的返工及次品率,以此降低最终的质量风险,保障进度。

3

第二个工作原则

「消除等待」

在第一章中,我们讨论了精益思想关于“浪费”的定义,显然“等待”就是不必要的一种浪费。在日常工作中,我们经常会遇到一些等待,而这些等待已司空见惯,大家习以为常。然而,提升效率的最有效方法也许就是消除各环节的等待。

1、通过「拉动(Pull)」让价值流动起来

当管理者把重心放到「人」的效率上时,很容易出现的现象是:「所有人都很忙,但产出并没有提升」的情况。这是局部优化的结果。此时通常会出现中间产物堆积等待现象,如下图所示。

由于下游环节的产能相对不足,导致中间产物流动不畅。而就是此时,所有人可能都在满负荷工作。

开发人员继续开发更多的需求,对团队的整体产出并没有直接帮助,只会增加测试环节的压力。而压力过载后,可能会引发更多的问题,比如开发人员在质量尚不确定的代码上继续开发更多的功能,可能导致更多的缺陷。要想解决这个问题,需要将管理关注点先从「人」转移到「物」上。

正确的做法应该是提升下游「瓶颈」的处理能力,让更多的需求交付出去。例如,可以通过增加专职测试人员的方式,扩大测试环节的通行能力。

但是,我们很难通过增加人手的方式持续保持各环节输入与产出平衡的理想状态。此时还可以通过「临时减少开发人员,增加测试人员的方式,即:将团队部分开发人力调整到测试环节」来临时扩大测试环节的能力,达到整个系统的最大化产出。

《持续交付 2.0 》第 15 章 “小团队的逆袭之旅”所讲述的实际案例中,就使用了这种临时手段来临时提高测试环节的处理能力,保证团队的产出。

当然,这是一个临时性的解决方案。如果从整个系统的角度出发,应该根据下游的生产能力来确定上游的生产速度,即下游环节拉动上游的需求。一旦等待队列中出现空位,立即从上游填补,以此类推。

「为了达到这样的流畅效果,对于管道内的工作单元,其颗粒度应该均匀化」。也就是说,在构建环节,通过需求分解方法,将大需求分解成多个工作量相近的小需求,才能让工作变得平滑顺畅。就像在高速公路上,如果只有小轿车时,通行能力比较容易提升,但当大货车与小轿车混行时,道路的通行能力就会下降。

团队的瓶颈通常都是动态变化的。既使我们做了需求分解工作,也不能保证在任何时刻,整个系统都是平滑运行的。怎么办呢?

我们还有另外一种解决方案,那就是:利用开发环节暂时过剩的人力来建设工具平台,提升下游的基础能力,使得在不增加测试人力的情况下,永久提升团队整体产能。当然,通过提升人员整体技能水平也能达到同样的目的,如下图所示。

开发工具、提升能力、或增加瓶颈人力后,整体吞吐量提升

2、任务自助化

企业应该在工具平台建设方面改变一下建设思路,即:运用先进的生产技术,使得环境部署、数据统计这一类事务性操作不再依赖「专家型」人才,而是让每个人在其需要时都能够「自助完成」。那么每个人都可以流畅的工作,而且“专家型”人才被“打断工作”的次数也会减少。

例如,对于微服务架构的软件服务来说,如果开发人员自己无法随时搭建一套用于微服务开发调试的环境,却需在测试人员的帮助下才能搭建完成,这会令开发人员的高效工作状态被打断,同时也会打断那个提供帮助的测试人员的工作。而对于开发人员手上的工作任务来说,也只能停下来,等待测试人员搭建完调试环境才能继续。

开发人员为什么自己不能一键就搭建好自己所需的调试环境呢?这样不会打断任何人的工作,浪费任何时间。

当然,还有很多类似的场景。比如,产品人员需要一些数据统计需求,只能向数据分析师和数据工程师提出需求,由他们先排期,再去编写脚本,最后执行脚本把数据捞出来。这也会出现等待。

4

第三个工作原则

「消除琐事」

在软件研发过程中,还有很多后工且重复性的工作,即「琐事」。比如,搭建测试环境,以及应用的发布部署与发布等。在交付频率不高的情况下,这些活动并不会占用很多的工作时间。

然而,随着验证环运转速度的提高,意味着在固定的时间周期内,软件的发布频率提高,这种事务性工作的固定成本所占比例也会越来越大。当原来每个月才发布 1 次,而现在每个月发布 8 次,那么这些固定成本就提升 8 倍。而且,这种事务性工作多具有手工且机械重复性质,不应该让「人」来完成,而是应该交给善于做这类重复性工作的机器。

因此,我们必须通过优化流程和自动化措施,有效降低这些固定的事务性成本,同时避免不必要的人为操作失误,才能使其具有可持续性。《持续交付 2.0 》第 16章介绍的「研发推动的DevOps」案例中,该团队将「每三个月发布 1 次」提高为 「每两周发布 1 次」,就遇到了频繁发布所带来的成本问题,最终也是通过自动化方式解决的。

5

第四个工作原则

「监测一切

当软件在生产环境运行之后,我们需要能够及时准确地收集并分析数据。

对生产系统的监测有两个目的:

  • 应用健康:确认软件的确在正常运行,一旦发现异常,我们可以及时采取措施,纠正错误,以免影响用户的使用。

  • 业务反馈:要及时得到有效的业务数据,验证我们在探索环中提出的假设。

对于第一个目的的监测,可以称为「应用健康监测」。一般来说,传统运维领域的多数系统监控软件,都是围绕这方面展开的,例如最基础的软硬件系统健康(包括CPU、内存、存储空间、网络连接等等)。再进一步的应用健康监控则是应用自身的运行状态,如服务响应延迟时间、页面异常、缓存大小等。

对于第二个目的的监测,可以称为「业务健康监测」。其主要是针对业务指标的监测。虽然有一些基础性的日志收集整理展示平台能够展示一些业务指标。但是对于如何定义业务监控指标,通常需要业务团队根据自身的业务上下文和需求进行定制。

只有通过全面的系统监测,并在第一时间内发现异常,才能够及时应对,以确保业务可持续性发展。

6

小结

快速验证环以快速高质量交付为主,主要包括四个环节,分别是(1)构建;(2)运行;(3)监测;(4)决策。

在持续交付2.0「识别并消除一切浪费」理念的指导下,验证环的四个工作原则分别是:(1)质量内建;(2)消除等待;(3)消除琐事;(4)监测一切。

只有坚持这些指导原则,不断发现并消除工作中的浪费,才能够提升验证环的运转效度,加快对最小可行性解决方案的验证。

如果你想了解更多关于《持续交付 2.0》和 DevOps 相关内容,请点击下方链接购买。

提升研发效率的基本工作原则相关推荐

  1. 提升研发效率 保障数据安全——阿里云宣布数据管理DMS企业版正式商业化

    摘要: 阿里云数据管理DMS企业版,作为数据管理产品大家族里的新成员,于2017年11月开启公测,今年1月底正式发布商业化版本. 作为业界领先的面向企业的数据库DevOps解决方案,DMS企业版旨在帮 ...

  2. 去哪儿网——项目管理平台助力研发效率提升

    点击关注 异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 Tips 参与文末话题讨论,即有机会获得异步图书一本. 作者介绍:去哪儿网研发项目管理平台负责人,曾先后任职于华为终端公司质 ...

  3. 深度解读 | ElasticDL 深度学习框架简化编程,提升集群利用率和研发效率的秘诀...

    文 / 蚂蚁集团, ElasticDL 主力工程师 齐俊 ElasticDL 是一个基于 TensorFlow 2.x 和 Kubernetes 的开源的分布式深度学习编程框架.2019 年秋天的 G ...

  4. 测试开发:提升测试效率都有哪些具体手段?

    在大部分研发项目经理心中,进度通常往往会放在第一位,其次是成本,最后是质量,当然人员队伍也最好要稳定.天下武功,唯快不破:进度 > 成本 > 质量 > 人. 这个说法并不是绝对,当然 ...

  5. 抖音研发效率负责人:抖音能做到每周迭代,离不开飞书项目

    飞书推出的项目管理工具"飞书项目",自今年5月正式发布以来,已签约100余家企业客户,包括理想汽车.安克创新.Keep.猎聘等各行业的先进企业. 飞书项目支持100人以上的大型团队 ...

  6. 大课深度复盘、解密研发效率之道 | 第42届MPD工作坊成都站日程公布!

    互联网时代,随着区块链.大数据.人工智能等技术的快速发展,产品迭代速度飞快.在这样的市场环境下,提升研发效率.降低研发成本,同时支撑业务的快速发展,是每个企业都追求的目标之一. 大中型企业如何快速转型 ...

  7. 思维方式-《六顶思考帽》书中的精髓:通过在同一时间只使用一顶思考帽的方法,可以解决思维混乱等问题,从而提升思考效率。

    <六顶思考帽>书中的精髓:通过在同一时间只使用一顶思考帽的方法,可以解决思维混乱等问题,从而提升思考效率. 日常工作生活中,我们常常会遇见这样的情况:会议又长又没重点.不同部门之间争执不停 ...

  8. MPD软件工作坊北京站:技术创新与研发效率带来的前沿思考

    在新技术层出不穷.不断迭代的当下,多数企业都在面临技术能力提升,认知升级等问题.面对技术企业的研发环节,为什么你的效率总是提不上来?都在寻找创新的技术领域,为何别人总能抢占先机?提升自己的研发竞争力, ...

  9. 电商直播平台如何借助容器与中间件实现研发效率提升100%?

    作者:鹿玄,阿里云解决方案架构师 前言 直播带货是近期发展非常迅猛的一种新的电商模式.构建一个电商直播平台从技术角度上大致可以分为视频直播服务.CDN.前端(H5/ 小程序).大数据.以及各种业务后台 ...

最新文章

  1. FPGA的设计艺术(12)使用parameter构建可重用的逻辑设计
  2. 多少行数_技术分享 | MySQL:查询字段数量多少对查询效率的影响
  3. php数组操作之合并相同键名的值,排序,排重,去空值等
  4. bloc+rxdart解决代码混乱大问题
  5. 全球及中国医药销售外包(CSO)产业营销创新模式市场格局分析报告2022版
  6. centos php编译安装mysql_CentOS手动编译安装Apache、PHP、MySQL
  7. wxWidgets:wxMutex类用法
  8. boost::integer_traits用法的测试程序
  9. 十六、Struts2文件上传与下载
  10. Android之动画精讲一:从setTranslationX谈属性动画和view动画的区别
  11. 你一定要知道的敏捷规划工具:影响地图
  12. sql server 架构_在SQL Server中引入架构文档
  13. azure 入门_Azure Cosmos DB入门
  14. java接口之双端队列
  15. 洛谷 P3152 正整数序列
  16. r型聚类典型指标_SPSS聚类分析经典案例分享
  17. PID算法基本原理及整定实现方法
  18. 微信防撤回(.dll补丁形式)
  19. 薄膜表面瑕疵在线检测系统实时检测出表面瑕疵的具体位置
  20. 导航电子地图数据存储标准NDS中文版和英文版

热门文章

  1. 多活分布式数据中心如何实现DNS域名解析和负载均衡?
  2. 高级程序猿是如何练成的
  3. 阿里云招聘 | 遇见offer之就要圆你的大厂梦
  4. 一张图看明白电信云解决方案架构
  5. pdf文件怎么修改文字
  6. 洛谷 P2357 守墓人
  7. 2022 年 2 月产品大事记
  8. 《超能陆战队》人工智能离我们还有多远
  9. 基于SSM实现高校教材管理系统
  10. element-ui 的 el-input-number的默认值设置为空