工程师的境界

2021-10-13

()

《庖丁解牛》虽然只是庄子写的一则寓言,却也生动形象地道出了通常学艺的三个阶段。

庖丁释刀对曰:臣之所好者道也,进乎技矣。始臣之解牛时,所见无非牛者,三年之后,未尝见全牛也。方今之时,臣以神遇,而不以目视,官之止而神欲行......

就象瑞德设计生产的电路板,工程师刚开始接触的时候,感觉虽然形状大小各异,但看上去都差不多,不过是在PCB板上布满了各种各样的元器件,这是第一阶段:“所见无非牛者”,实际上还是外行。

一段时间以后,看懂了电路板的原理图,再看从前的线路板,感觉就大一样,一眼就能看出哪部分是电源,哪部分是控制电路,哪部分是驱动电路,哪部分是显示电路,就进入了第二阶段:未尝见全牛也”,这时就开始入门了。

再过两三年,客户说出他们的产品需求,工程师的头脑里马上就有了一个轮廓,知道电路应该怎么设计,软件应该怎么写,进入了庖丁说的第三个阶段:方今之时,臣以神遇,而不以目视,官之止而神欲行”,成为了一个合格的工程师,甚至是某种产品的技术能手,或者开发专家。


成为技术能手的工程师是否就一定具有较高的境界,却不尽然。

九十年代中早期,我刚大学毕业,在中科院的一个研究所做空调遥控器和控制器的开发,使用MotorolaNEC的单片机。那时候,单片机还是比较新的技术,国内刚开始应用到家电上,工作两年以后,我对软件已经相当娴熟,使用汇编语言编程的速度是普通工程师的3-4倍,基本上如果客户提出一个新的功能,我两个小时内就能调试完成,自己也觉得似乎并不需要再学习很多新东西。

那时NEC的单片机开发工具很贵,动辄就要几万元,我们是租用NEC的开发工具,按月付租金的,因此我的编程速度快也能为公司节约不少成本。有一天,我们的总工问了我一个奇怪的问题:你能否用Motorola的编程器给NEC的单片机烧录程序?我当时一听就愣住了,觉得这问题很滑稽:怎么能用Motorola的编程器给NEC的单片机烧录程序呢,这是完全不同的两个系统。虽然我也知道他问这个问题的原因:相对而言,Motorola的编程器和仿真器都比较便宜,只有两千元,我们已经购买,而NEC的编程器没有,价格太高,也不愿购买,而且在仿真器上调试通过的程序,如果不写入单片机,焊到遥控器板上测试,也不能算真正的通过。

总工给我分析了单片机烧录程序的过程:通过串口把汇编好的机器码下载到编程器里,编程器再把机器码Copy到单片机的ROM中,不同的单片机烧录程序的过程是一样的,因此理论上就有可能用Motorola的编程器给NEC的单片机烧录程序。

我觉得他分析的很有道理,就开始研究如何实现这种跨越。分析发现:两种单片机汇编以后的机器码都是存在文本文件里,用通常的文本编辑器就可以打开,进一步分析发现文件的每一行都有一个固定的头,包含几个字节,中间一段是机器码,后面几个字节是校验码。所不同的是:MotorolaNEC定义的行开头不一样,后面的校验码也不一样。如果能把NEC的格式转化成Motorola的格式,问题就解决了。

似乎曙光就在前面,通常的做法是:把NEC的机器码分离出来,反汇编成Motorola的汇编程序,然后再汇编成Motorola格式的机器码。

但我们没有Motorola的反汇编程序,一时也不可能得到,研究工作一时陷入停顿。我和总工商讨如何解决,他说你不如把分离出来的NEC机器码,都定义成常数,只要Motorola的汇编程序能识别就行,反正电脑它也不知道是数据还是代码。

这样,我只要一条Motorola的汇编指令就完成了反汇编的工作,我用C语言写了一个程序,在PC上运行,输入是NEC的机器码文件,输出是Motorola的汇编程序,不到一周,就顺利地解决了这个难题。

