《凤凰项目》读书笔记

Posted by ngtmuzi on 2019-09-10
随笔

部门老大推荐的一本书,全名《凤凰项目:一个IT运维的传奇故事》,一开始没注意看到副标题,光看主标题还以为是简单介绍如何做好项目管理和人员开发的书,类似《人月神话》。然而看了之后才发现是小说形式的,讲述一个新上任的IT运维部主管如何整理自己部门的烂摊子,并与开发、QA、内审、财务、运营…各个部门间有效合作最终挽救了一个失败项目的故事。

背景

故事并非发生在一个互联网公司,而是美国的一个传统的汽车制造业公司——“无极限公司”。开发和IT运维并非是该公司的核心部门,甚至由于他们历史上的效率低下和问题频出,公司已经开始考虑寻求外包解决方案,主角们面临被解雇的危机;而公司本身也处于风雨飘摇之中,友商新上线的产品推荐和个性化系统吸引了大量的客户,使得股市和董事会对公司多有微言,迫于压力无极限公司也开始研发类似的系统期望挽回客户,该项目称为“凤凰”。

主要内容

这本书并非只是单纯说如何完成“凤凰”这个项目的,主角是IT运维部门的主管,视角与我们一般的开发者不相同,全书并没有着眼与介绍一个软件项目是如何策划、开发、完成测试并上线的,而是从整个“传统制造业公司”的层面去审视运维工作流程、任务管理、各部门间的合作,并提出作者的一些观点。

人和工作的管理

主角一上任就碰到了多次的系统故障,公司的工资发放、信用卡支付等重要功能受到影响,经过一系列流程梳理后,最终问题的焦点都在一个名为布伦特的人身上。他就是这个IT运维部的最核心员工,对业务流程的深入程度使得其他人甚至都帮不上忙,但也正因如此,很多变更操作他都没有经过审批而是自己直接操作,也因此产生了很多不可预估的系统故障。最后的结果是所有的重要流程都要由他操作,出现的各种故障也要找他来排查解决,他变成了整个部门最忙又最不可取代的一环。

主角团们发现了问题后,对其工作做出了分解,所有的服务器变更都必须拦下来,确认影响范围和优先级,并统一审核和安排时间实施,可以交由他人处理的工作就交由他人,他人尚不清楚的工作则由布伦特整理出工作流程。

这个情况在我们实际的工作中也是经常遇到的,总有一个人掌握了很多你不知道的黑科技,各种操作都需要他来帮忙,但他出问题时所有人只能看着他着急。这不是一个正常的工作情况,在严格的项目管控中,没有人具有不可替代性,需要把脑中的经验梳理并文档化,才能让他人参与进来;其次就是变更工作的管控,所有的变更能明确影响范围和审核必要性,对于稳定的线上环境是很重要的。

IT的四类工作

  1. 业务项目,如故事中的“凤凰”项目
  2. IT内部项目,如各类发布、部署自动化系统
  3. 服务器变更,如常规的服务器迁移、数据库迁移等
  4. 计划外工作或救火工作

短暂的“走捷径”或者绕过正规流程的操作会导致技术债务,技术债务的积累终将导致产生大量的计划外工作,最终使得处理人员再没有时间处理前3类计划内工作。因此我们需要及时地对流程进行规范和限制。

用工厂流水线的眼光来看待软件开发

书中的“贵人”埃瑞克一直在强调一点,就是IT开发运维流程的本质与工厂的流水线相同,开发、QA测试、运维发布等都是其中的数个环节,需要明确是哪个结点产生了工作的积压。但本书并不会告诉你如何“加大节点生产力”,毕竟人不是机器,堆量不一定能提高效率,这点在《人月神话》中会说得更清楚,本书提出的是如何在生产力有限的情况下,合理地安排工作流:

三步工作法

  1. 第一工作法是关于从开发到IT运维再到客户的整个自左向右的工作流。为了使流量最大化,我们需要小的批量规模和工作间隔
  2. 第二工作法是关于价值流各阶段自右向左的快速持续反馈流,放大其效益以确保问题再次发生,或者更快地发现和修复问题,从源头上保证质量
  3. 第三工作法是关于创造公司文化:鼓励探索、在失败中吸取教训;让员工理解重复的演练是重要的经验积累

敏捷开发和可持续交付

书中有这样一段

在竞争的时代,游戏规则就是“快速上市,快速淘汰”。我们不能为推出一个产品而制定为期几年的工作计划,一直等到最后才弄清手上拿的牌是赢家还是输家。我们需要短而快的周期,不断整合来自市场的反馈。
产品开发周期越长,公司资本锁定的时间也就越长,资金锁定期间是没有回报的。一旦研发资本以半成品的形式锁定超过一年而未向公司返还现金,它就几乎不可能再为公司产生回报了。

书中很明确地提到的了一个开发周期为3年的项目对于公司来说相当于沉没成本,它持续耗费成本却不能产生任何价值,即使最后上线也有可能远远落后于竞品,这对于一家运营状况不好的公司来说是足以致命的,而敏捷开发不断给出可落地的成果,给予公司和市场信心,效果是会更好的。

IT部门的定位

由于书中的公司并非一个互联网公司,软件开发、QA、运维等部门并非是营利的核心,很多时候运营、财务部门会认为IT部门是累赘,效率低且不能完成运营需求,但他们没考虑过IT部门的产出本身就是一个业务指标,IT部门运转情况也与公司的命脉息息相关。由IT引起的运营风险不只是IT风险,同样也是业务风险,需要将这些风险管控纳入业绩指标。

总结

在读这本书前我也未曾考虑过高层次的问题,这本书能提供一定的眼界,纵观全局才能明晰问题所在,对于工作流程的一些观点也值得学习。