专访《Python算法教程》译者凌杰:不走寻常路的野生工程师

人物简介

凌杰,1981年生,浙江大学远程教育学院“荣誉学员”、2012年度“十大远程骄子”。目前为自由开发者、技术译者。精通多门编程语言,拥有丰富的软件开发及测试经验。个人崇尚黑客文化,支持开源运动,时常出没于国内外各种技术社区,曾担任上海交通大学饮水思源BBS的技术区区长,并兼任该区C/C++板板主多年。近些年来还参与了多项技术相关的外文翻译工作,译作包括《Python算法教程》、《JavaScript面向对象编程指南》、《元素模式》等。

Q1:你有很多擅长的技能,获得了很多荣誉,又翻译了不少书,你怎样定义自己的身份?

凌杰:如果能厚颜无耻一点,我倒更愿意说自己是个黑客,当然黑客不是自称的。所以我对自己的定位是一个永远在追寻黑客文化的学生。希望凭着爱好混个温饱,在不饿死的情况下做点自己喜欢的事情,这就是我的追求。这不是一句玩笑话,这阵子看完了《硅谷之谜》这本书,更坚定了我当一辈子野生工程师的决心,一门好的技术用好了,能有点拿得出手的项目经验,至少要五六年的时间,目前这种“工作两三年就去做管理”的吃青春饭态度不可能培养出好的工程师,更不用说培养出硅谷式的工程师文化了。我深知自己生性孤傲,不太合群,喜欢于大海深处生惊雷(请忽略这句话的物理常识,我当然知道那样的话鱼都电死了)。所以还是译书育人,并写点代码糊口。为技术土壤的培育尽点责任吧。以此一生也不错。

Q2:作为一个自主学习、自由开发者,能给大家讲讲你一天的时间是怎样分配的吗?

凌杰:来介绍一下我的“吸血鬼式”时间:我一般中午十二点半左右起床,吃完饭之后开始做翻译,间隙会上几个大学的BBS参与各种讨论,回复邮件,然后晚饭之后开始写点代码,没有项目可写的的时候会继续翻译。到十点上床(残疾人必须服从父母安排),然后如果有代码写,继续换笔记本在床上写代码,没代码写就拿ipad看看ted演讲集,手机评测视频(有时候也看美剧和电影,主要我喜欢的剧集不是特别多,最近国内外的编剧都是烂剧本居多),再看一两个小时的书(小说为主,有时候也会看些技术理论类,黑客文化类,历史类的东西)。到凌晨三点半左右,最迟四点睡觉。一天结束。

Q3:时间如此自由,怎么保证自己的工作效率?

凌杰:说起效率,在我看来是一件很神奇的事情。我不清楚其他工作的情况如何,就我所接触的写程序、翻译原创技术文章这样的工作来说,“感觉”和“状态”是保证工作效率中最重要的事情。所以,保证工作效率要从了解自己开始,知道自己什么时候适合干什么,不要跟自己对着干。在自己写代码写得自己都觉得难看,或者翻译出来自己都看不懂的时候,不要跟自己硬抗,这反而会延长你不在状态的时间,我想这也是为什么最近的高科技公司的办公环境(比如谷歌,facebook等)越来越像个咖啡厅的原因吧。工作效率不在于你安排多少时间工作,而在于你能用掉多少真正在工作的时间。那些不在状态的时间,我则更愿意上BBS找人唠嗑一下各种话题,胡说八道一通,回来工作的时候,往往状态也就回来了。

当然,要说明的一点是,自由不是散漫,不是不负责任。不知道从什么时候起,人们似乎误会了自由就是“犯错没人管,要奶喝只要喊就行”的状态。这可错大了。自由意味着没有人会为你承担所有事情的后果,实际上等于是你单枪匹马在原始丛林游荡。如果你漫不经心,散漫无责任感,毫无生存危机感,一天都活不下去。那么什么情况下人们会追求丛林般危险的自由呢?我的回答就是保持自己的兴趣与斗志,了解自己,会跟自己和睦相处。做到这些你自然会安排好一切。

Q4:你是怎样学习英语的?

凌杰:我学习英语这个事情说起来话还很长,事实上我英语还并不好。我是残疾人,当年考试是要父母代笔的,我父母显然不会英语,所以在高中之前,英语基本上是放弃不学的,高二的时候才开始追赶,一直到高中毕业勉强拿了个及格。然后拿了高中毕业证书。大学里当然跟你们一样,学了大学本科都要学的部分,这个跟大部分人没啥区别。但这是应试英语的部分,翻译计算机书籍其实是另一回事,翻译计算机书籍的重点其实不是英语水平,而是计算机水平和中文水平。计算机水平好,你只要有基本的英语能力,就能看懂绝大部分计算机类的技术文章了,然后就是你看懂了之后要怎么表达出来,克服翻译腔,语言习惯差异,让人看了明白而且舒服。这其实是对中文水平的考验。