经历这件事后,我对自己的工作有了全新的认识,回想庖丁之言:臣之所好者道也,进乎技矣”,感觉自己作为工程师的境界也提升了一层,我不仅需要掌握编程这种技术,还需要了解它内在原理和规律,这样才能解决更多的现实问题,为公司创造更多的价值。


()

有媒体评选出20世纪影响美国商业的杰出人物,排名前两位的分别是世纪头的亨利·福特和世纪末的比尔·盖茨,此二人皆为工程师出身。

盖茨,大家多有所了解,是软件天才。福特年轻时也是个天才的机械工程师,他从小就对机械感兴趣12岁时花了很多时间建立了一个自己的机械坊,15岁时他亲手造了一台内燃机16岁那他离开家乡去底特律做机械学徒工

28岁以工程师身份进入发明家爱迪生开的照明公司(GE的前身),两年后升为总工。后来离开爱迪生的公司,独自研究汽车,先后开过两家汽车公司,未获成功。1903年建立福特汽车公司,1908年福特公司推出了富有革命性的福特T型车,并多次在比赛中获胜。T型车最初售价是850美元,而当时欧洲的同等汽车售价是2000-3000美元。随后福特又在工厂中引入汽车流水线,大幅提升生产效率,把T型车的价格降到300美元以下,使汽车从有钱人的奢华品变成了平民百姓的生活品。

福特公司也获得了巨大的成功,1913年底,美国售出的汽车近一半是福特生产。到20年代,全世界一半以上的注册汽车都是福特牌的。福特也实现了他最初的梦想:让汽车成为百姓的代步工具。

盖茨从哈佛大学辍学以后成立微软公司,为IBM开发DOS操作系统。80年代,电脑还是少数人的专利,虽然功能强大,但难学难用,DOS是字符界面,普通人很难掌握。盖茨的梦想是:让每台办公桌上都有一台电脑,于是决定开发Windows操作系统,使用图形界面,让一般人也能使用电脑。

如今人们使用电脑的时候,Windows是必备的,也察觉不到从DOSWindows的这一跨越中,盖茨和他的微软公司曾经付出了多大的努力和艰辛。

从福特和盖茨二人的经历来看,都是先掌握了先进的技术,继而努力依靠技术来实现自己的梦想。无论是福特生产的T型车,发明的流水线,还是盖茨开发的Windows,都是为了改善人们的生活,或者提高生产效率,科技以人为本,二人都有一种以天下为己任的气魄和使命感:问苍茫大地,谁主沉浮?

Apple是另外一种类型的公司,它生产的每种产品都是艺术品:IPODIPhoneIPAD,让消费者爱不释手,成为时代的潮流,就算是一种简单的鼠标或键盘,Apple也能让它别具一格。

技术做到高境界,就变成了一种艺术。正如庖丁解牛,动作干净利落,节奏明快,象跳舞一样:手之所触,肩之所倚,足之所履,膝之所踦,砉然向然,奏刀騞然,莫不中音。合于桑林之舞,乃中经首之会。

作为工程师个人,在掌握了先进技术以后,有两条提升的途径:一是继续精益求精,把艺术变为技术,设计出精美的产品来,象Apple的工程师那样,专注于设计;二是依靠自己的技术来改善或消除现存工作的某些瓶颈,提高工作效率,或者创造出能改善消费者生活的产品,提高大众的生活品质,象福特和盖茨那样。

普通的工程师或许没有(也不需要)福特和盖茨那么高的技术,但只要你用心观察,认真思考,也可以发现许多改进工作,提升工作效率的机会。每次收到工资条的时候,我都有些奇怪,在信息技术如此发达的今天,为何还要用这种古老的工资条。其实这个工作可以不需要人工参与,通过发手机短信,邮件或者其他方式实现。

Oct, 2010


分享