基本信息
- 原书名:The Developer's Code:What Real Programmers Do
- 原出版社: Pragmatic Bookshelf
【插图】

编辑推荐
避免常犯的错误
养成优良的习惯
破解密码,你也可以卓越起来
内容简介
作译者
劳佳 上海交通大学电子工程系硕士,现在SAP美国任高级软件支持顾问。业余爱好语言、数学、设计,近年合作翻译出版了《周末读完英国史》、《加州大学伯克利分校人文建筑之旅》等书。
目录
第1章 引言 1
1.1 谁是21世纪的程序员 2
1.2 吸取第一手教训 3
1.3 这本书写的是我们自己 4
第2章 比喻 5
第1篇 谨慎使用比喻 7
第2篇 规划完备,然后开工 8
第3篇 发行不过是第1版 10
第4篇 “象牙塔”架构师的传说 12
第5篇 扔掉旧代码 15
第6篇 多元化胜于专业化 17
第7篇 比喻渐欲迷人眼 19
第3章 动力 21
第8篇 工作即福利 22
第9篇 从喜欢处入手 25
第10篇 莫求全 27
第11篇 休止一下 28
第12篇 早起先测试 30
第13篇 别在卧室里工作 32
译者序
这本小书名叫《卓越程序员密码》,但大部分内容讲的不是具体的技术。书中的话题涉及程序员生活的方方面面,每个话题独立成篇、言简意赅,读来多有切身之感,引人思考。譬如每日邮件繁忙,电话不断,如何保证工作效率?有些程序员朋友,自身水平很高,为何向别人讲解问题时却效果不佳?如何和不断提要求的客户周旋?作者在行业中浸淫多年,在团队建设、项目管理等方面都有独到的见解。当然,书中更少不了关于软件开发本身的技巧,复杂性管理、重构、代码生成等都是对实际工作很有指导意义的方法。
如果你从事开发,在上班的路上读上一两篇,也许书中的观点就能给一天的工作带来一点灵感。即使你从来不写程序,读读这本书也有助于了解一下这个热门而有趣的行业。要是你的男朋友刚好是个程序员,这本书或许能让你更好地走近他的生活,理解他的种种行为也说不定呢。
原文笔触轻快,语言流畅,读来丝毫没有读技术文献的枯燥感。作为译者,我也希望尽可能带给读者同样轻松愉快的阅读体验。限于水平和精力,译文不妥之处,还望读者指正。图灵岳新欣编辑和武卫东总编为译稿润色付出了辛勤的劳动,在此特别致谢。
最后值得一提的是,本书的翻译和编辑工作均在图灵社区上在线完成。文本使用Markdown语言描述,实时更新,互动编辑,并逐章发布电子版。这种新的出版模式,消除了译者和编辑之间反复发稿的烦琐,也让读者能够随时追上最新的章节。在如今敏捷出版和移动阅读的大潮中,这一尝试显得尤为合宜,十分可喜。
劳佳
2012年8月
序言
亲爱的读者:
在编程的世界里,我们会和各种各样的“语言”打交道。虽然我主要的服务器端开发语言是C#,但我的工作方法却几乎可以完全应用到Java、PHP、Ruby或Python上。编程语言虽有不同,核心的编程思想、方法和架构却是高度类似的。我们只是用不同的方式来表达而已。
我们的工作方式也具有普遍性——如何保持干劲、提高成效,教学的重要性,如何与客户合作,如何发现合适的流程,勇于摆脱不好的流程。此外,我猜想,我通过编程学到的人生一课,不仅适合在美国工作的我们,也可能适用于在中国工作的你。
作为在美国出生的第一代华裔,我非常荣幸这本书能够被翻译成我父辈的语言。我在美国长大,在西方文化中生活,同时也有一些中国的传统价值观。我对于应该如何在这个行业工作的看法肯定受到了两种文化的影响。
无论你是刚刚投身编程事业,正在创业,还是在寻找一些新鲜的观点,我都希望这本书在现在和未来都能对你有所启发。
张家为
Dear readers,
In the world of programming, we work with “languages” of all different kinds. Though my primary server-side development language is C#, the way I work almost fully translates to the world of Java, PHP, Ruby, or Python. Core programming ideas, methodologies, and architectures are highly similar between these different coding worlds. We just express them in different ways.
The same is true for how we work - How we stay motivated and productive, the importance of teaching, working with clients, discovering the processes that work just-right and being brave enough to shed the ones that don’t. And, I’d imagine that the life lessons I’ve learned through programming translate not just to how we work in the U.S., but how you might work in China.
As a first-generation American born to Chinese parents, I was tremendously humbled to have this book translated to my ancestral language. I grew up in the United States, living in a western culture while growing up with some traditional Chinese values. My opinions on how we ought to work in this industry have certainly been influenced by both cultures.
Whether your just beginning your career in programming, starting your own small business, or seeking some fresh perspectives, I do hope you find this book valuable now and in the future.
Sincerely, Ka Wai Cheung
媒体评论
——Derek Sivers,CD Baby和sivers.org的创始人
“Ka Wai Cheung先生为那些寻找自己赖以生存的代码的专业开发人员写了一本书。这本书不是用那些在任何博客中都能找到的传统想法拼凑起来的,而是用强有力且有针对性的方法,讲述专业编程的技艺和现实。
如果你想找一本新瓶装旧酒的编程规则,那就不用看这本书了。但是,如果你正在寻找一种视角,看看软件开发是什么,或者你想要一套由真实经验提炼出的指导方针,那这本书正是你需要的。”
——Bob Walsh,作家、47 Hats的创始人
“充满‘美味’的经验,每篇的大小也十分‘适口’——在这本书里你可以学到很多。花上些时间从过来人那里学学吧。”
——Adam Hoffman, 高级开发主管
“一本好书,有现代程序员从日新月异的世界中得到的提示、技巧和经验教训。从事开发或与开发人员合作的人士不可不看。”
——Caspar Dunant, Webfish
书摘
第一次,是我在大学一年级上的一门编程课。这是一门必修课,我就选了。结果这和我小时候看过无数次的电影场景完全是两码事。我并没有敲上几个简单命令,按下回车,然后就看到一个垃圾桶样的机器人和我说“你好”。
课堂上甚至连个垃圾桶机器人都没有,而全是一堆什么指针啊,内存分配啊,对象实例化之类的。我为了弄清楚这都是些什么玩意儿搞得焦头烂额。不过,有一件事是明摆着了——我根本不是编程的料。
我想成为一个艺术家,或者当个数学家。我想要有创造力还要能够精确——就像人们说的,左脑右脑一起上。编程似乎太偏向左半球了,可是我也想不出什么其他的职业道路,同时能够在两个世界施展。我迷茫了。
短短几年后,互联网的大潮彻底改变了编程的景象。编程突然就变得那么实际,那么触手可及,而且还和设计关系紧密。艺术和逻辑几乎被看做同样重要。第一次,我真的觉得能够享受这份工作,可以把我对于创造力和逻辑的热情都倾注到网络应用上。所以,虽然心怀忐忑,我又回来编程了。
讲句老实话,我回来完全是另有原因。在之前的两年里,我学习了其他很多学科,都似乎有太多太多的未解之谜。是去构思粒子物理里的大统一理论,还是去找最大的素数?毫无疑问,这些任务简直难到无法想象,让人望而生畏。我实在干不了这个。还有,那个讲存在主义的课也没能把事情说清楚。我是个年轻人,我想要的是答案,而不是越来越多的问题。
编程。我曾经唯恐避之不及的那个科目,现在成了我的避风港。不管怎么说,计算机科学还是人搞出来的。所有的事情肯定都有个答案。我期待的职业生涯,应该能让我这种寻求答案的人大展宏图——你能把甘醇的代码变成顾客、同事和客户常在的笑脸。规则都已经定好了,我们只要做就是了。困难无非就是在代码里面而已,我当时是这么想的。
我第二次来做编程,才发现又上当了——显然,实际远不是这么回事。
1.1谁是21世纪的程序员
就像我在接下来的十五年中发现的那样,隐士不适合搞编程。什么有个超级技术狂,躲在幽暗的地下室里,挥汗如雨几个月,然后拿出最终产品,石破天惊,尽享荣华。绝对不是这么回事。
现在,应用程序是主流。即我们为每一位用户做的那种。客户可能了解我们如何工作,也可能完全没什么概念。我们的交付周期有时候是按照白驹过隙的星期来算的,而不是按照月或者年算的。人可能突然一下子就觉得疲惫不堪,而拖延可能是最容易走的那条路。对于我们——当今的开发人员来说,软件生产中所涉及的障碍已经远远超出了开发环境。
我有个好朋友经常和我开玩笑。“你工作的时候到底都干了些啥?”她知道我是个程序员,但并不是很确定程序员具体都做些什么。她问我问题时的那种刻薄质问的口气,就像《上班一条虫》 里的那个办公室顾问Bob Slydell一样。
我是这么和她说的:我是一个无认证但是超级有逻辑的心理学家、理疗师、机械工、外交官、商人和教师,我所在的行业,迄今仍然每时每天都有着新的诠释。
这就是我对当今的程序员能够给出的最简洁的定义了。
1.2吸取第一手教训
我叫张家为。我是个程序员、设计师,还是芝加哥We Are Mammoth (我们是猛犸)公司的创始合伙人。我们为各行各业的客户制作应用软件,也制作我们自有的一些基于网页的软件。后面会再谈到这一点。
这本书集合了我自己在行业里总结的第一手的教训、体会和走过的弯路。对于编程老手来说,你可能会发现我写的某些轶事自己也经历过。我们可以一起大笑、欢呼或是流泪。对于刚刚开始征程的菜鸟来说,希望这本书能够为你进入行业的头几年助上一臂之力。
过去十五年中,我得到的教训数不胜数。下面仅举几个这本书里谈到的话题。
为什么软件行业中许多传统的开发流程和职责分配已经过时了,以及如何找出这些问题。
为什么要对消闲项目说“不”,为什么开放的时间表对生产力至关重要。