丰田的精益系统由两大支柱构成。一为及时生产,即以拉动方式、小批量均衡化的生产,追求零库存。一为自动纠错(或称内建质量),即将质量融入产品的设计与生产中,而非靠事后检验来提高,其核心思想是上游工序必须保证绝不传递瑕疵品。关于拉动生产,前文已经提了很多,鉴于质量问题的极端重要性,本文专门探讨下这个内建质量体系。
首先,质量不应该是通过检验(测试)来提高的,我们仅仅用检验将不合格品找出来,并且根据检验结果来间接衡量质量情况而已,常见的检验方法有如下两种:
1.最终检验:去数一下在生产的末端有多少件不合格品,然后加上流入客户的不合格品,这样可以得到一个不合格率,也就是不合格品在全部产品中所占的比例。但是这个数据不能够用来说明过程,不能发现问题在哪里。这项指标在软件业中称为泄漏故障,但泄漏故障数只反应了软件对外部暴露出来的质量情况,无法反映出软件开发过程中的浪费。
2.清点内部报废:清点在生产中丢弃和返工的不合格品。更精确一点,找出生产的每一个步骤中可能出现的问题,我们称之为缺陷机会。使用这种方法,我们才能找出问题并将他们分等级,计算出每一百万件产品中的缺陷率。这样才会对工厂的生产能力有比较准确的认识。比如菲尔的工厂采用红箱子机制后,头一天就发现了20%的不合格品(一天内总共装配35个断路器,其中有8个需要返工),以前这些都是员工自行在修理,结果掩盖了深层次的设计问题。这条在软件业中就是技术债务、内部泄漏(代码交给项目组测试内测后才发现的问题)、CI静态检查或者自动化测试发现的问题,关注这些才能对软件的内在质量,以及项目软件开发流程中的问题有更深的了解。
其次,为做到内建质量,需要满足三条:
1.内建问题识别能力:任何时候,工人和机器都要有识别和检查错误的能力。对应在工厂中采用实践为红箱子策略:找一些红色塑料箱,然后把他们发给生产线上的每一个工人。同时告诉他们,不允许返工,如果发现了任何不合格品,不管是零件,还是来自于上一个工位的中间产品,都要把它放到红箱子里面去。
2.问题可视化与及时处理:对于出现的任何错误,需要设法将其及时暴露出来,然后立即进行处理。对应实践为安灯(Andon)系统:每个工位旁有一根绳子,称为安灯绳,如果工人发现问题,将其拉动,一个信号灯就会亮起来,灯上数字对应着进行作业的工位,然后现场管理人员(一般是领班和负责的工程师)就会立即到该工位去确定问题,并协助解决问题。在这个系统中工人做的是发现问题并寻求帮助。如果管理人员能快速有效的解决问题,生产线就不会停下来,这样管理人员和工人共同承担了责任。
3.一条需要严格执行的纪律:当一个不合格品被发现的时候,不管是什么原因,如果一个生产周期里问题无法解决,必须停止生产线进行调查。
这三项要求环环相扣,对应在软件业中,就是,一:开发人员需要有质量意识,和足够的技术水平能识别代码风险,对于发现的技术债务需要将其显示暴露出来,这能让团队及时了解哪个环节出现了风险;二:需要有持续集成系统(CI),并且尽可能把代码审查,自动化测试等功能加入,并且把CI检查结果可视化给整个项目团队;三:严格的CI纪律,只要CI失败,其他人都必须停止合入代码,直至问题修复。在整个体系中,这第三点至关重要,有些人觉得,有错发现就行了,问题又不是我引发的,为什么需要我也停下来? 我觉得至少有如下几个原因:首先,当问题出现后,其他人再提交新代码,可能在前一个问题未解决前就带入新的故障,最后导致整个系统的问题解决时间延长;其次,停止生产线对及时解决问题是一个正向压力,这种压力会促使代码提交者更关注新提交代码的质量(避免新提代码破坏CI),同时会尽力提升代码的提升次数同时降低每次代码提交的数量(小步提交,即使出现问题也能在很短的时间内解决),当大家都采用小步提交技术后,又会进一步促进CI系统的完善和提升(加快CI的构建速度,缩短检查间隙),从而触发一个正向循环;第三,坚持这种纪律也是在向整个项目团队宣贯质量第一的思想,不能因为赶时间而在质量上妥协,只有这样才能真正降低项目的维护成本。而且,从另一个角度看,如果项目虽然口头上天天喊质量第一,但在实际操作时,却连CI纪律都无法贯彻,站在员工这边,会怎么理解这个质量口号呢。
最后,在内建质量三项基本要求以外,我们还需要注意一些和人相关的问题,才能保证质量建设能够持续改善下去,这些问题包括:
1.提升工人的问题识别能力,需要在系统思考上下功夫,让工人把缺陷和上游工位的工作联系起来,从整体上对好和不好的产品有明确认识。并能从以下几个方面去找问题:
怎么知道所做的工作是正确的?
怎么知道没有为下游工位制造问题?
碰到问题的时候,如何解决?
2.需要改变工人不关心质量的现状。这里至少需要有一个机制让大家可以提建议,而且管理层需要迅速的回应大家提出的建议。在回应建议时,有两个注意事项。一是时间,不能超过一周,超过了,提建议者的热情就会冷却。二是内容,回应并不是一定要求在这么短的时间内解决问题,员工们真正需要的是管理层去和他们沟通。也即,"你必须把自己大部分的时间奉献给现场和员工,否则,员工不会把他们奉献给公司。"