论木匠和程序员的异同[转]

所谓“软件工程”,就是因为前辈们意识到软件开发和传统工程领域有着众多的相似之处而从那些已经步入成熟阶段的领域 借鉴了很多管理学知识而形成的,但如果笼统地说软件工程就是新瓶装旧酒恐怕又不太贴切,借鉴是借鉴,但是软件开发这种主要是逻辑思维的工作又和那些严格遵 循物理学公式的土木工程有着很多差异。很多相关书籍喜欢把软件开发跟建筑工程做比较,但我从大学时候就常在思考软件开发同木工之间的相似,我更坚持地认为 相比修房子,软件开发更像是做家具。

我不敢说自己对软件工程有多么深切的体会,更不敢扬言 我在木工方面有多么深厚的造诣,我只是在工作之余,谈谈自己的一些想法,抛开具体的技术实现细节,着重从行业概况入手,也算是同各位网友共同思考我们应该 如何面对当前的行业氛围。如果你觉得我说得有道理,可以细细想想;如果你觉得我写的是鸡肋,那你就当笑话听吧。

我 小的时候,市场经济还不够发达,但是已经没有“走资派”一说了,于是工厂里一些有木工手艺的师傅也会在外面接点儿私活。我印象最深的一次是姥姥家做家具, 请来一位大叔,看样子跟我姥爷关系比较熟,总之我们对他不那么见外,他的做工也很让人满意。他刚来的时候并没有急于做什么,而是认真详细地听我姥姥、姥爷 对于新家具的描述,然后开始在纸上画图,等双方意见达成一致之后才动手开始做。他做家具的时候总是能从他的挎包里掏出很多我没见过的很新奇的玩意儿,有些 东西我不记得了,有些东西我到现在都还不知道叫什么。他开始在木板上画线,然后锯、刨、拼接、上漆、晾干,当然中间间或会穿插一些例如校正和修改等工序, 但这并不是我们探讨的重点。几天之后就全部做好了,我已经记不全都做了些什么,不过他做的凉板床我印象很深刻。“凉板床”大概是我姥姥取的名字,就是用木 板做床面,中间可以折叠起来的,把一边竖起来就是沙发,放平就是床,夏天无论坐着还是睡着都很凉快的,另外,之所以我对它印象最深刻是因为我在它上面度过 了不少童年时光,无论是看电视、玩小汽车还是罚跪,总之,它是我童年回忆中不可或缺的。

上面的话题如果再不打住,可能各位看客就有倦意了,毕竟我想诸位IT人士绝大多数应该都没有木工方面的工作经验,也未曾听说过哪位木匠跳槽当了程序员,所以我们还是跳转到咱自己的领域来吧。

其 实,IT圈子里的这种“木匠”也不少见,做私活似乎是很多程序员业余生活的一部分。首先跟客户进行需求分析,需求分析不在于有多么优雅完善的文档,而是实 事求是,搞清楚用户想要什么,同时让用户你做出来之后最可能是个什么样子(因为二者之间必定是有偏差的),正如那位木匠师傅一样,他听了我姥姥、姥爷的需 求后在一张皱巴巴的纸上画出了原型,那时候的人都比较淳朴,不知道如何去描述这个过程,用现在时髦一点儿的话来说就是:程序员听取了客户的需求后迅速在笔 记本电脑上用Visio画出了Prototype并以此来作为实际开发工作的重要依据。做这些家具对于一个有数年或数十年工作经验的木匠来说只能算是小项 目,就像程序员如果一个人去接项目的话往往也都只是接一些小项目一样。因为工作经验比较丰富,所以他熟悉项目开发的每一个环节,因为项目不大,所以不是每 个环节都需要多么精深的技术实现,最后,都可以搞定这个项目。木匠师傅从选材(其实是我爷爷选的,但没有他的确认恐怕也不能用)、设计、制作、校正、上漆 都一手包办了,而一位经验丰富的程序员面对这样规模的项目也能做到从需求分析、制作原型、实际开发、测试、修改bug、制作安装程序等一手包办的。

我举了个“个人桌面应用”级别的开发实例,相信大家对我的观点也有些许认同吧。现在的软件往往都很庞大,无论是办公软件还是游戏,一张CD盘已经不够用了,要装在DVD里面才算过瘾。那么面对大规模的软件/木工项目我们如何看待呢?

其 实木工也是有“企业级应用”的,世界上可能除了爱斯基摩人很少使用木器,其它各个民族都很偏爱各种木头吧,尤其以东方人最为显著。不扯远了,我们还是看看 自己身边的例子就够了。每次在故宫里面闲庭信步,我都会深深地折服于古代工匠的精湛技艺,故宫中有很多殿堂、房屋、亭台、楼阁都是大量使用木材而建造起来 的,你走进故宫几乎任何一间房子都会发现这与欧洲中世纪的那种冰冷的石头城堡的确不一样,尽管是木头,有的甚至都不需要钉子,却历经数百年而不倒,同时你 不得不为其所具备的气势所折服。显然,这些项目的规模都远远大于那个凉板床,更不是哪个木匠一个人接私活就能做出来的。大批的木匠经历了不知道多少个人月 才有了今天中华民族的骄傲,这种大规模的协同工作不正是今天大型软件企业的真实写照么?看过央视纪录片《故宫》的朋友应该都有感触,这么大规模的项目开 发,没有优秀的架构师不行、没有各级管理阶层不行、没有各部门分工协作不行、没有各开发人员的兢兢业业更不行……故宫里的物件都是精心打造的,所以件件堪 称精品,但我也敢保证,同样是椅子,乾隆爷的宝座至今是绝世艺术精品,但当时普通老百姓家里的椅子就算保留到今天恐怕也很难被人当文物看待,同理,高深的 软件开发方法理论可以成为艺术,但是会写个“Hello, world!”就要自认为领略了“计算机程序设计艺术”的精髓之所在,怕是就有点儿牵强附会了吧。同样是软件,F-22战斗机上面的软件程序有着严格的审 查要求,所以肯定属于精品,而同时网上也流传着很多严重骚扰大众审美观的软件,同样是软件,为什么差距就那么大呢?

