写点什么

书评:《代码之道》

  • 2010-03-09
  • 本文字数:2582 字

    阅读完需:约 8 分钟

乍一看书名——《代码之道》——呵呵,好大的口气!何为道?道家创始人老子认为“道”是宇宙的本原和普遍规律。这样一本仅仅 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 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

2010-03-09 08:295193
用户头像

发布了 501 篇内容, 共 283.9 次阅读, 收获喜欢 64 次。

关注

评论

发布
暂无评论
发现更多内容

工作流自动化 低代码是关键

力软低代码开发平台

Substrate 源码追新导读: 4月底重大更新: Nomination Pool 即将上线, NFT增加锁定功能

彭亚伦

Substrate 波卡 波卡生态

Bit.Store:熊市漫漫,稳定Staking产品或成主旋律

鳄鱼视界

带你认识图数据库性能和场景测试利器LDBC SNB

华为云开发者联盟

人工智能 华为云 图数据库

【ELT.ZIP】OpenHarmony啃论文俱乐部—见证文件压缩系统EROFS

ELT.ZIP

OpenHarmony 压缩数据 压缩算法 ELT.ZIP

2022年第一季度消费金融APP用户洞察——总数达4479万人

易观分析

消费金融

【干货分享】红黑树硬核讲解

C++后台开发

后端开发 红黑树 linux开发 Linux内核 C++开发

拥抱云原生:江苏移动订单中心实践

鲸品堂

云原生

4种方法教你如何查看java对象所占内存大小

华为云开发者联盟

Java 开发 内存 代码

数仓的字符截取三胞胎:substrb、substr、substring

华为云开发者联盟

数据库 后端 开发 华为云

SQL报了一个不常见的错误,让新来的实习生懵了

华为云开发者联盟

数据库 sql 程序员 后端 华为云

Vue3 - $attrs 的几种用法(1个或多个根元素、Options API 和 Composition API)

德育处主任

Vue composition-api 组件通信 6月月更 Vue透传

可观测,才可靠:云上自动化运维CloudOps系列沙龙 第一弹

阿里云弹性计算

DevOps 可观测性 自动化运维 CloudOps

基于 Nebula Graph 构建百亿关系知识图谱实践

NebulaGraph

知识图谱 Nebula Graph

什么是 ICMP ?ping和ICMP之间有啥关系?

wljslmz

网络协议 ping ICMP 6月月更

开箱即用!Linux 内核首个原生支持,让你的容器体验飞起来!| 龙蜥技术

阿里巴巴云原生

Linux 阿里云 容器 云原生

【ELT.ZIP】OpenHarmony啃论文俱乐部—数据密集型应用内存压缩

ELT.ZIP

OpenHarmony 压缩数据 压缩算法 ELT.ZIP

Bit.Store:熊市漫漫,稳定Staking产品或成主旋律

小哈区块

Hi,你有一份Code Review攻略待查收!

Jianmu

后端 Code Review 代码规范 SonarQube checkstyle

开源二三事|ShardingSphere 与 Database Mesh 之间不得不说的那些事

SphereEx

数据库 SphereEx Apache ShardingSphere Database Mesh Pisanix

如何使用物联网低代码平台进行画面管理?

AIRIOT

低代码 物联网 低代码开发 低代码开发平台 低代码,项目开发

跟着官方文档学 Python 之:简介

甜甜的白桃

Python 零基础 6月月更

在线文本按行批量反转工具

入门小站

工具

大数据性能提升28%!阿里云新一代本地SSD实例i4开放公测

阿里云弹性计算

大数据 io SSD NoSQL 数据库

NFT双币质押流动性挖矿dapp合约定制

开发微hkkf5566

OpenSSF 安全计划:SBOM 将驱动软件供应链安全

SEAL安全

软件物料清单

如何制作登录界面

海瞳Seapupil

国内首家!EMQ加入亚马逊云科技“初创加速-全球合作伙伴网络计划”

EMQ映云科技

物联网 IoT emq 亚马逊 6月月更

等保三级密码复杂度是多少?多久更换一次?

行云管家

堡垒机 等级保护 过等保 等保2.0

2022年中国音频市场年度综合分析

易观分析

音频市场

书评:《代码之道》_Java_崔康_InfoQ精选文章