add by zhj: 有两条非常受用,第一条:能够在完美主义和实用主义之间找到平衡。第二条:他们是否对软件工程的理解超越了代码的级别?他们是否对软件工程的理解达到了架构级别?或者他们是否能够深谋远虑?
对于第一条,非常有感触,因为我之前一直在追求完美,为此做事效率很低,好的程度员一定是能在完美主义和实用主义之间找到平衡的程序员。第二条,非常棒,他告诉我们不想当将军的士兵不是好士兵,如果当一辈子程序员,那一辈子就只能在最底层工作,只有站的高才能看的远,你必须要跳出程序员那一亩三分地,从更高的角度如架构师的角度来看问题,来研究问题,这样你才能有所突破,自己的薪水和能力才会有更大的提升。
本文由 伯乐在线 - alexxxx 翻译,Justin Wu 校稿。未经许可,禁止转载!
英文出处:Quora。欢迎加入翻译小组。
伯乐在线导读:「卓越程序员和优秀程序员有哪些区别?」这个问题来自 Quora。本文摘编了两个热门回复。
Russel Simmons (Yelp 前 CTO & 联合发起人)2.5 k 赞
对这个问题来说,我的答案不具有普遍性,但是我确实注意到在一些卓越的程序员身上有一些不凡的品质。
- 能够在完美主义和实用主义之间找到平衡——卓越的程序员既能够做出熟练、快速但是劣迹斑斑的解决方案,也能用简洁、优雅并且健壮的方法解决问题,他们能够明智地选择适合于所给问题的解决方法。一些稍欠火候的程序员看起来缺少对于必要细节的极致追求。另一些则被困在完美主义者模式中。
-
乐意进行调试与Bug修正——平庸的程序员经常对调试感到厌恶和恐惧,即便是他们自己的代码也是如此。卓越的程序员则会以丘吉尔般的坚韧潜入和深挖。如果最终证明bug在他们自己的代码之外,他们可能也不会对此感到高兴,但是一定会找到它。
- 良性的怀疑态度——一个优秀的程序员会得出一个看起来可行的解决方案后收工。但是一个卓越的程序员直到进行了大量的测试之后才会相信他们自己的代码。这在数据分析和系统管理中也很常见。普通程序员可能在看到一个看似无害的不符合之处时,并不在意。如果一个卓越的程序员看到同样的东西,他就会怀疑这可能是造成更大问题的导火索,并且深入研究。卓越的程序员总是倾向于做更多的事。
Davin Lafon ,1.4 k 赞
1.优秀的程序员会写自己必须写的代码,而卓越的程序员还会写自己本不需要写的代码。
2.从代码的行数来讲,成为卓越的程序员并不是意味着他们可以多快地写出一个代码库,而是可以多快地在不丢弃功能和性能的条件下缩减其代码。
3.如果你开始跟他们争论“最好的编程语言是什么”这个问题,他们会微笑着还是看起来厌烦地换个话题?或者他们开始向你喋喋不休地讲述?如果是最后一种,那他就不是一个卓越的工程师。
4.与代码或者语言无关。也与“痴迷”、“诀窍”、“天赋”或者其他任何装逼术语无关。很简单地——他们是否对软件工程的理解超越了代码的级别?他们是否对软件工程的理解达到了架构级别?或者他们是否能够深谋远虑?他们能否在对问题的数学抽象和和软件工程之间平滑地转化?他们能够和股东工作并且理解他们对于系统的需求吗?还是他们开发出自己想要编写的系统,然后认为这就是你真正应该想要的系统?有人可以成为卓越的黑客或者程序员,但那并不意味着他是一个卓越的软件工程师。我这么说并没有用来价值衡量——一个卓越的程序员的确就是一个卓越的程序员…但是你毕竟不能让一个天才焊接工去设计一座桥。
5.当其他人都在屋子里迷恋某个解决方案或者新的东西时他们能否“发现缺陷”,更甚,他们是否能用他们能听懂的方式向屋子里的人解释这个重要的缺陷。
6.能否倾听?如果不能,那就不是卓越的软件工程师。