写在前面
我们回想一下,在我们曾经工作过的项目中,有经历过超过约定期限吗?有经历过超过预算吗?所交付的软件是否符合客户的需要?有经历过项目在做的功能中被取消掉吗?如果答案是有,也不要太过惊慌,因为有千千万万的从事软件行业的人们,在经历和我们一样的困扰。
Kent Beck曾经说过,程序员的职业病就是太过乐观。这个玩笑的背后,映射出的现实则是,软件行业一直以来令人吃惊的低成功率,尽管软件行业也已经发展了几十年的光阴。
而与之形成对比的是,以软件为支撑的产品和专业型服务,每年都在急剧的发展和增长。敏捷软件开发方法告诉我们如何提高软件行业的成功率,同时,作为影响并颠覆了制造业将近50年的精益思想,也已经被应用在软件行业中,并且已经为提高软件行业的成功率带来了巨大的积极影响。我们选择去拥抱精益思想,就是想利用精益思想的强大力量,来帮助我们迎接在软件开发过程中的挑战,并且提高我们成功交付软件的信心。
精益起源
精益来源于制造行业,具体的说,精益思想是人们在研究过丰田生产方法之后,从中抽象提取出的一系列方法论,从而能够影响并在其他行业取得成功。
Henry Ford and the Model-T
Henry Ford是Ford汽车公司的创始人,他也可以算作是比较早的发展精益生产理念的人之一。Ford的主要贡献在于在规模生产汽车的过程中,引入了装备流水线,不同的零件和半成品会随着流水线传送带进行传送,这样就减少了人员的移动,提高了工人的工作效率。同时,批量化的生产,也意味着原材料的批量运输,这样也可以节省成本。他用这种方法生产了著名的Model-T车型,并取得了很大的成功。
第一批Model-T面世于1908年10月1日,在1908年到1927年之间,Ford生产了一千五百万量Model T车型。在Model-T之前,汽车是一件奢侈品。在1908年初,路上行驶的汽车数量不多于20万辆。Ford通过坚持只生产一种车型来保证低价。到1914年,Ford的生产线可以达到每周生产几千辆汽车。
然而到了1920年代,很多美国人已经不在满足于呆板但廉价的汽车了。他们开始关注于不同的风格,速度或者能够彰显品位。随着大众口味的变化, Model-T的时代就此终结。1927年5月最后一辆Model-T汽车走出生产线。尽管如此,Model-T到现在为止,也能排进史上最畅销车型的Top10的榜单。
Ford的生成方式是不灵活的。他的生产线只能一辆接一辆的生成同样的东西,整个过程并不能轻易的对最终成品进行任何的微调和修改。并且,这种生成方式是一种“推”模型,生产计划取决于Ford本身,而不是来自于客户的需求量。这就导致大量未售出的汽车会占用大量的库存资源,也就意味着大量的资金需要投入到库存上来。
许多汽车制造商尝试学习Ford的生产方式,但很快他们就意识到了这种不灵活性所带来的问题。表现上看,为客户早早的做好库存准备,是一件好事。但其实它会带来很多问题。除了库存本身的费用以外,库存中的大量代售汽车,也意味着将大量的现金封存起来。而且库存中的汽车可能会被偷,或者被损坏,起码也会在货架上慢慢蒙尘。而最终有可能在不得已的情况下,大幅降价出售,或者直接报废,造成巨大的经济损失。
丰田生产系统 Toyota Production System
1945年,二战后的日本经济凋敝。丰田汽车创办人丰田喜一郎,声称日本汽车必须在三年之内赶上美国,否则日本汽车产业就无法存活。虽然这个期望并没有实现,但日本的汽车工业受此鼓舞,工程师大野耐一在此背景下创造并开始不断完善丰田生产方式。
1950年代,丰田派出代表团赴美国学习先进的商业经验。他们参观了行业领袖Ford公司,却并没有很多印象深刻的地方,反而惊讶于他们庞大的库存数量。然后在对一个超市的访问中,那种只在客户购买商品后,才会触发商品的重新补货的机制,让他们难以忘怀。
这个极简的机制启发了大野耐一,创造了Just-In-Time的概念。Just-In-Time努力将生产过程中的每一步的库存量尽量降到最低,最好为0。换句话说,这意味着只需要在合适的时间,合适的地点,提供适量的原材料。去除库存带来很多好处,不仅可以节省成本,还去除了商品被废弃或者损坏,久置的可能性。
然而,没有了库存的现成商品,必须拥有精准的控制生成过程的能力,意味着当有需求的时候,各种不同的零配件都可以及时到位。但是一旦拥有了这种能力,就意味着可以响应客户不同的订单需求,带来非常大的灵活性。JIDOKA是实现这种精准控制的原则之一。JODOKA的意思是有人参与的自动化。在正常状况下,机器自动运转生成,无需人员参与,当机器进入异常状态时,会自动停止生产。工作人员会修复这个问题,并且尝试找到问题产生的根本原因,制定一个对策,以防止同类型的问题再次发生。
丰田现在是全球第9大企业,销量最大的汽车厂商,并持续盈利。到2016年7月,丰田在汽车生产和销售数据上超越福特,并在廉价汽车上有更高利润率。这是精益生产管理的巨大成功。
精益思想
20实际90年代初《改变世界的机器》一书的出版,标志着“精益(Lean)”的诞生。精益思想(Lean Thinking)高度归纳了精益生产中所包含的新的管理思维:以越来越少的投入——较少的人力、较少的设备、较短的时间和较小的场地创造出尽可能多的价值;同时也越来越接近用户,提供他们确实要的东西。
对现有流程进行改进,消除浪费。
两个核心:持续改进,尊重他人。
无论是敏捷,还是精益,都是一种思想。
敏捷:和客户密切协作,尽早地迅速交付可用的软件。敏捷主要关心的是围绕软件开发的具体开发实践和项目管理,一般不太关心在其中进行软件开发的商业环境。
精益:在对客户有价值的上下文环境下消除浪费。精益采用比较宽泛的视角,偏好整体看待软件开发和它的整个业务环境。
精益和敏捷是一脉相传的,为了更突出一下价值理念。从源头对比,如果更偏向外部拉动,更愿意冠名精益,如精益企业、精益需求管理等。强调快速响应的,更多称为敏捷,如敏捷开发、敏捷团队等。
价值 (Value)
定义价值:针对特定的产品或服务,由客户来定义什么是有价值的。精确地定义价值是精益思想关键的第一步。
定义价值的类别:可分为“产生价值”,“不产生价值但有必要”和“不产生价值却是浪费”三种。
思考:在产品生产过程中,质量检测是否是有价值的?
价值流 (Value Stream)
识别价值流:筛选出必要的过程,将输入转变成输出,以此来识别和消除浪费。确定每个产品的全部价值流是精益思想的第二步。
一旦我们了解了客户希望的价值是什么,我们就可以尝试绘制价值流图。价值流图首先将生成过程分为不同的阶段和步骤,然后将每一个步骤进行归类。我们的目标是尽量去除“不产生价值却是浪费”的步骤。
七种典型的浪费
无论Ford引进流水线,还是大野耐一JIT机制去除库存,共性都是去除过程中存在的浪费。TPS(丰田生产方式Toyota Production System)定义了7种不同种类的浪费:
1.Overproduction过度生产:过度生产意味着生产远超过需要,或者意味着在需要产生之前就进行生产。通常从库存的数量就可以看出是否存在过度生产。
2.Inventory库存:库存中通常存放的是大量半成品或者未能销售的成品。超过限度的库存不仅吞占大量资料,而且延迟了发现潜在问题的时间。
3.Transportation运输,移动:Transportation是指在生成过程中,不必要的运输或者移动,包括物料,或者人等。
4.Motion运动,动作:运动是指在生成过程中,人或者设备不必要的多余动作。
5.Wait等待:人或者物料在生产过程中的等待时间,如等待下一阶段开始等。
6. Defects缺陷:产品缺陷可能是最显然易见的浪费。精益聚焦于如何防止缺陷的发生,而不是传统方式下,发现缺陷,修复缺陷这样的思路。
7.Over-processing:不必要的流程或者额外的过程,不会对客户带来额外的价值,却带来额外的成本。
Under-utilization of people:除了以上的七种,还有一种浪费,即under-utilization of people,是指未能充分利用工人的创造力或者其他资源等。
流动 (Flow)
让价值持续流动:让消除浪费后的可以创造价值的过程“流动”。产品的生成过程必须是能够“流动”的,可以回想Ford的自动化生产线对量产的意义。如果一旦价值流停了下来,那么浪费就会产生。
创造流动的三个要点:关注什么在价值流中流动;不要被部门间的分隔所限制;消除瓶颈。
时间是改善流动的重要衡量标准。 举个我们软件交付中常见的精益度量的例子:
交付(前置)时间(Lead Time):当前迭代完成的Story中,从需求进入IPM至需求交付的耗时。
周期时间(Cycle Time):完成Story实际花费的时间。
吞吐率(Throughput): 某个给定时间段交付的Story工作项数量。
拉动 (Pull)
拉动价值:客户拉动层层传递到最底层供应商,实现恰好够用的生产。按用户需要拉动产品,而不是把用户不想要的产品硬推给用户。
前面我们讲过推动式的生产的弊端:
拉动系统避免了浪费,对客户需求的响应很灵活。那么作为上游的部分,什么时候来生产,生产多少呢?这就是个问题了。看板是为了达到JIT准时生产方式而控制现场生产流程的工具。
尽善尽美 (Perfection)
最后一个原则,尽善尽美,是指始终不断的精细化,不断的识别过程中的浪费,并不断的消除这些浪费。在日语中,“Kaizen"这个词的字面意思是"持续改善”、在工作中,如果全体员工能够持续专注于提高质量、生产率和客户满意度,那么这种文化可称为改善文化。精益没有终点,我们永远可以变得更加精益。
让客户通过价值流拉动价值
在每一个过程中持续去除浪费
不断提高产品和服务的质量
对参与的每一个人保持透明度
写在最后
《精益和敏捷开发大型应用指南》一书中,根据丰田公司内部关于TPS早期版本的屋形图开发了精益思想屋模型。
秉承精益的思想的两大支柱:尊重他人,持续改善。在具有不确定性的竞争市场环境中,建立高适应力、持续创新的高绩效组织是我们的追求。
延伸阅读:《谈谈精益(下篇)——看板系统》
本文作者万学凡,ThoughtWorks首席咨询师,武汉。作者保留本文一切权利,未经许可请勿转载。