快速验证环

现代管理学之父彼得·德鲁克曾告诫我们,“对所有的企业来讲,我们都应该记住的最重要的一点就是:结果只存在于企业的外部。……在企业的内部,只有成本。” 也就是说,在我们创造的产品或服务真正被用户所使用之前,我们只能衡量成本,预测价值。只有产品或服务被用户消费,并且最终能够变现,才能证明其价值的存在。

当我们通过探索环对最小可行方案达成共识以后,要借助“验证环”的快速运转,才能将其交付到用户(客户)手中,从而得到真实且可靠的反馈,以验证之。快速验证环的运转速度也由两部分决定:一是探索环中得出的最小可行性解决方案的大小和复杂性。

验证环的目标与关键环节

验证环的目标就是借助各种方法与工具,让质量可靠的解决方案以最快的速度到达客户手中,从而收集并分析真实的反馈。
质量与速度是验证环的关键,然而,它们却常常被认为是互斥的,即:要想交付质量好,那么交付速度就会慢;反之亦然。然而,Puppet Labs发布2017年DevOps现状调查报告结果显示,与低绩效IT组织相比,高绩效IT组织可以同时实现这两个目标,即:发布质量好而且频率高。持续交付1.0在这方面发挥了巨大作用,如质量内建、小批量交付、自动化一切重复工作等等。

验证环的主要工作内容就是以最可靠的质量和最快的速度,将最小可行性解决方案从描述性语言转换成可运行的软件包,并将其部署到生产环境中运行,准确收集相关数据并呈现,以便团队根据相关数据做出判断和决策。与探索环一样,它也包含四个环节,分别是(1)构建;(2)发布;(3)监测;(4)决策。

验证环的工作原则

验证环的工作原则主要包括质量内建、消除等待、尽量并行、监测一切。

质量内建

戴明博士 是世界著名的质量管理大师,他提出的质量管理“十四要点”是全面质量管理的重要理论基础。其中的第三要点如下:


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

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

消除等待

“等待”就是不必要的一种浪费。在日常工作中,我们经常会遇到一些等待,而这些等待已司空见惯,大家习已为常。然而,提升效率的最有效方法也许就是消除各环节的等待。

一、通过“拉动”让价值流动起来

当管理者把重心放到“人”的效率上时,就容易出现所有人都很忙,但产出并没有提升的情况。此时通常会出现中间产物堆积等待现象,如图3-2所示,由于下游环节的产能相对不足,导致中间产物流动不畅。此时,很可能的情况是所有人都在满负荷运转。在这种情况下,假如开发人员继续开发更多的需求,对团队的整体产出并没有直接帮助,只会增加测试环节的压力。而压力过载后,可能会引发更多的问题,比如开发人员在质量尚不确定的代码上继续开发更多的功能,可能导致更多的缺陷。要想解决这个问题,需要将管理关注点先从“人”的身上移动到“物”上。

二、任务自助化

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

重复事务自动化

在软件研发过程中,还有很多重复性的工作。比如搭建测试环境,回归测试,应用部署与发布等。在交付频率不高的情况下,这些活动并不会占用很多的工作时间。然而,随着验证环运转速度的提高,意味着在固定的时间周期内,软件的发布频率提高,这种事务性工作的固定成本所占比例也会越来越大。例如,原来每个月才发布1次,现在每个月发布8次,那么这些固定成本就提升8倍。而且,这种事务性工作多具有机械重复性质,不应该让团队成员来完成,而是应该交给善于做这类重复性工作的机器。
因此,我们必须通过优化流程和自动化措施,有效降低这些固定的事务性成本,同时避免不必要的人为操作失误,才能使其具有可持续性。

监测一切

当软件在生产环境运行之后,我们需要能够及时准确地收集并分析数据。对生产系统的监测有两个目的。

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

二、业务健康监测。即:及时得到有效业务数据,验证我们在探索环中提出的假设。