InfoQ

InfoQ

文章

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

书评:《代码之道》

作者 崔康 发布于 2010年3月9日

领域
架构 & 设计,
过程 & 实践,
语言 & 开发
主题
团队协作 ,
设计模式 ,
编程 ,
架构 ,
代码分析 ,
Java ,
.NET ,
Ruby
标签
微软 ,
图书 ,
书评

乍一看书名——《代码之道》——呵呵,好大的口气!何为道?道家创始人老子认为“道”是宇宙的本原和普遍规律。这样一本仅仅200页的薄书能担得起“道”之名吗?笔者带着一丝怀疑翻开这本备受瞩目的书,细细的阅读,不知不觉中已是豁然开朗——书的内容言简意赅,每个话题占用仅仅数页,却清晰明白的讲述了若干个道理,笔者不由得感慨:在我们身心疲惫的或是斗志昂扬的追逐于各种丛出不穷的新技术、新概念的时候,我们能否暂停脚步,想一想走过的路,看一看类似《代码之道》这样的非技术书呢?

《代码之道》英文原书名为《I.M.Wright's "Hard Code"》,属于微软核心技术丛书之一,作者Eric Brechner,现任微软公司部门总监,在软件行业拥有超过20年的工作经验,从2001年起在微软内部刊物上采用I.M.Wright的笔名撰写“Hard Code”栏目,其中讨论软件开发过程和职业生涯的种种问题,这本书就是对这个栏目的总结,话题包括:

  • 项目管理
  • 过程改进
  • 软件质量
  • 软件设计
  • 提高效率
  • 职业发展
  • 自我完善
  • ......

针对每一个话题,I.M.Wright都根据丰富的工作经验提出了自己的观点,并介绍了来龙去脉,令人信服。笔者认为,大多数程序员,过于关注新技术和新概念,往往忽略这种对工作的思考和总结——现在,技术更新换代的速度令人咋舌,虽然提倡终身学习,但我们的有限精力应该放在“核心竞争力”上。不论技术如何发展,有一些能力是可以应用于各种环境的:

  • 解决问题的能力
  • 时间的安排
  • 事务优先级的处理
  • 工作与生活的平衡原则

《代码之道》对“核心竞争力”的各个方面也提出了自己的观点。对这本200页的精炼小书来说,笔者很难像写普通的书评那样对这49个主题再加以概括总结,因此,笔者挑选了几个有关“核心竞争力”的主题,结合自己的实际体会,谈一谈《代码之道》提供的经验。

1. 如何集中精力、避免打扰?

在日常工作中,电子邮件、即时通讯工具、口头交流等等都会在你埋头苦干的时候打扰你,如何应对呢?《代码之道》引用了两个研究成果(p131):

  • 沉重的情境切换与抽大麻相比,会导致更多的智商下降。
  • 员工在刚好的两个项目同时工作时最富有生产力。

I.M.Wright提倡的方法是:在工作时,把邮件通知提示等都尽量关闭,然后安心做自己的工作;定期的(比如,每隔半小时)浏览收到的邮件,并且在查 看邮件时尽力把它完整处理掉,避免情境的切换。你可能会认为这样会导致某些低优先级的邮件浪费时间,但I.M.Wright却认为你在过后再次切换到这封邮件所消耗的精力和时间要比即时处理还要多。

笔者也一直受到工作时被打断的困扰。特别是,一看到新邮件的提示,总是放下手中的活,冲动的打开新邮件先看大体内容,殊不知,这就导致了一次情境切换,有时候暂时不想处理,于是关掉邮件,继续手中的工作,又一次情境切换。就这样白白浪费了自己的精力和时间。笔者猜想,有相当数量的程序员在日常工作中被各种各样的事情打断,每天的有效工作时间逐渐压缩,这是否也是导致程序员经常加班的原因之一呢?

I.M.Wright 提出要想避免被打扰,还可以“让自己消失”,去一个没人能找到你的地方,使用笔记本电脑和远程桌面安心工作,或者选择一个其他人不在的时候工作,比如早上早一点来公司,晚上回家用远程桌面工作。在这样一个安静的地方和时刻,你就可以抛开不必要的困扰,集中精力做一些工作。

笔者对这个观点非常赞同,也是自己之前亲身实践过的。一段时间以来,笔者坚持早上八点半到公司,此时偌大的办公区基本空无一人,然后带上笔记本电脑,找一个小会议室,一直工作到上午10点钟才回到自己的办公桌。这段时间非常的安静,不论上班的同事如何来来往往,笔者都不受干扰,集中处理一些事情,效率很高, 即使在平常工作时间,也会尽量多呆在安静的地方。同时,笔者发现一个有趣的现象:当我呆在办公桌的时候,时不时的就会有同事询问各种各样的问题,小到一个域名对应的IP地址,大到项目计划的制定。但是,一旦我呆在会议室工作时,这些口头的问题就不翼而飞了,小的问题同事们可以独立解决,大的问题会通过正式 的邮件和会议进行交流,这样大家的工作效率都会有所提高——因为极大减少了彼此的情境切换次数。

