精益思想已在制造、卫生保健和建筑等诸多行业取得了卓越的成效。敏捷软件开发更是让困境中的软件开发人员看到了曙光。本书揉合了两种思想的精髓,帮助读者将广为接受的精益原则转换为适应具体环境的敏捷实践,从而提高组织的软件开发能力。
本书为软件开发领域的开发经理、项目经理和技术主管编写,为其提供了大量的实用技术和思考方法。
第1章 消除浪费\r\n\r\n 1.1 精益思想的起源\r\n 1.2 工具1:识别浪费\r\n 1.3 工具2:价值流图\r\n 1.4 实践\r\n\r\n第2章 增强学习\r\n\r\n 2.1 软件开发的性质\r\n 2.2 工具3:反馈\r\n 2.3 工具4:迭代法\r\n 2.4 工具5:同步\r\n 2.5 工具6:基于集合的开发\r\n 2.6 实践\r\n\r\n第3章 尽量推迟决策\r\n\r\n 3.1 并发开发\r\n 3.2 工具7:选择权思考\r\n 3.3 工具8:最后负责时刻\r\n 3.4 工具9:制定决策\r\n 3.5 实践\r\n\r\n第4章 尽快交付\r\n\r\n 4.1 为什么要快速交付\r\n 4.2 工具10:拉动系统\r\n 4.3 工具11:排队理论\r\n 4.4 工具12:延误成本\r\n 4.5 实践\r\n\r\n第5章 授权团队\r\n \r\n 5.1 超越科学管理\r\n 5.2 工具13:自决权\r\n 5.3 工具14:动机\r\n 5.4 工具15:领导\r\n 5.5 工具16:专业技能\r\n 5.6 实践\r\n\r\n第6章 嵌入完整性\r\n\r\n 6.1 完整性\r\n 6.2 工具17:感知完整性\r\n 6.3 工具18:概念完整性\r\n 6.4 工具19:重构\r\n 6.5 工具20:测试\r\n 6.6 实践\r\n\r\n第7章 着眼整体\r\n\r\n 7.1 系统思考\r\n 7.2 工具21:度量\r\n 7.3 工具22:合同\r\n 7.4 实践\r\n\r\n第8章 说明和保证\r\n\r\n 8.1 注意—按说明使用\r\n 8.2 说明\r\n 8.3 故障诊断指南\r\n 8.4 保证\r\n
精益思想诞生于20世纪40年代末期。当时,由于缺乏足够的资金,刚成立不久的丰田公司制定了丰田生产系统,该系统的主旨是消除浪费。本书系统论述了针对软件开发的7个精益原则:消除浪费、增强学习、尽量推迟决策、尽快交付、授权团队、嵌入完整性和认识整体。在这7个原则中,消除浪费是最为重要的一个原则,它是其他原则的基础,也是它们的目的所在。
事实上,对任何企业来说,关键并不在于知晓消除浪费这一基本原则,而在于对浪费的界定,因为很显然浪费是任何企业都应该避免的行为,这是一个极为自然、浅显的道理。但在对浪费的认识和感知上,各企业之间存在很大的差异。在很大程度上,这种认识和感知的水平决定着企业的绩效。显然,丰田公司的成功意味着丰田生产系统及其对浪费的认识是值得研究和效仿的。但如果不考虑自身具体环境生搬硬套地移植其他企业的经验,注定将遭受挫折。对这一点,本书举出了不少事例,并进行了详细的讨论。事实上,这也是本书的价值所在:将精益原则与敏捷实践相结合,也就是说,将精益原则转换成适合于具体环境的敏捷实践,使空泛的原则成为具体的实施方法,让读者知道自己应该做些什么,采取哪些措施。
本书每一章对应一个精益原则,其核心内容是22个思考工具,这些工具旨在帮助读者将上述精益原则转换为适用于特定领域和环境的敏捷实践。此外,本书还穿插了一些相关案例和作者的亲身经历,读者可以方便自如地结合自己的实际情况领悟、应用和掌握上述7个精益原则,达到灵活运用的境界。
本书作者Mary Poppendieck和Tom Poppendieck均在IT领域从业多年,积累了丰富的经验,是精益软件开发方面的顶级专家。相信这本精心编写的著作将成为软伺:开发领域的一个里程碑,因为作者创造性地将精益原则与敏捷实践结合起来,试图开创一种全新的软件开发管理方法。
本书适用于软件开发领导者,同时也能供各类软件开发人员阅读参考,提高自己的业务能力。
为了提高我国软件业的管理水平和开发效率,清华大学出版社引进了这本名著,本人有幸组织翻译工作。参加本书翻译工作的人员还有朱崇贵、张梦兰,另外唐振宇和刘嫦娥在多方面给予大力协助,使本书得以顺利完成,在此一并表示感谢。
由于译者水平有限,书中一定还存在不妥之处,敬请读者批评指正,以便在下一版时修订。
我曾经是一名非常不错的程序员。我编写的代码曾用来控制电话交换系统、高能物理研究、概念车的研发以及用来制造3M磁带的制造机和涂胶机。同时,我还擅长用Fortran和汇编语言编程,能迅速规定和构建微型计算机控制系统。
从事10多年的编程工作后,我随自己编写的某个系统进入了一家制造厂,并跻身IT管理人员之列。在这里,我掌握了材料控制、单位成本和生产数据库方面的知识。随后,quality-is-free和及时生产潮流蔓延到这家工厂。这时,我才认识到几个简单的想法和得到授权的人员是如何改变一切的。
几年后,我涉足新产品开发领域,领导商业化团队开发嵌入式软件、成像系统以及光学系统。由于我热衷于新产品开发,我加盟了一家新兴的公司。后来,我创办了自己的公司,和产品开发团队,特别是那些从事软件开发的人员携手合作。
当时,我已经脱离软件开发行业6年之久。当我重操旧业时,对眼前的一切感到不知所措。面对项目管理学会(Project Management lnstitute,PMI)和能力成熟模型(Capability Maturity Model,CMM)认证计划,大家对最佳实践的理解似乎主要停留在过于强调过程定义和详细的前端计划上。更为糟糕的是,这些方法将我所熟知的精益制造潮流作为其存在的正当理由。
我强烈地意识到,精益制造的成功取决于深入理解什么能创造价值、为什么快速流程(rapid flow)是关键的,以及如何释放工作人员的脑力。在普遍强调过程和计划的现状中,我觉察到一种贬低这些关键性原则的倾向。例如,我听说,为了使“任何人都能编程”,需要进行详细的过程定义,而精益制造强调的则是培养一线人员的技能,并让他们定义各自的过程。
听说将事情“一次性处理妥当”的方法是花费大量时间并直接将需求放在第一位。对此我倍感惊讶。就我所知,当我试图控制一台机器时,使代码一次性成功运行的惟一方法是构建完整的模拟程序并无休止地对代码进行测试。我知道,交付给那家工厂的所有产品都经过了一整套测试,而“一次性处理妥当”意味着每个步骤都必须通过每一项测试。可以肯定地说,每个月市场都会需要新的装置或不同的磁带长度,因此那种在投产前固定产品配置的想法是闻所未闻的。这就是指定序列号的原因所在——这样我们就能辨别生产某一产品时的制造规格。我们从不指望本月生产的产品与上个月生产的产品完全相同。
详细的前端计划给我的印象是,它和精益制造原则完全背道而驰。在我看来,由员工组做出过程定义是与授权截然相悖,而授权是成功地进行精益制造的核心所在。我觉得,制造业的比喻似乎被滥用于软件开发领域。在我看来,CMM在急于对过程进行标准化时忽略了发现和创新精神,而这种精神是成功地进行整体质量管理的关键因素。大家都知道,在制造业中,IS09000以及马尔科姆·波多里奇奖(Malcolm Baldrige Award)与质量计划的成功并无多大联系,或者毫无关系。它们对记录成功有用,但通常会妨碍创造成功。
对我来说,PMI认证计划似乎在向新上任的项目经理传授若干针对软件项目管理的反模式,如工作分解、范围控制、变更控制、挣值、需求跟踪和时间跟踪等。在担任3M公司政府合同项目经理时,我对上述所有内容进行了了解,并强烈意识到它们给项目造成的浪费。当然,我们认为将它们应用到内部产品的开发中并非上上之策,在这类项目中,学习和创新才是成功的关键因素。
这并不是说CMM和PMI不好,只是对所有经历过精益革命的人来说,它们倾向于以错误的方式对待软件开发项目。我们希望本书能改变软件开发范式:将强调过程改为强调人员,将分散改为聚集,将推测改为基于数据的决策,将计划改为学习,将跟踪能力改为测试能力,将成本和进度控制改为商业价值的交付。
如果大家认为无法同时做到更好、更省、更快,那么,我们应该明白,当制造和产品开发尚处于前精益时期时,我们往往也会产生同样的想法。然而,我们认识到,通过强调价值、流程和人员,就可以提高质量,降低成本,加快交付速度。我们是在竞争对手夺走我们的市场时认识到这一点的。
祝愿大家在精益软件开发中处于行业领先地位。