今年5月,参加了林锐博士和华章图书组织的免费讲座“如何管理软件企业”。林锐博士身兼多职,是公司负责人也是企业咨询师,见多识广又经验丰富,所言精要皆切中要害。在谈到企业学习时,他提到除了学习先进企业和行业规范,更重要的是学习本企业发展过程中的经验教训。其要点是“不二过”,即所犯过的错误绝不再犯第二遍。
“不二过”对于软件开发者而言不是新概念。Scrum要求在每个迭代(iteration)结束后,实施反思(retrospection),以总结经验教训,提出改进方案。严格的代码审查(code inspection)集体评审所发现的问题,并记录缺陷。在这一过程中,参与者可以学习缺陷特征,以避免再犯。严格的缺陷管理系统(defect management system)会要求开发人员在修复(resolve)缺陷时填写错误的根本原因(root cause);如果这是一个在产品环境中发现的缺陷,缺陷管理系统会要求测试人员在关闭(close)缺陷时填写与测试漏洞(test hole)相关的信息:为什么在发布前没有发现该错误、应该如何增强测试等。这些都有助于实现“不二过”。
以上列举的开发实践,我的组织都实施过,但是效果差强人意。技术细节上,一些共性的问题总是反复出现;开发水平上,“螺旋式上升”似乎退化成“原地打转”。为什么始终没有进步?林锐博士用下面一个故事给出了他的解答。
有一次,林锐在步步高做企业管理的咨询。某天,他对总经理说:“我建议企业内部学习的时候,所有的经理都表示同意。但是,具体实施的时候,他们总说很忙,没有时间。直到今天,内部学习也没有展开。”总经理的回答很干脆:“忙永远没有结束的时候,但是学习必须从现在开始”。于是,当天晚上组织所有经理和员工,加班召开全员会议。
在会议上,总经理要求每一位员工提交10条他们曾经犯过的工作错误。有一个专家小组会评审每一个错误。如果一个错误是有价值的、值得组织学习的,就会奖励提交者100元人民币。受到奖励的鼓舞,大多数员工都踊跃地提交错误。结果,当晚就发放奖金7万多元。林锐问总经理:“发这么多钱,心痛吗?”总经理笑答:“这些小钱算什么!”
相比冠名”非诚勿扰“每期百万的支出,7万元对于步步高确实只是小钱。不过,即便是小钱,也要获得切实的回报。在员工大会之后,步步高对错误进行了”再处理“,整理出一批详细的培训教材。教材内容针对每一个错误给出了解决和预防的方法。之后,公司利用这些教材对所有员工进行了再培训,并约法三章:如果在开发阶段再次犯已经培训过的错误,员工要受到批评。如果在上市的产品中发现已经培训过的错误,相关员工要受到经济处罚。
经过一段时的运作,”不二过“的流程运转顺利。岗上培训提供了学习资料,工作中的反复练习和纠错巩固了学习质量。进而,开发流程和产品质量都有稳固的提高。
这是一个很有启发的故事。从中我领悟到几个”内部学习“的要点。
- 领导支持。所有领导都会在口头上支持内部学习,但是只有真正的支持者才会抽出时间来身体力行,才会拿出真金白银来鼓舞士气,才会改变流程来促成改变。不要以为7万元是小钱,许多时候领导的支持不会超过700元。
- 内部培训。许多公司会请培训师做技术培训,会组织员工做新技术报告。只有少数公司会评审缺陷数据库中的缺陷,发现那些有教益的错误,进而编写成教材,实施内部培训。这些以”不二过“为宗旨的内部培训,切合工作实际,能够激发员工的思考,能够以很小的成本快速获得成效。
- 案例为重。内部培训的教材来自具体的案例,它们是培训的核心价值所在。要分析一个一个具体的错误,挖掘它们的原因,探究如何更好的构造,从根本上避免再犯。
- 形成制度。培训只是起步,要在工作中反复地实践,才能真正掌握。要对制度作出改变,使它支持团队向新目标前进。步步高的做法是在开发阶段引入持续纠错,当员工犯已知错误的时候,能够获得批评反馈,从而避免错误泄漏到最终产品中。
- 奖惩分明。有了制度,就要严格执行。犯错误是难以避免的(在某些场景下,是值得鼓励的),但是一再犯相同的错误且最终危害到产品,就要被惩戒。那些提供有价值的素材、编辑教程、实施培训的员工应该获得相应的回报。
”不二过“强调的是从错误中学习。作为发现错误的主力,测试人员应该注意日常的积累,分析总结那些有代表性的错误,与整个团队分享。虽然这一过程很可能没有物质奖励,但是它有助于更有趣的工作,因为你遇到低级错误的可能性在降低,你会有更多的时间去探索隐蔽的高级缺陷。