跳转到路径导航栏
跳转到正文内容

“懒”出生产力是程序员的重要美德

http://www.sina.com.cn  2008年08月20日 10:03  IT168.com

IT168 分析评论

程序设计并不是一种单靠认真工作就能够开花结果的工作。因此,程序员的“懒惰”美德,是建立在希望尽量少做点事,以最小的力气达成目标,同时保持不变的质量,或是提升至更好的质量。

Perl之父Larry Wall曾说过,程序员的三大美德是“懒惰”、“不耐烦”、以及“傲慢”,其中“懒惰”高居三大美德之首,这一回就让我们来看看程序设计的懒人之道。

惰性是人类科技持续进步的最大动力

这字面上的“懒惰”,或许叫人误解,以为这是在暗示好的程序员是因为不愿意尽心投入程序设计工作,才会想要偷懒,尽量让自己少做点工作。不过,能成为卓越程序员的人,几乎没有例外的热爱程序设计工作,对他们来说,程序设计本身就是乐趣所在,只可能深陷于其中无法自拔,而没有不愿意多写点程序的。

我们可以把“懒惰”分为两种,一种是单纯的不想做事,而另一种则是希望尽量少做点事,却达到一样的目标。同样是想要少做点事,后者却有着截然不同的正面、积极意义。而程序员的“懒惰”美德,也是建立在此种“懒惰”基础之上。

知名的手机制造商Nokia说“科技始终来自于人性”,而这句话中的“人性”其实意味着人性中的需要,所以人们都说“需要是发明之母”,许多有用的科技,都是源自于人性中各式各样的需求及欲望,而在这些需求及欲望中,想要“偷懒”的念头,绝对是具有相当重要的地位。

倘若说“懒惰是发明之母”,实在是一点也不为过。人类发明马车、牛车,就是希望藉由兽力提供额外的动作,好让人类在交通运输上能够更为轻松,这当然完全是出自于“懒惰”的想法。人类之后更发明了火车、汽车、甚至飞机,大幅提升了“懒惰”的程度。

许多工程师绞尽脑汁、苦心孤诣的设计,最终便是希望得到一个让自己、也让所有人都能够偷懒的产物。从这个观点来看,惰性实在是人类科技持续进步的最大动力。

程序设计的懒人之道──四两拨千斤

所以说,倘若从正向的角度来解读“懒惰”,工作偷工减料,其更积极的意义,应该是“以最小的力气达成目标,同时保持不变的质量,或是提升至更好的质量”。从这样的定义来看,“懒惰”的确可以做为程序员的美德之首。

程序设计并不是一种单靠认真工作就能够开花结果的工作。一名程序员的工作成效,往往很难单纯地只倚靠工时的长短来评估。

工作时间长的程序员,可能是工作能力出了问题,才会需要花费更多的时间。有许多优秀的程序员,只需要花上少许的时间,就能得到和别人一样、甚至更好的工作成果,原因之一便在于优秀的程序员懂得如何偷懒,而偷懒的真正意义,是以最小的力气达到一样的结果。

程序设计的懒人之道便是四两拨千斤。施四两之力,得千斤之结果。掌握这懒人之道,便能掌握提升时间效率以及生产力的关键。

懒人善用工具增加生产力

想要偷懒,你可以从许多面向来着手,而第一个会被大家所先想到的,便是开发工具上的辅助。的确,如果你想要偷懒,第一件事便是要试着尽可能地自动化所有的事物。

在程序撰写的过程中,有太多具重复性、单纯只是劳力性质的工作。所有具有规则性的事物,都可以利用自动化的方式,让工具为我们代劳。例如善用程序代码的产生器,便可以免去人工撰写那些机器便有能力产生出来的程序代码。

又好比一些自动化的建构工具,例如在Java社群广泛被使用的ANT,便是一套透过让你描述建构软件的程序,藉以自动化执行此一程序的工具。透过这样的工具,在建构过程中的许多动作,例如自版本控制系统中取出原始码、编译原始码、部署至测试环境、单元测试,及寄发测试报告等,都可以轻易地自动执行。