Q5:翻译技术图书除了英语好,懂技术,你觉得还需要什么关键技能?你在翻译这些技术书的时候,遇到过什么困难吗?是如何克服的?

凌杰:这个问题问得好。首先我要说明的一件事是:我的英语并不好,水平仅仅够读懂技术文章而已,估计到夏威夷去找金发女郎搭讪是肯定没戏的。当然,计算机书籍的英语本身并不难,因为写这些书的人也基本上是一群跟我一样的人,所以看懂这些书的重点不在于语言,而在于你能够理解他们写出来的,以及没写出的但他认为你懂的内容。而要做到这个,懂技术是必须的,因为这样你才能懂得程序员的思维,以及他们的表达习惯与表达逻辑。例如,如果你不懂这些的话,就很可能会把bug这样的词画蛇添足地翻译成“缺陷”,其实bug就是bug,这是一个程序员都知道的典故,是一只死了却还在一个见鬼的地方害人的虫子,程序员们把它找出来要花很多时间。

所以如果计算机水平好,你只要有基本的英语能力,就能看懂绝大部分的计算机技术文章了。而看懂了以后怎么表达出来,考验的是译者的表达能力。这部分对程序员来说是比较难的,要克服翻译腔,语言习惯差异,让人看了明白而且舒服。这其实都是是中文水平的事情。至于说怎么克服,这我也没什么特别的办法,无非就是多看别人怎么翻译的(比如侯捷老师的翻译),再自己多练练,形成自己的风格,这需要点时间,没捷径可走。

Q6:对于翻译的书,有什么偏好或情节吗?做出翻译一本书的决定不容易,你是如何选择要翻译的图书呢?多人翻译一本书的话,跟编辑之间,三方如何沟通协调确保译作的质量和按期完成?

凌杰:我翻译往往是看我自己对这本书的内容有没有兴趣,自己能不能学到东西,当然能不能看懂也是个很实际的标准。另外,我有时候也会帮好朋友的忙,比如我翻译的第一本书就是帮好朋友开始的。总之,对我来说有没有兴趣是个很重要的标准。至于说合作沟通,跟编辑的沟通我至今为止没遇到过什么特别的问题,无非就是有时候要拖点时间,但我相信这种情况编辑们可见多了(这个可以去采访一下陈冀康大编辑,哈哈哈)。至于我的合作者,其实在合作之前都了解过,知道他们的大致能力才会合作的,因此他们除了时间问题也不会有太大的问题(毕竟翻译都不是主业),而且我最后也会对稿件做个整理修改,基本上也不会太难。

Q7: 在翻译《Python算法教程》这本书的过程中你学到了什么?

凌杰:应该说我通过翻译这本书,真正系统性的学习了一下算法的设计思维,真正完整的转述了一遍设计一个算法应该有的思路,方法论。这是我之前没有机会做的事情,即使在大学时代,凭老师教的、自己学的那点东西,其实都不能算是会“写”算法,充其量只是会【背】几个算法而已。所以,比看一本书更有效果的做法就是去翻译这本书(特别针对于非母语的书)。

Q8:平时喜欢看哪些剧集或电影?看TED主要关注些什么?

凌杰:喜欢的剧集有《疑犯追踪》、《神探夏洛克(即卷福)》,还有BBC早期的一个《福尔摩斯探案集》,那个忠实于原作。至于福尔摩斯系列原著,我最喜欢回忆录阶段的,也就是《空屋》之前那些,长篇的,《血字的研究》里面对福尔摩斯本人的介绍我很喜欢,案子一般,猎狗这个案子不错。总之,福尔摩斯本质上是个黑客,符合真正黑客的所有标准。 喜欢的电影有若兰的蝙蝠侠三部曲,黑客帝国三部曲,谍影重重系列、2001太空漫游、星际穿越、机器公敌(即“I, robot”)这些以及同类电影吧。 我看TED主要去看他们的观点,以及如何表达观点的,鼓励我倒是没发现,我不喜欢心灵鸡汤之类的东西。

Q9:为什么说,福尔摩斯本质上是个黑客?他的哪些特质符合真正黑客的所有标准呢?

凌杰:如果看过《黑客与画家》、《大教堂与集市》、《黑客》这三本书就应该知道“黑客”这个词跟计算机犯罪没有必然的联系,当然,他们能犯罪,但追捕起计算机犯罪来也很厉害。黑客是一群喜欢解决难题,有难题就兴奋的人,同时他们不太懂人情世故,不太会交际。专业以外的领域很低能,低能也就算了,往往还很自大,自大到让人讨厌。 你看这是不是福尔摩斯啊?宅男、喜欢难题,没难题活不下去,一辈子除了破案啥也不会。所以我认为他本质上就是个黑客。至于说计算机技术,我可不认为这对福尔摩斯来说算个事。