生产的基础:提供一顿早餐(The Basics of Production: Delivering a Breakfast)

(或者一位大学毕业生、一个编译器,或一名被判刑的罪犯……)

三分钟鸡蛋(The Three-Minute Egg)

要理解生产的原则,请想象你是一名服务员——我在读大学时就做过服务员——你的任务是端上一份早餐,包括一个三分钟溏心蛋、黄油吐司和咖啡。你的工作是同时准备并送上这三样东西,每一样都要新鲜、热乎。

这项任务包含了生产的基本要求:按照顾客的需求,在预定的交货时间、以可接受的质量水平和尽可能低的成本来制造并交付产品。生产的使命不可能是"顾客什么时候要什么,就什么时候给什么",因为那将需要无限的生产能力,或者与之等价的东西——庞大到随时可交付的库存。在我们的例子里,顾客可能希望一坐下,面前就摆着完美的三分钟鸡蛋、热黄油吐司和冒着热气的咖啡。要满足这样的期望,你要么让厨房闲置待命,随时准备在顾客光临时为他服务,要么备好一份随时可吃的库存——煮得恰到好处的鸡蛋、热黄油吐司和咖啡。这两种做法都不现实。

相反,制造商应当承担起在承诺的时间交付产品的责任——在这个例子里,也就是顾客到达我们的早餐店之后大约五到十分钟。而且,我们必须以这样的成本做出这份早餐:既能以有竞争力的价格卖出去,又能赚取可观的利润。我们要怎样以最聪明的方式做到这一点?让我们从审视生产流程(production flow)开始。

我们要做的第一件事,是确定流程中决定整个作业形态的那一步,我们称之为限制步骤(limiting step)。这里的问题很简单:早餐的哪个组成部分需要最长的准备时间?咖啡在厨房里已经煮好、冒着热气,吐司大约只需一分钟,所以答案显然是鸡蛋。因此,我们应该围绕煮鸡蛋所需的时间来规划整个工作。这一组成部分不仅准备时间最长,而且对大多数顾客来说,鸡蛋也是早餐中最重要的部分。

必须发生的事情如对面图示所示。要从交付时间倒推,你需要计算准备这三样东西所需的时间,以确保它们能同时就绪。首先,你得留出时间把三样东西摆上托盘;接着,你要把吐司从烤面包机里取出、咖啡从壶里倒出,再把鸡蛋从沸水里捞出来。把这些操作所需的时间,加上取蛋和煮蛋所需的时间,就得到了整个流程的长度——用生产的行话来说,叫作总吞吐时间(total throughput time)

接下来轮到吐司。以煮鸡蛋的时间为基准,你必须为自己留出取面包片并烘烤的时间。最后,再以吐司的时间为基准,你就能确定什么时候该倒咖啡。关键思路是:我们从最长(或最困难、最敏感、最昂贵)的步骤开始,倒推着构建我们的生产流程。请注意这三步各自何时开始、何时结束。我们围绕最关键的一步——煮鸡蛋所需的时间——来规划流程,并根据各自的吞吐时间错开其余每一步;用生产行话来说,就是让它们彼此错位(offset)

原书插图

煮鸡蛋是限制步骤。

限制步骤这个概念有着非常广泛的适用性。以英特尔(Intel)招聘大学毕业生为例。我们的一些经理会去大学校园,面试部分大四学生,并邀请其中更有前途的候选人到公司参观。我们承担候选人的差旅费用,这笔费用可能相当可观。参观期间,学生会接受其他经理和技术人员的深入面试。经过慎重考虑后,我们会向技能与能力最匹配我们需求的一部分学生发出录用通知,接受录用的人最终会来公司工作。

要应用生产的基本原则,你需要围绕这里最昂贵的环节来安排整个流程——那就是学生到工厂的参观,因为既要负担差旅费用,英特尔经理们还要花时间陪候选人。为了把每次最终录用所消耗的这一步骤降到最低,我们显然必须提高"接受录用的人数"与"受邀到工厂参观的人数"之比,做法是在发出邀请之前先用电话面试(phone interview)筛选候选人。这项技术既省钱,又大幅提高了每次工厂参观后发出录用通知的比例,还减少了每次录用对昂贵的限制步骤的使用。

