一、"生产"包含什么?
你必须按预定的时间、可接受的品质以及可能的最低成本,依据顾客的需求制造及运送产品。
1.生产步骤(三项基本的生产步骤)
(1)制造:这种生产活动通常有物理或化学变化。煮蛋便是物理变化的一种。
(2)组装:将零件拼装组合在一起产生新个体。就像我们把鸡蛋、面包和咖啡组成一份早餐一样。
(3)测试:对零件及最终产品作检查。我们可以以目测来鉴定咖啡是不是煮好了,面包有没有烤焦。
制造、组装及测试可以灵活运用在其他不同的生产活动中。以训练业务人员销售新产品的任务为例,我们便能清楚划分出这三个要素:
(1)制造:营销和研发人员将一大堆产品资料转化为业务人员理解的销售策略,这个将资料转化成策略的过程便是制造。
(2)组装:将各种销售策略组合成完美的销售计划。在新产品上市的会议上,营销人员将最合适的策略和必要的市场资料(如竞争商品的价格和存货状况)结合产品说明、宣传册及活动挂图向业务人员报告。
(3)测试:在真正上市之前应先有一场虚拟的上市发布会。在此会议上,被挑选出来的业务代表要对策略及销售工具等做出反馈。如果反馈不佳,亦即测试结果不良,整个策略就必须修改或重新制定,以符合原定的营销及销售目标。
如计算机编译器的发展也同样牵涉到制造流程、组装、测试这三项要素。
表面上看,准备早餐、招募新人、业务人员训练,甚至编译器的设计这几件事简直毫不相干,但本质上它们都有着相同的基本生产流程。
2.复杂化
现实生活中总是布满荆棘。
如果你是这家餐厅的经理,你可以考虑让某些人专司一职。你可以让某个人专门烤面包、专门煮蛋或是专门倒咖啡,然后再找一个人来监工。当然了,这笔人工支出可能太大,让你连想都不敢想。
如果你是服务生,你可以请也在排队的同事帮忙,在你去放蛋时让他帮你放面包。但当事情必须寻求他人帮助时,结果通常很难预期。身为餐厅经理,你也可能再多买一台烤面包机,但这又会是一笔昂贵的支出。
或者你也可以持续不断地烤面包,这样一来虽然增加了面包的存货成本(有一些面包烤好放很久了就得丢掉,而热面包将可以随时供应。总归一句话,至少你知道天无绝人之路,总有一些办法可想。你可以增加设备产能、增加人手或是提高存货量,每个办法各有利弊,但也都对整个烤面包的流程有帮助。
3.找出最佳策略
因为每一个方案都得花钱,你的责任就是找出一个最具成本效益的方法来运用资源,这也是所有生产活动最佳化的关键。
虽然人们常说世上无绝对,但凡是能以最低成本达到理想的运送速度以及品质的,便是最佳方案。为了找出最佳方案,你必须了解各方案(诸如增加人手、增加产能以及提高存货量)的利弊得失(注意,并不是要你拿着秒表去计算每个人等烤面包机的时间,或是用任何高等数学知识去计算存货和设备成本)。重要的是你必须了解生产过程的每一个步骤及其互动关系。
4.测试和验货
连续性作业并不能保证较低的成本和较好的品质。
试想:如果煮蛋机的水温失控的话会发生什么--在失控期间所煮出来的蛋将成为废品,而同一时间生产的烤面包也将因为没有蛋可以一起送上桌而成为废品。
你该如何将这种风险降至最小?
功能性测试会是一个好方法。你要不时地敲开煮鸡蛋检查它们的品质,但这样你也必须丢掉检测过的蛋。
另一个方法称为"线上检视",包括多种做法。举例来说,你可以找一根温度计经常性地检测水温。为了节省聘请专人读温度计的费用,你可以请人设计一个小机关,只要水温和设定的温度差了一两度就会铃声大作。这里的要点是:只要有可能,你都应该使用线上检视的方法,而避免必须要牺牲产品的测试方法。
但并非煮蛋机就可以一劳永逸,影响因素如下:
(1)煮蛋前,蛋可能臭了;
(2)蛋的大小影响煮熟的速度;
也有解决这些因素的办法->验货,如果验货时发现不合格,可以当场退货,但如果是这样的情况,可能导致没有原料可供制造。所以通常需要有一定的安全存货量来保障生产顺利进行。
注意:存货需要成本,你必须权衡累积一天存货量的利益和所需费用。
除了有形的费用外,还得考虑无形的风险,比如:
如果煮蛋机出现故障将会怎样?
你会失掉多少顾客?
要把这些顾客招揽回来的成本又是多少?
5.及早发现、及早解决
所有的生产流程都有一个共同的特性,就是原料在流程中会变得越来越有价值。
生蛋的价值不如煮熟的蛋,搭配好的早餐套餐比没搭配的价值高,而厨房里的那些"成品",只有摆在顾客面前才能实现其价值。因为顾客走进这家餐厅就是要享用它们。
一个已完成的编译器的价值远胜于之前的"零组件"--语义分析、程序编写及运行时间等。而在招募新人的例子中,一个我们决定雇用的大学毕业生,其价值远超我们在校园招聘时面试的学生。
我们应该谨守"及早发现,及早解决"的准则,如此我们便能在生产流程中价值最低的阶段修正问题。
因此,我们应该在蛋商送蛋之前让他们把坏的蛋挑出来,而不是让我们的顾客在餐桌上发现它们。同理,如果我们能在校园招聘时就决定筛掉哪些人,就可以省下双方在接下来的面试所花的时间和金钱。而在开发编译器的例子中,我们应该在单元测试时就找出问题,如果在"组装"好之后才发现有毛病,麻烦就大了。