降低人力介入的程度,不仅省时省力,也不易犯错。此外,许多IDE也都提供了像程序代码自动补全(Automatic Code Completion)、或自动API提示的功能,都可以省掉许多打字及查询API文件的时间。

优秀的程序员,多半懂得如何善用各式工具。

尽管许多工具都能提升撰写程序的效率。但许多程序员都存在着对工具的迷思。并不是每种工具都适合每个程序员,原因在于每个工具的定位不同。工具并不是威力越强大就越好,你必须挑选适合用途的工具,正所谓杀鸡焉用牛刀,杀鸡不仅不需要动用到牛刀,用了牛刀,鸡反而可能也杀得不好。

懒人运用重构提炼自有的链接库

真正优秀的程序员并不完全倚靠工具来达到偷懒的目的,事实上,工具所能节省的,往往并不是关键,真正的关键还是在于程序员自己如何进行设计。

真正偷懒的程序员,会持续地让自己的设计保持在一种很容易可以偷懒的状态,也就是说,只需要花费一点点力气,就能得到自己所需要的东西。这就是我所说的四两拨千斤。

如何让自己的设计尽可能的保持在一种很容易可以偷懒的状态呢?关键之一说穿了,还是要让自己的设计尽可能地可以被重复运用,而且是跨项目的重复运用。许多项目所欲开发的系统,或许最后呈现出来的面貌有着很大的不同,但内部会运用的元素,往往都落在一定的范畴之内。化学元素周期表中的元素总数仅有一百余个,但却也能组成了我们所见到的无数种物品。

设计出能够跨项目重复使用的程序代码,需要搭配持续重构,并且让自己的程序代码朝着更佳的通用性持续演化。当你在执行重构时,会找出形态相似的程序代码,并且利用提炼函式或类别的技巧,将它们以更为通用的型式整理出来。你(或你的团队)需要建立一个自有的链接库,放置这些通用的程序代码。而且,必须在项目中持续使用链接库中的程序代码。唯有如此,才能持续考验它们并且让它们有演化的机会。

懒人不随便重新造轮

虽然我鼓励人们建立自有的链接库,容纳在开发过程中所找出来的通用程序代码,但却不鼓励人们反复地重造轮子。懒惰成性的程序员,是不会浪费时间去重新建造轮子的,一定是从既有的轮子中挑选出适用的,再施以最小的力气,添加一些程序代码,使得所选出来的轮子,能够顺利地接上自己所开发的车子。

所以,把“懒惰”视为美德的程序员,绝不轻易地重新开发已经存在的东西,而是会尽可能加以利用──尤其是开放源码的成品,因为这代表你可以自行加工或修缮的空间较大。现成的产物就是你能够得到的千斤,而四两就是你所施加的额外力气。倘若每个轮子都自己重头来过,那么施千斤力,或许反而只会有四两重的效果。

随着时间的过程,懒惰的程序员会累积出相当多的资产,这些资产是可以被灵活地运用在各种项目中。懒惰的程序员在面临一个新的开发需求时,所做的事情,往往不是将程序代码重头写过,而比较像是把可被重复运用的程序代码,当做积木一般堆积起来,生产力自然大大的不同。

懒惰的最高原则:不浪费力气在不会发生的需求上

偷懒的程序员更不会犯了设计过度工程化(Over-Engineering)的毛病,因为过度工程化,会浪费无谓的力气在不会发生的需求上。懒惰的程序员只会专注在面前以及可见的近端未来。

你瞧,偷懒的天性竟会对程序设计带来这么多的好处,难怪它是那么重要的美德了。

 

Powered By Google ‘我的2008’,中国有我一份力!
企业服务 
智投助力企业广告营销  新浪智投-中小企业网络广告金算盘  pfpif.sina.net
爱学习上新浪教育  好好学习 天天上『新浪教育』  pfpif.sina.net
金融危机如何留学  一手资讯 一线专家 全面解析 新经济形式对留学的影  pfpif.sina.net
听,就听值得相信的  通过更权威更可信的信息平台了解公务员报考信息  pfpif.sina.net

新浪简介About Sina广告服务联系我们招聘信息网站律师SINA English会员注册产品答疑┊Copyright © 1996-2008 SINA Corporation, All Rights Reserved

新浪公司 版权所有