时间错位的原则在这里同样存在。从学生毕业的时间倒推,招聘人员错开安排各个步骤,以便让所有环节——校园面试、电话筛选、工厂参观——都在毕业前的几个月里于恰当的时间依次进行。

生产作业(Production Operations)

早餐的准备过程还体现着其他的生产原则。在制作早餐的过程中,我们能找到三种基本类型的生产作业(production operation):流程制造(process),即物理或化学地改变材料的活动,就像煮鸡蛋改变了鸡蛋一样;装配(assembly),即把各个组件组合起来构成一个新实体,就像鸡蛋、吐司和咖啡共同组成一份早餐;测试(test),即对组件或整体进行特性检验。例如,早餐生产过程中的一些节点就有目视检查:你可以看到咖啡在冒热气、吐司变成了棕色。

流程、装配和测试作业可以很方便地应用到其他性质非常不同的生产性工作中。以培训一支销售队伍来销售新产品为例,三种生产作业很容易识别:把关于产品的大量原始数据转化为销售人员能理解的有意义的销售策略,这是一个流程步骤,它把数据转化为策略;把各种销售策略组合成一个连贯的方案,可以比作装配步骤——在这里,恰当的销售策略和相关的市场数据(比如竞争性定价和供货情况)被汇入同一个演示中,连同宣传册、讲义和挂图之类的材料;测试作业则以"试讲(dry run)“的形式出现,由一组精选的现场销售人员和现场销售管理层参加。如果试讲没有通过测试,材料就必须"返工(rework)"(另一个成熟的制造概念),以满足测试听众的关切和反对意见。

“编译器(compiler)"——一个大型计算机软件——的开发同样体现了流程、装配和测试。计算机只有用它的语言接收到指令,才能理解和使用人类的指令。编译器就是一个翻译器,它让计算机能把用类似英语的词汇和短语写成的材料翻译成自己的语言。有了编译器,程序员就能或多或少像人一样思考,而不必让自己去适应计算机处理信息的方式。让机器以这种方式解释和翻译,任务显然十分艰巨;因此,编译器的开发需要熟练而才华横溢的软件工程师付出艰苦的努力。不过,这份努力是值得的,因为它给计算机的使用带来了极大的简化。

无论如何,构成编译器的各个零部件的开发代表着一系列流程步骤:实际的软件工作部件是根据规格说明和基本的设计知识生成的;随后每个部件都要经历一个叫作"单元测试(unit test)“的单独操作,如果测试失败,软件中有缺陷的部分就被退回流程阶段"返工”;在所有部件都通过各自的单元测试之后,它们被装配起来组成编译器;然后,当然,还要对完整的产品进行"系统测试(system test)",才能发货给客户。时间错位在这项任务中被广泛使用。由于各工程步骤的吞吐时间都已充分确立,各种软件模块从一个阶段释放到另一个阶段的时间都可以提前计算和安排。

早餐准备、大学招聘、销售培训和编译器设计彼此大不相同,但为了产出特定的成果,它们都具有基本相似的作业流程。

一些复杂情况(A Few Complications)

众所周知,现实生活充满荆棘和灌木丛。在示意性的流程图中,我们的早餐作业假设生产能力无限——没有人需要排队等待空闲的烤面包机,或等待一个锅来煮鸡蛋。但这样的理想世界并不存在。如果你不得不和一群服务员排成一队,等着轮到你用烤面包机,会发生什么?如果你不调整生产流程来应对排队,你的三分钟鸡蛋很容易就变成六分钟鸡蛋。所以,烤面包机产能有限意味着你必须围绕新的限制步骤重新设计流程。鸡蛋仍然决定早餐的整体质量,但你的时间错位必须改变。

我们的模型会怎样反映制造流程的这种变化?从早餐交付的时间倒推,让我们看看生产会受到什么影响,如对面图示。鸡蛋的周期不变,咖啡的周期也不变。但烤面包机产能有限会造成相当大的差别。现在你必须把吐司的交付时间和等待空闲烤面包机的时间都算进去。这意味着整个生产过程必须换一种思路来构想。烤面包机的产能成了限制步骤,你的做法必须围绕它重新安排。

