“三步工作法”的一些思考——《凤凰项目》读后感二
《凤凰项目》一书中,作为导师出现的埃瑞克向作者提出了“三步工作法”,他说:“年轻人,一旦明白了这些,你就能踏上理解‘三步工作法’的征途了。第一工作法帮助我们理解在工作从开发部移向IT运维部时该如何创建快速工作流,因为那就是业务部门与客户之间的衔接。第二工作法告诉我们如何缩短及放大反馈环路,从而在源头上解决质量问题,避免返工。第三工作法告诉我们如何创建一种文化,既能鼓励探索、从失败中吸取教训,又能理解反复的实践是精通工作的先决条件。”这是书中第一次出现“三步工作法”,成为贯穿“凤凰项目”的工作方法,这其实也是作者借鉴“TOC”方法提出的。具体地说:
第一步,实现开发到运维的工作快速地从左向右流动。因为我们交付的是可以让用户使用的软件功能,如果软件功能不能正常使用,那么这个功能就没有任何意义。按照生产线上生产产品的习惯,可以被使用的软件功能点叫制成品,所有不能被正常使用的功能点就是在制品。从软件使用的角度出发,那么我们要生产合格的制成品就必须经历软件开发、软件测试、软件部署上线和运营维护等几个阶段,其中任何一环没有做好管控,那么我们即便部署上线了也只能是在制品,需要不断地修修补补,甚至是重新开发。同样仿照生产线,作者要求软件从开始开发到最后的运维是一个工作流,为了最大程度地优化工作流,首先需要将工作可视化(书中的可视化方面讲的比较好,先是作者负责部门工作的可视化,即系统部署和系统变更流程的可视化,然后是开发部门的可视化,再然后是两者的衔接,当然后面的两个可视化写的较简略),通过可视化,找出流程中的“约束点”(书中就是那个布伦特),通过缓解约束点的工作量使工作流运行速度加快,设置“缓冲区”(书中就是环节之间的等待工作量)让上下游工作衔接更加合理;其次是我们的交付件可以是一次提交多个功能点(甚至是一个系统),也可以是一次提交几个功能点(甚至是一个功能点),作者要求采用“精益生产”的思路,让工作流减小每批次大小和等待间隔,这就是本书的核心部分:通过构建DevOps理念,在开发时使用类生产环境,自动化测试技术,建设快速部署能力实现从开发到运维的快速工作流,但由于本书采用的小说形式,对此部分的技术细节描述并不多;第三是通过内建质量杜绝向下游传递缺陷,借鉴丰田公司生产线上的“安灯线”,发现问题及时解决,而不是置之不理甚至隐瞒,从而推动工作流不断完善优化;最后当然是持续地优化全局目标。 总之,通过加快技术价值流的流速,缩短满足内部或者外部客户需求所需的前置时间,尤其是缩短代码部署到生产环境所需的时间,可以有效地提高工作质量和产量,并使企业具有更强的外部竞争力。
在这一过程中给自己留下深刻印象的是“限制在制品数量”,自己在实践中也深受其害,之前作者也采用过《精益开发实战 : 用看板管理大型项目》中介绍的方法管理软件开发和运维工作,但由于需求源源不断,人力资源根本无发完成工作,大家也没有精力执行相关管理规定,最终失败,所以对作者如何“限制在制品数量”充满好奇。可是看完之后却很失望,作者居然是通过“辞职”实(威)现(胁)公司领导同意暂时停止其他部门提出新需求,全力解决“凤凰项目”初次上线带来的混乱,而在我的工作中这种情况基本不可能发生,更有可能发生的是“辞职就滚蛋,自有后来人”的情况。
第二步,是在正向工作流的基础上,又反过来在从右向左的每个阶段中,应用持续、快速的工作反馈机制。从“控制论”的角度,仅有正向工作流是不够的,实际上对于“约束点”、“缓冲区”的优化就是一种反馈机制,书中埃瑞克也谈到“如果每九个月才能打一发炮弹,就永远射不中你们瞄准的目标。”,意思是正向工作流不断减小每批次大小和等待间隔的同时,还需要建立快速反馈回路,让开发人员在工作中不断获得迅速的反馈,确保他们在编写代码时,自动单元、验收和集成测试一直在类生产环境中运行,从而使代码和环境将会按照预先设定的运行,而不是上线后才发现测试环境和生产环境已经不一样了,测试通过的代码无法在生产环境中正确运行,那时候我们依然无法得到“制成品”,只能返工。归根到底,防止问题代码进入生产环节,从源头控制质量,并在流程中嵌入相关的知识让代码能够迅速部署投产,从而迅速发现并修复任何产品问题,就是第二步工作法的核心。反馈机制不仅能创造出更安全的工作系统,还可以在灾难性事故发生前就检测到并解决它。 及时发现并控制这些问题,直到拥有有效的对策,可以持续地缩短反馈周期和放大反馈环,这是所有现代流程优化方法的一个核心原则,能够创造出组织学习与改进的机会。
第三步,建立具有创意和高可信度的企业文化,支持动态的、严格的、科学的实验。这一步工作法可不是通过技术解决的,这是把对工作流管理上升到更高层面来看待。我的工作环境与书中作者情况既相同又不同,我们的软件多是通过采购方式定制开发的,即软件供应商负责软件开发和测试,我们负责系统的部署和运营维护,所以相同的部分是我们和作者工作分工界面相同,但甲乙方的关系又使双方工作界面不同,作者提出这种文化更难以建立。