名书名人

大棚读书-《卓越程序员密码》-上篇

本原创文章属于《Linux大棚》博客。

博客地址为http://roclinux.cn

文章作者为roc

希望您能通过捐款的方式支持Linux大棚博客的运行和发展。请见“关于捐款

==

雨夜,北京,在家读了《卓越程序员密码》一书,觉得有一些内容值得回味,所以写了这篇读书笔记。

本书的封面:

卓越程序员密码
卓越程序员密码

本书的作者是Ka Wai Cheung,一看名字就知道是中国人,的确如此,作者名叫张家为,是一名程序员和设计师,同时也是美国芝加哥“We Are Mammoth”公司的联合创始人,公司名称翻译成中文是“我们是猛犸”,很好玩的一个名字。

出于好奇,我看了We Are Mammoth的网站,网站设计的既有趣又有爱,可想而知,这是一家充满活力的公司。如果大家有兴趣,可以去那里浏览他们的公司主页。

这本《卓越程序员密码》,并不厚,全书总共只有157页,分为9个章节,分别是“引言”、“比喻”、“动力”、“生产力”、“复杂性”、“教学”、“客户”、“代码”和“自豪感”。直到第8章才提到代码,足以说明这本书其实并不是教你如何编程的,而是教你如何高效的出色的完成任务的。

言归正传,我们来看看这本书里哪些段落是值得回味和思考的。

【思想相通】

在编程的世界里,我们会和各种各样的“语言”打交道。虽然我主要的服务器端开发语言是C#,但我的工作方法却几乎可以完全应用到Java、PHP、Ruby和Python上。编程语言虽然有不同,但核心的编程思想、方法和架构却是高度类似的。我们只是用不同的方式来表达而已。

【普通人不了解编程】

大厨用不着琢磨烹饪要怎么比喻,肉汤要是太咸了,你一下就能尝出来了;音乐家也不用这么拐弯抹角地描述歌曲,一个调子听起来太老套,是因为你早先就听过一样的节奏。别人一下就明白了。然而,编程可不大一样。普通人看不出来什么样的代码优雅,什么样得代码一团糟。我们这个行业非常新。人类做饭、创作音乐、盖房子都有几千年了,可是考古学家还没在岩壁上发现“人类坐在桌前打字”这种图案。

【不要过度规划】

在传统的建筑行业中,规划是至关重要的。因为要建一个摩天大楼,撤销(ctrl-z)、剪贴(ctrl-x)和拷贝(ctrl-c)都是行不通的。建筑上没法享受这些简洁而强劲的案件,所以需要非常详尽的说明书。日进斗金的房地产生意和灾难性得头条新闻之间就只有一步之遥。所以,要是打算建造一栋摩天大楼,把建筑说明书写得详细到让人想吐才是最合理的做法。

反过来,这些就是我们这个行业独有得奢华享受了。软件组件又不需要等着本地的工厂发运字母和数字。打字、编译、测试,然后重复就行了。我们可以在实际产品上测试代码,而不用对着产品的某种模具测试。在开发过程中,我们可以看着悬索桥断成千上万次,在各种地方断,在各种条件下断,而不用担心浪费材料或者闹出人命。

在写第一行代码之前做出非常详细的说明书仍然有些好处,但这没能充分利用到这种媒介的优势。“规划、规划、规划”过于强调要花大量时间计划让所有东西臻于完美,而忽视了可以用好实际写代码的工夫。

【扔掉旧代码】

即使我确定要重新实现我前一阵子写过的东西,早先注释掉的东西一般来说也无论如何用不上。我可能把其他地方的逻辑动过了,旧代码里面引用的对象或者方法可能也变了。比起重新干干净净地把代码写对,要把这旧代码救活,我得花上更多的时间在那儿东敲西补。

不要把代码囤积在注释里,删除代码可以让代码库精简。眼前的页面应该精确地反映出软件现在的工作方式,一分不多,一分不少。现在就扔掉旧代码,在编程中间就不用跳过一堆不相干得垃圾字节。我们以后也用不着去琢磨,这一大团已经注释掉可看起来还很重要的代码,到底还是不是那么重要。

【多元化胜于专业化】

在传统的建筑行业里,让电工兼任水泥浇筑工,或者让铺砖工去装管道都是不现实的事情。他们都各有专长,各司其职。但把同样的理念移植到我们这个行业就不大站得住脚了。我们工作所用的工具无非就在眼前的这块屏幕上。如果正在搞SQL,也用不着要换个地方才能写HTML或者是在Photoshop里面弄上一张图,只要在计算机上切换程序就行了。编程的科目之间,没有任何物理上的障碍。

【工作即福利】

在我们这个行业里,长久的动力并不来自于福利。当然,高薪和免费午餐确实不错,能随时玩玩桌上足球机也不赖。但归根结底,长久的动力来自于我们所做的工作。我所见到的每个有激情的程序员,在谈论起经过长时间苦苦思索才为技术问题找到的优雅解决方案时,都异常兴奋,这比说起在公司编程大会上赢得10%的加薪要兴奋得多。

【福利可能是毁灭性的】

表面化的福利实际上会削弱人们工作的积极性。是的,在我们面前晃动的胡萝卜可能让我们更加没有工作的激情。

传统的商业激励因素,比如大笔奖金,可能会成功调动员工的积极性,但只能用于那些简单琐碎的工作,类似于把数据从一张表填到另一张表这样的工作。

相反,那些需要批判性分析和创造性解决方案的工作,就像我们每天面对的这些,把金钱奖励挂在员工眼前晃悠则没什么用处。在一些涉及高层次思考的实验中,金钱激励和业绩之间是负相关:给一组特定研究对象的金钱奖励越多,他们最后做的越糟。

未完待续…

谢谢!

1条评论

发表您的评论

请您放心,您的信息会被严格保密。必填项已标识 *