对九个超级程序员的采访:如何成为优秀的程序员(2)

发表于:2012-09-14来源:酷壳 – CoolShell.cn作者:陈皓点击数: 标签:超级程序员
我倾向于不从熟练程度来评判那些和我工作过的人。这些人能非常艰苦地写出很多代码,但是我想从他们对别人的代码的反应做出评判,这样我们就可以明

  我倾向于不从熟练程度来评判那些和我工作过的人。这些人能非常艰苦地写出很多代码,但是我想从他们对别人的代码的反应做出评判,这样我们就可以明白他们自己写的代码怎么样,知道他们使用的方法怎么样。他们对别人的评判还告诉我,他们是不是有好的“品味”。是这样的,如果一个人没有“好的品味”,那么他一般不会很好的评判他人的代码,他自己写的代码通常也不会很好。

  哦,这并不只是唯一的事。还有一件事,尤其在开源项目里,那是他是否有能力能和别人进行简单的沟通,告诉别人他要干什么,怎么干。这个能力可以告诉别人为什么你干的事是非常重要的,并不是所有的人都有这个能力。

  也就是说,有一些人可以写出很不错的代码,但他们并不一定能解释这些代码,他们也并不一定有好的品味,但是代码可以运行得不错。有时,你需要另一个人(有那种不错的品味的人)把他的代码转成更好的形式。也就是说,任何一个程序员都需要那种可以用清晰的代码来解决复杂问题的基础能力。

  David Heinemeier Hansson

  很强的对有价值的事的感觉。你可以问问自己这个问题你有没有这种能力:我现在做的这个事值不值得做?很多程序员浪费了如大海一样的时间去做一些无意义的事。

  Peter Norvig

  我不觉得只有一个,如果要我说一个的话,我说是“专注”。

  Dave Thomas

  热情。

  Guido Van Rossum

  你的问题很难回答啊:-) 我猜,如果程序员会在早晨煎个鸡蛋做早餐,那真是无价的能力。

  James Gosling

  自我激发。你需要全身心地投入到你要做的事中。

  Bjarne Stroustrup

  把事想清楚的能力:程序必需要能清楚地理解问题并能清楚地表述解决方案。

  Tim Bray

  能为自己的直觉提供证据的能力。

  Q 3: 你是否认为数学和/或物理是一种很重要的编程技能?为什么?

  Steve Yegge

  数学有很多的分支和程序员相关,他们是“离散数学”和“具体数学”。这些分支包括的学科有,概率论,组合数学,图论,归纳证明,和其它有用的东西。我会鼓励所有的程序员都去学习离散数学,无论能学多少,因为这总比什么都不懂强。

  对于传统的数学,我也不经常用,但是我需要的时候这些数据知识会很管用。例如,在我之前的工作中我就用到了微积分。我需要估计每个小时中某服务的高峰时间的流量负载,所以,他的负载是跟着太阳走的就像一个正弦曲线一样。最简单的方式就是把每个小时的负载曲线给整合起来。如果我不知道微积分,我就不知道怎么更为准确地估计。

  当年我在开发我的Wyvern游戏的时候,我的平面几何的知识对我非常有帮助。而且经常使用代数和线性代数的知识。但我很少在工作中使用三角学或微分方程,微积分同样也很少。

  我想说,简单的数学基础让我的技能比一般程序员好过5%到10%。如果我了解更多的数学,我确信我会比今天做得更好,所以,我每周都会花几个小时学习数学。

  我喜欢物理,我还在学习物理,我会花我一生去理解量子力学。但是我个却没有发现物理对我的程序员工作有多有用。当然,如果我从事一些和物理相关的工作,可能会有用,例如:3D游戏编程,或是某种物理特性仿真。

  Linus Torvalds

  我个人认为有很强的数学背景是一件好事。但我不确信物理是不是这样的,但是我深信懂数学的人会让你成为一个更好的程序员。这些智力模型都是相通的。

  David Heinemeier Hansson

  根本没用。至少对业务编程和Web应用来说没用。但是数学可能对一个人的写作有很重要的帮助。

  Peter Norvig

  是的。很多相法都是从数学来的:归纳,递归,逻辑,等等。

  Dave Thomas

  也许吧。但老实说,我没见到过懂这些学科和好的程序员有很大的相关性。

  然而,我见过有音乐背景和好的编程技能有很强的相关性。我不知道这为什么,但是我怀疑大脑中的某个区域可以让人即可以写出好的音乐,也可以写出好的代码。(陈皓注:@Sir阿怪 貌似就是这个例子)

  Guido Van Rossum

  数学,当然(对于一些学科是很重要的,我不关心微分方程,但是代数和逻辑学是很重要的),物理,我不觉得对编程技能有关,当然物理在其它很多地方很有意思。

  James Gosling

  当然!数学教会了我逻辑和推导……让我有了一双懂分析的眼睛。当我们分析算法的时候,数学是无法被取代的。

  Bjarne Stroustrup

  这要看程序员自己和项目性质了。以前的数据很有用,物理一般,但是学好物理是是学习应用数据最好的一条路。

  Tim Bray

  对我来说,在我的编程生涯中我从来都没有用过大学里教的数学。

  Q 4: 关于编程,你们认为接下来的大事是什么?X-Oriented编程,Y语言,量子电脑 ?

  Steve Yegge

  我认为Web编程会逐渐变成最最重要的客户端编程。而对于原来传统的客端端编程都会被废弃,如: GTK, Java Swing/SWT, Qt, 当然,所有的和平台有关的东西,例如 Cocoa 和 Win32/MFC/等。

  当然,这不会一晚上就发生了。这会在第一个十年内缓慢地发生,而在第二个十年内,Web Apps最终会胜利。工具,语言,协议,和浏览器技术都会进步得非常快,并会完全超出你今天能干的事。每一年都会向前进一步,而从今天开始,我会最终决定把我所有的应用开发全部切换到基于浏览器的应用。(陈皓注:我也是这么认为的,参看《来信,创业,移动互联网》)

  微软和苹果最终不愿意这个事发生,所以,触发这个事的第一步会是一个开源的浏览器(如:Firefox)开始到了支配市场的地位,然后会出现某种Firefox的杀手级应用(这种杀手级应用可能会像iTunes一样,所有的人都会用它,只需要下载Firefox)

  Linus Torvalds

  我并不认为我们会看到一个“大的跳跃”。我们只会看到很多的工作帮助我们把那些沉闷辛苦的工作变得更简单——会有一个更高级别的语言,也许把简单的数据库集成到语言中来会是其中最主要一个。

原文转自:http://www.ltesting.net