2. 平衡工作和生活

这个话题对程序员来说有些沉重和苦涩,软件开发似乎是个工作和生活严重失衡的职业。不过,I.M.Wright认为这不是命运注定,他在应聘微软的时候,就向未来的上司提出,他非常顾家,需要保证正常的工作时间,早上送孩子上学,晚上回家用餐,而老板完全同意了他的要求,并且说话算话。I.M.Wright提出了一个平衡工作和生活的五步原则:

  1. 了解并接受你选择的生活方式。
  2. 跟你的管理者一起设置一些基本原则。
  3. 不要默默妥协。
  4. 必要的时候使用“远程访问服务”和远程桌面访问。
  5. 抛开分离造成的精神分裂错觉。

具体的说,你需要了解你自己,好好思考一下你的工作目的是什么,事业和生活的优先级是什么,你的忍耐程度是多大,一旦把这些问题想明白了,你就会在平衡问题上做出正确的选择;把自己制定的原则告诉你的上司,不要担心你的工作和前途,在第一步时你已经把这些问题和限度考虑清楚。I.M.Wright发现这种交流反倒会使你赢得上司的尊重,因为你具有强烈的自信和清晰的价值观;在工作中,偶尔的破例是可以容忍的,但是如果经常出现超出原则的情况,你就需要找机会重申你的态度,因为一旦你很容易就妥协了,上司会认为你并不在意你自己指定的原则(如果连你自己都不在乎,又能指望谁来在乎呢?)。他可能会提出越来越多的要求,直到你的原则一退再退,你原先的努力就白费了;如果你热爱自己的工作而且的确很重要,可以在家里通过远程访问等方式访问;不要试图把工作和生活分开,保持一个统一的心态,避免情景切换。

笔者在平衡方面也是个菜鸟,很少思考自己的原则问题,平常也是迁就工作,压缩生活空间,《代码之道》这方面给了很多启示,我们需要严肃的、正式的考虑一下平衡问题,有类似需求的程序员朋友们可以参考I.M.Wright提出的五步原则。

《代码之道》谈论的主题很多,不是一篇短短的书评可以全部覆盖到的,笔者觉得这本书很适合程序员们阅读,不是丰富我们的技术水平,而是为了让我们工作和生活更有效率、更有意义。

附:华章授权InfoQ中文站独家为大家提供额外的样章进行试读:欢迎下载第3章、第9章


给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家加入到InfoQ中文站用户讨论组中与我们的编辑和其他读者朋友交流。

微软员工的经验就算了 发表人 沙 俊星 发表于
Re: 微软员工的经验就算了 发表人 崔 康 发表于
这书好像是前年还是去年年初的书了,买了一本,没看完就被同事拿,还赖着不还,真想用猴皮筋打他家玻璃。 发表人 Kong Fanbin 发表于
Re: 这书好像是前年还是去年年初的书了,买了一本,没看完就被同事拿,还赖着不还,真想用猴皮筋打他家玻璃。 发表人 崔 康 发表于
Re: 这书好像是前年还是去年年初的书了,买了一本,没看完就被同事拿,还赖着不还,真想用猴皮筋打他家玻璃。 发表人 李 冬 发表于
如果没有看过这本书,就不要在这里说它好或是不好了。 发表人 Ma Karl 发表于
Re: 如果没有看过这本书,就不要在这里说它好或是不好了。 发表人 liang lu 发表于
工作和生活的平衡 发表人 z yl 发表于
  1. 返回顶部

    微软员工的经验就算了

    发表人 沙 俊星

    微软员工的经验就算了。还是《UNIX编程艺术》来得实在

  2. 这书好像是前年还是去年年初的书了,买了一本,没看完就被同事拿,还赖着不还,真想用猴皮筋打他家玻璃。

  3. 返回顶部

    Re: 微软员工的经验就算了

    发表人 崔 康

    此书似乎没有吹捧微软的意思,智者见智,至少可以批判地学习吧:)

  4. 的确是本老书了,书评早就完工,只有由于其他原因至今才发布,见谅!虽然来的晚了些,还是希望能够让InfoQ的读者有所收获。

  5. 现在想从内裤上搞个皮筋出来 越来越困难了

  6. 返回顶部

    如果没有看过这本书,就不要在这里说它好或是不好了。

    发表人 Ma Karl

    如果没有看过这本书,就不要在这里说它好或是不好了。

  7. 返回顶部

    Re: 如果没有看过这本书,就不要在这里说它好或是不好了。

    发表人 liang lu

    好想看,打算去买一本哦

  8. 返回顶部

    工作和生活的平衡

    发表人 z yl

    工作和生活的平衡的确难以掌握,深有感触啊。

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffrey Richter:Windows 8是微软的重中之重

Jeffrey Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffrey Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。