中 国古代2000多年,实际上工匠所使用的技艺没有多大变化,真正的变化应该从洋人用炮火打开中国国门时算起,工业化的时代影响了传统的手工制造业,木工经 过数千年的发展,已经有了很多深刻的理论经验,再借助于工业化生产的优势,必定发生翻天覆地的变化,今天还有谁能看到黑压压一大群人在一块很大的平地上做 家具呢?按照今天国人的需求量来说,就算发动全世界人民都来做家具恐怕都忙不过来。但是,正因为有了很多先进的技术可以利用,才使得木匠们从重复繁重的体 力劳动中解脱出来,转而更加专注于项目的设计层面,所以今天我们不仅不缺家具,反而有太多令人眼花缭乱的家具来诱惑我们。

这 不是IT业的真实写照是什么呢?IT行业是一个很新的行业,它有太多好的先例和经验可以借鉴,所以它并不需要经历数千年的发展再慢慢日趋成熟,同时,现代 人的头脑又比较灵活,IT从业人员所具备知识基础普遍来说还比较偏高,所以这个行业注定要飞速发展(21世纪了,哪个行业不飞速就只有等死了),所以我认 为我们在IT领域看到的就是木工行业数千年的发展经历的一个缩影。

数十年前,当计算机还很 庞大、很神秘时,只有少数一些人会操作它,这些人又往往不是“计算机科学家”而是数学家或者物理学家(这回好像是先有蛋后有鸡),他们用一长串0和1的组 合来控制这个大机器,外行人很少有机会看到他们如何工作,即使看到了也没用,压根儿看不懂(所以IT行业自‘古’就有高人一等的优越感)。但那个时候的计 算机,基本上只具备科研价值而不具备任何生产和生活价值,没人能用它来做财务统计报表或者听MP3。后来时代进步了,技术也发展了,有了汇编,编程的门槛 开始“堕落”了,再到后来出现C语言、面向对象……到现在,中专生都可以在IT圈里成为风云人物(有贬义但无歧视)。同时我们看到,软件开发的效率的确上 去了,电脑的体积也越来越小,没有人会专门为家里的台式机准备一间带空调、无尘的卧室,更没有人上班不带U盘而是抱着一大圈长长的打着很多小孔的纸带了, 当然,当年发达国家为了搞核试验而找一大群人坐在一间很大很大的屋子里一起用老式计算器算各种数据结果的壮观场面也一去不返了!

人 们开始注重分工、注重设计、注重理念、注重品质。无论是JDK还是.NET Framework的出现都是这个行业在技术领域的一次重大进步,它让众多开发人员从繁琐重复的工作中解脱出来,更多地关注架构和设计,并获得成倍增长的 工作效率。我记得.NET Framework刚出来那阵儿很多人还不能接受,因为他们坚持认为那是微软又一个让开发人员变懒的玩具,当然,每个人多多少少都会有怀旧的思想, Bill Gates一定还对30年前面对蓝色的屏幕通宵编程的生活记忆犹新。怀旧可以,但如果因为怀旧而阻碍了时代的进步就不划算了,我在想如果让那些人去看看那 黑压压一片人繁忙地在一起做家具,他自己要买个小茶几都还得排3个月的号,那他会怎么想呢?不活了?

我 一直不接受一些前辈拿软件开发跟房屋建筑相比的理论。房屋建筑真的太遵循物理学理论了,根据现成的公式计算,这房子这么造能抗得住几级的风,那么到时候那 么大的风来了它就肯定不会倒(豆腐渣工程要另当别论),然而有过软件开发实际工作经验的朋友一定都会有一个感受就是经常程序看上去明明没错,但运行的结果 总是不对;或者这个程序刚才还好好的,现在突然就不work了,不知道待会儿能不能自己起死回生;有些时候碰到问题实在不知道怎么解决,索性关了电脑第二 天再打开的时候没准儿它又莫名其妙地好了……根据一些书籍的解释,有时候程序出错可能是因为内存条受到了电子干扰。天呐,怎么上帝到了IT这个领域也喜欢 不按套路出牌了呀!

木器也会存在很多不确定因素,例如浸水、受热等等,木材的物理变化显然要比钢筋、水泥活跃的多,有些时候可能图纸上明明画得没错,但做出来的物件就是拼接不上;有时候明明很气派的家具,可没用几年就变形了……

例 子不多举了,我写到这里突然觉得大家还是就当笑话看比较合适。我觉得IT人士那种“与生俱来”的优越感纯属自我感觉良好,每次看到这种情况我都会想起慕容 雪村那句对“白领”的经典描述:“白领就是民工看他们像老板,老板看他们像要饭的,要饭的懒都懒得看他们一眼。”另外,我觉得如今弥漫在整个IT行业甚至 整个社会的这股浮躁、拜金的氛围已经到了不得不让人引起注意的地步了,这种氛围就犹如弥漫在战场上的毒烟,让我们在不知不觉中丧失战斗力甚至信念。所以, 想想数千年来那些默默无闻的木匠们吧,他们创造了一个又一个奇迹,而我们,做着应用级别的开发,有何脸面去享受理论研究级别的荣誉呢?

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值