译者序
高效能程序员的修炼
出版社的冀康一开始来找我谈翻译这本书的时候,我的第一反应是:这兄弟真是不知道我现在有多忙!我每天要处理200多封邮件;在资源有限的情况下经常要同时带6~7个项目,而且每个项目的交付计划都很紧,压力很大;每天起码工作12个小时,有时候还要熬夜跟美国同事开会;周六基本上也是工作状态……我哪里还有空来翻译书?!
后来,当我了解到这本书的作者是Stack Overflow网站的创始人Jeff Atwood,还有书的内容实际上就是从作者的博客网站Coding Horror精选而来的文章时,我开始有些心动了。Jeff的成就是值得尊敬的!这本书的主题和风格也是我喜欢的:一篇一个话题,针对性很强,讲的都是我们程序员自己的事。据说篇篇都很受人关注,引来读者评论无数。我的好奇心愈加强烈了:Jeff都说了些什么呢?好惭愧,我以前居然都没读过他的文章!
做吧!我一定能从Jeff的这本书里学到不少东西。而且,既然这些东西这么好,我一定要把它们介绍给更多的中国读者。时间哪里来?挤呗!时间是挤出来的!于是,我把所有的零碎时间都利用上了:陪儿子上早教课时在教室外守候的时间、午后休息的时间、晚上睡觉之前、坐地铁时、外出办事等候的时间甚至去美国出差和去泰国度假的途中……这本书就是这么“挤”出来的!
再说说这本书的内容吧。其实得先说说Jeff其人。他无疑是一位杰出的程序员。那是因为他写代码很厉害吗?其实,他在第1章就指出了,“成为一名杰出的程序员其实跟写代码没有太大的关系。做程序员确实需要一些技术能力,当然,还要有坚韧不拔的精神。但除此之外,更重要的还是要有良好的沟通技巧”。所以,这本书不是讲某种特定的编程语言的,也没有涉及太多具体的代码问题。因为Jeff认为,“如果要研究软件开发艺术,单纯研究代码是不够的”;他更多关注的是软件开发过程中的人文因素。因此,本书涵盖的主题非常广泛,包括对程序员的素养、做事方法、价值观的探讨,也谈到了编程风格、软件测试、团队合作、用户体验、社区管理、网络安全、市场营销等方面的问题。书中的很多观点并不是Jeff独创的,但他旁征博引、博采众长,把许多很棒的东西汇聚在一起,给读者奉上了一顿饕餮大餐。
Jeff 给我们指明了“程序员的八种境界”。他还在第2章中指出:作为程序员,大家不能只顾着埋头写代码。任何能让你成为一名更好的程序员的事情都值得去关注,别担心你会因此而分心、少写了N行代码,因为磨刀不误砍柴工。
Jeff是我们学习的榜样。这本书特别适合初入行的程序员阅读。对于已经工作过几年但碰到了发展瓶颈而倍感迷茫的老程序员来说,这也是一本极好的读物。我们不能总是低着头走路,而要时时抬起头看看路。希望Jeff的这本书能为你指点迷津。
本书的前半部分由张健翻译,后半部分由我翻译。张健是我大学时候隔壁寝室的兄弟。谁也不曾料到,十几年后的今天我们会有这样的一次合作。张同学平时工作也很忙,久居海外,对中文表达已有些许生疏。他翻译的部分我帮忙做了些润色,以保证全书有较为一致的风格。我们还在翻译的过程中添加了大量的“译者注”,这些背景知识往往都很生动,有助于读者更全面地理解原书的内容,也是本书的看点之一。
翻译工作历时半年,译稿几经修改——翻译一遍,再修改至少三遍——交稿时我虽已尽心竭力而问心无愧,但我相信书中还有很多地方可以改进。努力永无止境!感谢冀康给我这次机会,让我翻译这么棒的一本书。感谢Jeff在翻译过程中给予的支持,他对我的问题回复得很及时,还提供了很多额外的信息。同时也要感谢我的爱人谭洁红,她帮忙做了些美工,还审阅了部分译稿,在文字表达方面给我提出了很多建议。这么多感激之余,其实我还有些愧疚,因为半年来我很少有时间去陪我的儿子豆豆。令我感到欣慰的是,当我向他解释爸爸在忙什么时,他能够理解,然后一个人乖乖地去睡觉。而他以前是要在床上听我给他讲完一个故事后才入睡的……
写书或翻译书都很辛苦!我不得不牺牲很多业余时间,也少了跟家人交流的机会。每次我都对自己说,“这是最后一次了!”是吗?也许吧……关于本书的内容或者翻译上的问题,需要跟我交流的话,请爱特我吧。我的新浪微博:豆巴陆其明。
目 录
第1章 入门须知
你想成为一个程序员
程序员的八种境界
如何培养写作习惯
第2章 把一堆烂事搞定的艺术
学海无边
磨刀不误砍柴工
一路向前冲
关于多任务的神话
第3章 高效编程之原则
第一条法则:永远都是你的错
大道至简
避免写注释
学会读源代码
向橡皮鸭求助
创新以人为本
你的团队能通过电梯测试吗
性能致胜
第4章 招聘程序员须得其法
第5章 促使团队紧密协作
第6章 蝙蝠洞:程序员的高效工作场所
第7章 设计时要把用户放在心上
第8章 安全基础:保护用户数据
第9章 加强代码测试,别让它太差劲
第10章 创建并管理社区,同时从中受益
第11章 揭露营销伎俩,以及如何规避
第12章 轻重缓急,了然于心