19位业界先驱的访谈实录,领悟编程大师的深邃思想和深刻洞见,走出自己精彩的编程人生。
拉默斯编著的《编程大师访谈录》由一系列面对面的访谈组成,带领读者一起去探索计算机行业极具威望的19位编程大师的思想。这些访谈突出了塑造并影响当今软件业的先驱的推动力、事件和人物。这些编程大师们如何走上软件业的道路?他们爱用什么风格进行程序设计?编程是一种天赋还是一项可习得的技术?是艺术还是科学?编程大师们对于计算的未来有什么前瞻性的观点?《编程大师访谈录》为我们一一道来。
每篇访谈都可看作独特的成功故事,19篇合在一起就生动地刻画出上世纪80年代中期整个PC产业蓬勃兴起的一幅异彩纷呈的画卷。你可以从中看到莲花软件公司、苹果电脑公司、施乐帕洛阿尔托研究中心和微软公司等著名软件公司的草创和发展演变过程。
拉默斯编著的《编程大师访谈录》是对19位计算机行业先驱的采访实录,采访对象包括查尔斯·西蒙尼、比尔·盖茨、安迪·赫兹菲尔德、雷·奥奇、杰夫·拉斯金等。访谈涉及他们软件创造过程的灵感、技术、编程习惯、动机、反思,以及对未来软件的畅想等。问答中集结了这些计算机先驱的精辟言论,处处闪烁着智慧的火花。
《编程大师访谈录》适合IT从业人员阅读。
12 彼得·罗伊森
作为一个加利福尼亚本地人,彼得·罗伊森(Peter Roizen)就在帕洛阿尔托长大。他在加州大学伯克利分校就读,并于1967年获得数学专业的学士学位。他毕业后的第一份工作就是程序员,虽然在此之前他几乎没碰过编程。罗伊森在离开伯克利后在蒙特利尔和多伦多待了两年,然后去了欧洲,在世界卫生组织干了七年程序员。他后来回到美国,在华盛顿特区为世界银行工作。1980年,他创办了自己的公司,推广和销售他的电子表格程序,即T/Maker。这是当他在世界银行任职时用业余时间开发出来的。1985年,罗伊森把他的小公司从华盛顿市搬到了旧金山湾区。他现年39岁,已婚,有一个5岁的儿子。他住在加利福尼亚的洛斯加托斯。
我和彼得约好了在他的公司T/Maker的办公室见面,尽管他在那里的时间很少,经常一周只有一天。实际上,他在办公室的环境里显得格格不入,对充斥着办公室的电话铃声、说话声和忙于销售软件业务的人显得很不适应。看起来他像是刚从冬眠里醒过来和我会面似的。罗伊森更喜欢在他家中的办公室里独处,一个人开发软件。
他已经年近四十,看起来很安详。头发蓬乱,呈深褐色,脸很有棱角,经常会露出温暖的笑容。他很看重自己的独立性,很高兴自己可以不依赖于公司和薪水,可以靠自己的能力做自己喜欢做的事情——编程——来谋生。对于怎么做一个程序员他也并不拿腔作调。他没有大肆吹嘘他的职业,也没有想要开发出一个划时代的软件来发财致富。恰恰相反,他认为自己只是非常幸运,发现了他在世上的合适位置,并靠此安身立命。
采访者:你为什么喜欢编程?
罗伊森:噢,我一直很喜欢像国际象棋和双陆棋这样的游戏,因为这些游戏需要战略考虑才能赢,而且在游戏结束时我总能知道我是赢了还是输了。编程很像游戏。如果我只是想不花太多力气写一个程序来解决一个问题,那就不会有很多决定要做,我通常可以比较直接地解决问题。但是,总会有不同的方向可以选择。编程很有趣,就因为要作出最好的设计决定极富挑战性。编程非常好的一方面就是,当你干得很好时,结果会非常清楚。当我挂墙纸时,如果我非常注意,我会干得不错;但如果我马虎,结果就会很差劲,边角会翘起来。如果我编程的活干得不错,程序运行一秒钟就结束了,任务完成。如果我活干得很差劲,程序会跑上十秒钟,全部东西死翘翘的情况每二十次里就会发生一次。我喜欢知道自己是否完成了目标。
采访者:所以,可以尽你所能,这就是编程让你感到满足的地方?
罗伊森:当然。不过,我不想言过其实。这个世界非常大:再过一百年,人们甚至都不会知道这个程序是什么。我并不想要影响世界的进程。我只是想每天都做一些有价值的事情。这样,当我干完时,我不会觉得虚度光阴。
采访者:你是不是觉得完全放不下编程?
罗伊森:不是这样。任何时候我都可以放下编程。我并不觉得我隔一段时间就得碰一下键盘,或者非要一直呆在计算机旁边。有时候,当我不想编程时,我会做一些其他事情。我过去常画漫画。我不太会画画,所以要画出我想要的效果有点难,但画画还是很有趣。我也喜欢滑雪,虽然不是什么高手。
现在,照顾我五岁的儿子、帮做一些家务占掉了很多的时间。但我还是能从编程中获得很大的满足感。跟其他领域比,这也没什么特别好的。只是它恰好适合我,让我感到快乐。所以我就一直坚持下来了。
采访者:你可不可以描述一下你是怎么鳊程的?
罗伊森:我是个非常“自底向上”的程序员。我不为整体战略伤脑筋,因为除非完成了所有细节,否则我从来看不清全貌。如果你想要把工作交给其他人做,“自顶向下”的编程自然很好——很显然,你需要了解各个部件是如何在一起工作的。对我而言,编程是一个反复迭代的过程。我总是一次做一个程序的一小部分。如果我在一个地方改动一下代码,就很可能需要在其他地方也动一下。我会这样上下调整,直至方案合适为止。
我也非常实际。我见过很多不实际的聪明人,他们在追逐一些完全无用的学术目标时迷失了方向。实际对编程很重要。你必须能够猜出完成一个项目的准确时间,具有推断可以做哪些、不可以做哪些的能力,然后据此去做,抵制中途停下来干其他事情的诱惑。当你想做好每一件工作时,实际一些尤为重要,毕竟你可以分配在每件工作上的时间很有限。如果你想把一个项目做到尽善尽美,往往轻易就会多花上两倍的时间。可东西如果没完成的话,就不会卖得好。没有可销售的产品,你就很难维持生计。
采访者:你在编程行当已经待了18年还多。你最初是怎么进来的?
罗伊森:1967年拿了数学学位从伯克利毕业时,我去找工作,直接就接受了第一份给我的工作,去做程序员。那时我对于编程几乎完全没有经验。那时甚至还没有计算机科学系。我上过一门FORTRAN课,也曾经给一门编程课做过助教。因为我得给学生提供帮助,批改他们的卷子,我必须得比他们超前一点。这就是我在这一领域的全部经验了。
采访者:你的意思是你在做这份编程工作之前就没写过程序?
罗伊森:那时这个领域还很新,雇主会招聘在编程方面有潜质但缺乏经验的人。像很多人的第一份工作一样,我根本不在意它具体是什么。我使用FORTKAN和COBOL,边查手册边写程序。
采访者:然后你就一直做编程了?
罗伊森:在第一份工作之后,我在欧洲为世界卫生组织工作了7年,然后在华盛顿的世界银行工作了7年。这两家都是非常大的机构。随后我在1980年创办了自己的公司。
采访者:你在开发程序时遵循某些原则吗?
罗伊森:我相信使用自己写出来的东西非常重要。并不是说我是自己的程序的最好用户,而是因为经常使用的话我就可以意识到程序中的缺点,可以在发现什么地方做得很笨拙的时候就把它改掉。我记得有一次在世界银行的时候,我向别人演示一个程序。程序是别人写的,而且之前我没用过。第一行显示在屏幕上时,提示说可以输入HELP来得到帮助。我想,这是一个很好的开始,就输入了HELP进去。结果我得到了这样的错误信息:FATAL ERROR—SEE COMPUTER ACTIVITIES PROGRAMMING DEPARTMENT(致命错误—请联系计算机活动编程部)。这说明设计师根本没好好用过他自己的程序,甚至没有照着他写在屏幕上的第一条指示操作过。这种做事方式非常危险。
采访者:程序员怎么会从来没试过他自己的程序呢?
罗伊森:在以前,很多公司会把分析师和程序员区分开。分析师使用流程图做出总体规划,程序员填补剩下的细节。如果你想解决问题,却碰到一拨人只管画方框、另一拨人只管填补方框里的内容,你最终将不可避免只能拿到一堆不能解决问题的垃圾。在我做程序员时,我从分析师那儿拿到的方案有一半是不可行的。他们了解全局,但没有足够的具体信息来做好他们的工作。没有人聪明到看一下整体图景就知道程序需要操作的具体细节。所以我赞成一个人把整个程序从头写到尾。
采访者:你认为公司里的程序员必须要妥协吗?
罗伊森:不一定。有人付你薪水时,你总要在某种程度上做他们希望你做的事情。我们得面对这一点:金钱能买到影响力。这是这片土地上的规则。但我不会把这叫做妥协。事实上,有些公司把这称作成熟,认为这是积极调整。当我为这些大机构工作时,对于某些分派到的工作,我做得很开心,对结果也很满意,没有什么需要妥协的地方。
P173-176
从事嵌入式Linux内核/驱动开发,业余以技术翻译为乐,时而客串编辑,好为爱书挑错,以求完美,却也常因“小”失大,不得读书要旨。
我与《编程大师访谈录》英文原版同属80后,与书中访谈对象却至少差了一代。这次翻译也是自己与这些编程大师“艰难”对话、重温那段历史的过程,所幸有互联网相助,困难重重但也趣味盎然。初审译稿,通读全书,总体来说访谈对象以商用软件尤以个人电脑软件的编程先锋为主,其他如UNIX领域的鲜有着墨。不过上世纪七八十年代正值个人电脑风起云涌之际,个人电脑显然也是与普通大众距离最近的,全书有此偏重,也在情理之中。如欲了解其他领域的编程大师,推荐《编程人生》(Coders At Work)一书。
此番参与《编程大师访谈录》,历时一年半,拖延多次,感谢朱巍、李瑛、傅志红等诸位编辑的耐心和把关。与咏炜兄互审译稿,受教良多,又得张伸兄(@loveisbug)指正错漏十数,感激不尽。期间往来邮件数百,字斟句酌,谈笑甚欢,实乃一大幸事。
衷心感谢开心外公外婆对我们的照顾,两鬓泛白,仍为我们而分离两地;感谢女儿开心,和爸爸一起读书游戏成长;感谢开心妈妈的支持和容忍;感谢父母的养育之恩。谢谢你们!
李琳骁
我编程也有十几二十年了,所以去年回国时好友小米觉得俺实在是太闲了,又能与此书产生共鸣,于是就拼命鼓励俺参与此书的翻译。可俺在外漂泊了十余年,现如今中文是提笔忘字,英文看得懂和能翻得明白那可是天差地别呀,从没接触过翻译的俺真是愁啊。
不过当读此书看到这些编程大侠们在做项目时废寝忘食、不眠不休、挠墙捶地画圈圈时,俺平衡了,原来那一代天才大侠们也曾经历过俺编程时所经历的一切,而他们的那些经验之谈也让我不禁会心一笑。做项目很苦,编程很累,养家糊口很重要,但要想编出好程序,真的要有兴趣才行。这些大师是真的痴迷于此,他们中有些人如老乔一样已然离去,但却留给我们一个从不曾想像到的信息新时代,深深感恩并祝他们在天上过得好!
这十几年来我一直在IBM的小型机上开发商用管理软件,主要用于银行和电信业,其中有不少是和钱有关的记账软件,哎,谈钱真的是伤感情啊!现在大家都在用QQ、Facebook、微博时,我的不少用户还在用Green Screen,而且他们只喜欢用Green Screen,为什么呀?答案是:“简约!”就像此书中很多大师所倡导的那样。
在整个翻译过程中,深深感谢我的好友米全喜逐字逐句地校对和审稿。小米,没有你的帮助,参与及完成这翻译工作对我来说会是:MissionImpossible!感谢图灵各位编辑的包容和耐心,也谢谢家人对我无条件的支持和帮助!
张菁
参加《编程大师访谈录》的翻译工作,也算是一个意外吧。不过,当朱巍编辑跟我联系时,我很快就对本书内容发生了浓厚的兴趣。毕竟,近些年来,计算机之外我看得最多的就是史书。而这本1989年出版的书在今天来看,就是一本活生生的历史。我读中学时还用过dBASE,在二十多年后的今天,亲身翻译其作者的故事,别有一番滋味在心头。
当然,这本书不完全是历史和“故”事。里面对时代的洞见,产品开发的过程和方式,放到今天仍然是有意义的。历史不能重复,大师对未来的看法可能也常常犯错,但毕竟后辈是可以从先人的经历中学习的。我想这也是这本书最大的意义。
平时看别人的翻译,总觉得这也不行、那也不是。轮到自己,才知道其中艰辛。幸好有琳骁兄弟和李瑛编辑的把关,才不至于犯下低级错误、误人子弟,成为被自己嘲笑的对象。在此表示衷心的感谢。不是大师,干活确实更需要通力合作才行。
最后,还要感谢老婆大人允许我“不务正业”;请昆昆和宁宁原谅爸爸陪你们玩得不够多。没有你们,纯粹的程序人生还是太无聊了。
吴咏炜
本书翻译分工如下。李琳骁:第1~3、8、1l、14、15、16章、词汇表、附录;张菁:第4~6、9、10、13、17章;吴咏炜:第7、12、18、19章。编程大师近况“续写传奇人生”部分由图灵公司编辑整理。
“个人计算机软件是如何制作的?为什么这么做?做这种工作的人是不是很像歌曲和故事里那些卡通人物式的呆子?对于想知道这些的人而言,这是一本见解深刻的好书……你可以从中更多地了解这个充满冒险想法和智力挑战的领域,了解程序员们的献身热情和不拘常规的做法。”
——Jim Seymour,联合专栏作家
“Susan Lammers为我们成功呈现了一本独具风格的图书,它是大胆而有价值的‘创意世界丛书’中的一本:对19位明星程序员进行和善而有深意的采访,让受访者自己畅谈……强烈推荐这本书,无论是对计算机迷,还是对厌恶计算机的人,这都是一本极有趣的读物。”
——《计算机周刊》
“读每一篇访谈就像是打开百事食品的‘好家伙’包装盒,其中的深刻洞见解除你一切疑惑,让人惊喜连连。”
——Steven Levy,《全球评论》记者
“Susan Lammers让她的采访对象以自己喜欢的方式表达出谈话的内容,他们的个性和喜好仿佛从每页纸上流淌出来……对于初出茅庐的程序员,本书是一本有关工作习惯的宝贵指南……对我们其他人而言,透过本书,我们有幸认识了计算机界面背后的那些名人。”
——Macworld
“这些访谈实用而富启迪作用……可读性非常强!”
——《旧金山观察家报》
“对所有有志于设计、创造最棒计算机程序的人,本书都是必读的!”
——《芝加哥论坛报》
“绝对迷人的访谈实录……任何正式涉足编程的人都能发现这些洞见的迷人之处。”
——计算机图书书评
“程序员们喜欢这本书是显而易见的,但本书的部分章节对那些喜欢音乐、视觉艺术、写作和金融的人来说也是相当有吸引力的。”
——Pace杂志