这篇访谈源自2006年,最先发布在波兰程序员 Jaroslaw “sztywny” Rzeszótko (AKA “Stiff”) 的博客上。但是这篇博文现在找不到了。非常感谢他能授权我重新发布这个博文。 在一个炎热无聊的下午,我突发奇想。我想通过电子邮件的方式对那些我非常感兴趣和非常敬重的程序员问10个问题。准备这10个问题我只花了5分钟, 这些都是我个人想问他们的问题,所以,我基本上没想太多要问他们什么。最后两个问题和编程没有什么关系,我就是想问题这些人的一些兴趣爱好。另外,不是每 一个人都想回答我的,这是我第一次做“访谈”,所以,我犯了一些错误,一些问题没有得到回答。不管怎么样,我得到了很多很有意思的内容,所以,这对我绝对 是一次很有意义的经历。 并不是每一个人都回了我的邮件,也并不是每一个人都同意回答我的这些问题,也许在我发布这篇文章后我会得到那些回答,但是我已经迫不及待想把这些东西发布了,所以,我可能会更新这篇文章(更新:2006年3月8日,我收到了Bjarne Stroustrup的回信) – Jaroslaw 介绍
Q 1: 你是怎么学编程的?是从学校里学的吗?或者你没有上过学:) ?Steve Yegge 在我17岁的时候,我在HP的计算器中用他们的RPN 栈语言自学编程的。在这之前,我尝试过学习编程一两次,但都没有学成。HP 28c 和 48g 的科学计算器是一个很牛的东西,而且还有不错的文档。我搞了一本3D图形的书,并很费力地把其中的Pascal语言转成RPN栈语言,并用48g写了一个 3D的线框图渲染图。运行的还不错,在我买了PC和Turbo Pascal之后,我开始认真地学习编程。在我进入大学计算机科学专业之前,我已经是一个不错的程序员了。 我在华盛顿大学拿到了计算机科学学位,这绝对是有价值的,所以,我建议所有的程序员都应该得到计算机科学专业的学位。 Linus Torvalds 我没有在学校里学过编程,我在主要是读我自己想读的书,或是就直接去编程 (一开始在 Commodore VIC-20 学编程, 然后是 Sinclair QL上编程)。 当然,我觉得上大学非常有用。我没有去一个工科大学,我上了赫尔辛基大学,这是一个比较偏理 论的大学,所以,那里的教育并没有那么多的编程的东西 (编程只是很少一部分),这里大多数的课程都倾向于教一些基础概念的东西,如:复杂性分析。看上去很无聊,甚至有点浪费时间,但是我还是觉得这些课有用, 我对大多数课都还比较enjoy。所以,我觉得我可能在这些方面是一个比较好的程序员。 David Heinemeier Hansson 我学编程是从用HTML做我的第一个网页开始的。那时,我想当我的网页能动态地显示一些内容,所以,我选择了ASP和PHP。在做完这个网页后,我知道了怎么去编程,于是我开始我的计算机科学和商业管理学位的学习。 Peter Norvig 我是从高中和大学课程中学编程的,但是我还是觉得我自己学得更多。 Dave Thomas 我是在高中学编程的。我完全地迷住了,我对编程爱得无法自拔,然后,我开始挑选那些提供软件 开发课程的大学。最终,我去了伦敦大学的帝国学院。第二 年我就开始学习软件开发的课程了,那绝对是非凡的,学生和教员在一起工作把教材做得更好,每一个人都可以从中学到很多。这些课程给了我难以置信和非常雄厚 的软件开发背景。我在那里读到了博士,最后去创业了。 关于“我是怎么学编程的”这个问题,我的回答是“我现在还在学编程”。我认为好的程序员一生都在学编程。这并不是去学一门语言或是一个代码库,好的程序员会对他们的编程技艺一年又一年地精益求精。 Guido Van Rossum 我去的那个大学有一个大型主机和很多不同的计算机课程。这对我很重要。 James Gosling 起初,我是自学的。在我去上大学之前,我就找到了一份程序员的工作。但是我很高兴我去了大学,在那里有很多乐趣,最终我学到了博士。 Bjarne Stroustrup 我先上的是Aarhus大学, 然后是 剑桥大学(Cambridge),这两个大学教了我很多很有用的东西,这些东西为了以后的工作打下了基础。另外,我对编程和钱的关系学得非常好——知道了真实世界的问题,正确性,维护性,准时交付,等等,这些比教育可能更重要。 Tim Bray 我本来想去做一个数学老师的。但是,那个学数学的大学要我去学几个计算机的课。 Q 2: 你们觉得对程序员最重要的事是什么?Steve Yegge 沟通能力(写和说)。除非你可以让你的想法更有效率地传递出去,否则你不可能做得比编程更多的事。程序员应该疯狂地阅读,锻炼写作能力,参加一些写作培训课程,甚至锻炼在公开场合演讲的能力。 Linus Torvalds It’s a thing I call “taste”. 有一件事,我把它叫做“品味”。 我倾向于不从熟练程度来评判那些和我工作过的人。这些人能非常艰苦地写出很多代码,但是我想 从他们对别人的代码的反应做出评判,这样我们就可以明白 他们自己写的代码怎么样,知道他们使用的方法怎么样。他们对别人的评判还告诉我,他们是不是有好的“品味”。是这样的,如果一个人没有“好的品味”,那么 他一般不会很好的评判他人的代码,他自己写的代码通常也不会很好。 哦,这并不只是唯一的事。还有一件事,尤其在开源项目里,那是他是否有能力能和别人进行简单的沟通,告诉别人他要干什么,怎么干。这个能力可以告诉别人为什么你干的事是非常重要的,并不是所有的人都有这个能力。 也就是说,有一些人可以写出很不错的代码,但他们并不一定能解释这些代码,他们也并不一定有 好的品味,但是代码可以运行得不错。有时,你需要另一个 人(有那种不错的品味的人)把他的代码转成更好的形式。也就是说,任何一个程序员都需要那种可以用清晰的代码来解决复杂问题的基础能力。 David Heinemeier Hansson 很强的对有价值的事的感觉。你可以问问自己这个问题你有没有这种能力:我现在做的这个事值不值得做?很多程序员浪费了如大海一样的时间去做一些无意义的事。 Peter Norvig 我不觉得只有一个,如果要我说一个的话,我说是“专注”。 Dave Thomas 热情。 Guido Van Rossum 你的问题很难回答啊:-) 我猜,如果程序员会在早晨煎个鸡蛋做早餐,那真是无价的能力。 James Gosling 自我激发。你需要全身心地投入到你要做的事中。 Bjarne Stroustrup 把事想清楚的能力:程序必需要能清楚地理解问题并能清楚地表述解决方案。 Tim Bray 能为自己的直觉提供证据的能力。 |