原书插图

在烤面包机产能有限的情况下,烤吐司成了限制步骤。

现在让我们把情况再搞复杂一点。如果轮到你该开始煮鸡蛋的时候,你却排在队伍里等烤面包机,会怎么样?你的冲突看似不可调和,其实并非如此。如果你是餐厅的经理,你可以把你的员工变成专家(specialist):雇一个煮蛋工、一个烤吐司工、一个倒咖啡工,再加一个人来监督整个作业。但那样当然会产生巨额的间接费用(overhead),很可能贵得让人无法考虑。

如果你是服务员,你可以请排在你旁边的服务员帮忙——在你跑去煮鸡蛋的时候帮你的吐司放进烤面包机。但当你不得不依赖别人时,结果往往更难以预测。作为经理,你可以再加一台烤面包机,但这会成为一笔昂贵的资本设备(capital equipment)投入。你也可以让烤面包机不停地运转,积累起一批热吐司的库存(inventory),用不完的就扔掉,但随时都能拿到产品。那意味着浪费,同样可能贵到让经营无法承受。但至少你知道了替代方案确实存在:设备产能、人力和库存可以相互权衡,然后再与交货时间相平衡。

因为每种替代方案都要花钱,你的任务就是找到最具成本效益(cost-effective)的资源部署方式——这是优化所有类型生产性工作的关键。请记住,在这种情况下以及其他类似情况下,存在一个正确答案:一个能以尽可能低的成本带来最佳交货时间和产品质量的答案。要找到这个正确答案,你必须清楚地理解人力、产能和库存这几个因素之间的权衡,并且必须把这种理解简化为一组可量化的关系。你大概不会用秒表去对烤面包机后面的人做时间-动作研究(time-and-motion study),也不会用数学公式精确计算吐司库存成本与新增烤面包机产能之间的权衡。重要的是你强迫自己经历的思考过程,去理解生产流程各个方面之间的关系。

让我们把制造的例子再推进一步,把生意变成一家大批量的早餐工厂作业。首先,你买一台连续煮蛋机(continuous egg-boiler),它能源源不断地生产煮得恰到好处的三分钟鸡蛋,外观大致如对面图示。请注意,我们的生意现在假定对三分钟鸡蛋有高且可预测的需求;它现在无法轻易提供四分钟鸡蛋,因为自动化设备不太灵活。其次,你让连续煮蛋机的产出与连续烤面包机的产出相匹配,由专业化的员工为每台设备装料并交付产品。我们现在把一切变成了连续作业(continuous operation),代价是牺牲了灵活性——我们无法再完全按照每位顾客要求的时间和方式准备他的订单。因此,如果顾客想享受我们新模式的益处——更低的成本和更可预测的产品质量——他们就得调整自己的期望。

原书插图

连续煮蛋机:源源不断地供应三分钟鸡蛋。

但连续作业并不自动意味着更低的成本和更好的质量。如果连续煮蛋机里的水温悄悄偏离了规格,会发生什么?全部的在制品(work-in-process)——煮蛋机里所有的鸡蛋——以及从温度升高或降低之时起、直到故障被发现为止机器产出的所有鸡蛋,全都不能用了。所有吐司也一并浪费了,因为没有任何鸡蛋可以搭配。怎样才能把这类故障的风险降到最低?进行功能测试(functional test)是一种办法:时不时打开一个刚出机的鸡蛋,检查它的质量,但被测试的那个鸡蛋只能扔掉。第二种办法是过程中检验(in-process inspection),它可以有多种形式。比如,你只需把一支温度计插进水里,就能轻松而频繁地检查温度。为了避免花钱雇人读温度计,你可以在温度计上接一个电子装置,只要温度偏差一两度就铃声大作。要点是:只要可能,就应该选择过程中的测试,而不是会毁掉产品的测试。

