参照 Quora 的答案:优秀的与伟大的软件工程师(似乎我们都说成程序员)的区别是什么?
Software Engineering: What distinguishes a good software engineer from a great one?第一名 2500+ 票:
- 能够平衡实用与完美。 Able to balance pragmatism and perfectionism
- 不怕调试和修复BUG。 Not averse to debugging and bugfixing
- 健康的怀疑态度。 Healthy skepticism
——
Russel Simmons, former CTO & Co-founder, Yelp
第二名 1500+ 票:
1. 这不关于他们写了的代码,而关于他们没必要写的代码;
2. 这不关于他们代码库增长有多快(依据于代码的行数或复杂度),而关于他们怎么将代码库缩小同时不丢失功能或特性;
3. 如果你尝试去跟他们争辩“什么编程语言才是最好的”, 他们是微笑、又或者对这个厌倦,然后转移话题么?或者,他们布教么?如果他们布教,那他们不是一个伟大的工程师;
4. 这并不关于那些代码或编程语言,也不关于他们的痴迷、技艺、天赋、或其它虚假的魔法形容词。最简单地,他们是否在代码之上的层面了解软件?他们是否在架构层面明白软件?还是说他们只能去想代码的行数?他们可以在抽象的数学问题和软件之间切换么?他们可以跟利益相关者一起工作并理解那些人对系统的需求,或者他们会不会开发一个他们想要开发的系统——他们认为你真的想要这个?一个人可以成为一个伟大的骇客或编码者或程序员,但那与一个伟大的软件工程师不一样。我并没有使用一个价值量表,一个伟大的程序员也是一个伟大的程序员……但是你不能要求一个焊接工去建一座桥。
5. 他们能否“发现缺陷盲点”,当房间里其它所有人都正迷恋于一些解决方案或新玩意时?此外,还能解释这些基础的缺陷点、让房间里**所有的人**都对这个缺陷点有清晰的认识?
6. 他们能否倾听?如果他们不能,那他们不是一位伟大的软件工程师。
原第二名 340 票:
- 有天分 Talent
- 自律 Discipline
- 有经验 Experience
- 有商业意识 Business-awareness
- 有社交意识(合作意识) Social-awareness
——
Slava Akhmechet, Founder at RethinkDB
# 更新于2015-03-25
原来第二名被排到好后面去了,虽然票数从193票上升到340票