我们的连续煮蛋机还会出什么别的差错?送进去的鸡蛋可能开裂或变质,也可能过大或过小,这会影响它们的煮熟速度。要避免这类问题,你要在收货时检查鸡蛋,这叫作来料检验(incoming inspection)收货检验(receiving inspection)。如果鸡蛋在某些方面不合格,你就得把它们退回去,结果一个鸡蛋也不剩,只能停产。要避免这种情况,你需要原材料库存(raw material inventory)。但它该有多大?这里适用的原则是:你的库存应当足以覆盖在补足原材料所需时间内的消耗量。也就是说,如果送蛋的人每天来送一次货,你就该备足一天的库存来保护自己。但请记住,库存是要花钱的,所以你必须权衡备一天货的好处与持有它的成本。除了原材料成本和资金成本,你还应该试着估量面临风险的机会(opportunity at risk):如果不得不让煮蛋机停产一天,会损失多少钱?会流失多少顾客?把他们拉回来要花多少钱?这些问题就界定了"面临风险的机会”。

增加价值(Adding Value)

所有生产流程都有一个基本特征:材料在流程中流动得越远,价值就越高。煮熟的鸡蛋比生鸡蛋更有价值,组装完整的早餐比它的各个组成部分更有价值,而摆到顾客面前的早餐价值更高——最后这一份承载着顾客在看到"安迪的优质早餐(Andy’s Better Breakfasts)“招牌、把车开进停车场时与这家店联系在一起的感知价值。同样,一个完工的编译器比语义分析、代码生成和运行时这些组成部分更有价值;一个我们准备发出录用通知的大学毕业生,对我们来说也比在校园里第一次见到的那个大学生更有价值。

有一条我们应始终遵循的普遍法则:在生产过程中价值最低的阶段发现并修复任何问题。因此,我们应当在供应商送货时就把臭鸡蛋找出来拒收,而不是让顾客发现它。同样,如果我们能在校园面试阶段就决定不要某位候选人,而不是等到工厂参观时才发现,就能省下差旅费用以及候选人和面试官双方的时间。我们还应当尽量在组成编译器的各个部件的单元测试阶段发现性能问题,而不是等到最终产品本身的测试过程中才发现。

最后,冒着被视为铁石心肠的风险,让我们把刑事司法系统(criminal justice system)当作一个旨在找出罪犯并把他们送进监狱的生产流程来考察。生产始于有人向警方报案、警方出警。在许多情况下,问过一些问题之后,就再没有进一步行动可采取了。对于那些警方能够追查的犯罪,第二步是进一步调查,但案件往往因证据不足、投诉被撤销等原因到此为止。如果事情推进到下一阶段,嫌疑人被逮捕,警方努力寻找证人、构建案情,希望能获得起诉(indictment)。然而,起诉又常常因为证据不足而无法成立。对于真正进入下一阶段的案件,接下来是审判。有时嫌疑人被裁定无罪,有时案件被驳回。但一旦定罪成立,流程就进入量刑和上诉环节:有时被判有罪的人会得到缓刑和假释,有时定罪在上诉中被推翻。对于剩下的一小部分人,最后一个阶段是监狱。

如果我们对每个阶段向前推进的比例以及每个阶段的成本做一些合理的假设,就会得出一些惊人的结论。如果我们把为获得定罪所投入的全部努力的成本汇总起来,并且只把这些成本分摊到那些最终真的进了监狱的罪犯身上,就会发现单次定罪的成本高达一百多万美元——这绝对是个令人震惊的数字。数字之所以这么高,当然是因为被指控的人流中只有很小一个比例能一路走完全部流程。人人都知道监狱人满为患,许多罪犯最终服刑时间更短,甚至完全不用坐牢,因为牢房严重短缺。于是产生了一种代价极其高昂的权衡,违背了最重要的生产原则。这里的限制步骤显然应该是"获得定罪”。即使在今天,一间牢房的建造成本也只有大约 8 万美元;再加上每年关押一个人所需的 1 万到 2 万美元,与获得一次定罪所需的一百万美元相比,都只是小数目。因为缺一间 8 万美元的牢房,就不去关押一个社会已在其身上投入了超过一百万美元的罪犯,这显然是对社会在刑事司法系统上的整体投资的滥用。而之所以会发生这种事,是因为我们允许了错误的步骤(牢房的可用性)来限制整个流程。