(译)如何辨别优秀的程序员

原文

这并不是想象的那么容易。工作经历并不能说明什么问题,因为优秀的程序员并非总是有“正式”的工作经验来说明他们有多优秀。事实上工作经历往往会误导。

我觉得自己是一个非常优秀的程序员。同时,我也花费了大量的时间在商业圈,找技术人员做项目,面试别人等等。正是如此,我觉得自己有足够的经验去识别一个优秀的程序员,我会在下文中分享,希望能够帮助那些 “商业人士”更好地找到人才。那些有可能成为优秀程序员但还没有摸到门道的,也可以阅读这篇文章,从而发现自己需要改进的地方。

在 Paul Graham 的这篇“18 个错误导致创业失败”文章里提到:

bq. 在 90 年代,导致绝大多数创业失败的是那些劣质的程序员,很多这样的公司是几个商人共同创立的,他们有聪明的想法,然后让程序员来实现这些想法。但事实上要困难地多——因为那些企业家他们无法分辨一个程序员是否优秀。他们甚至都没有机会见到那些顶极的程序员。

事实上,那些商人选择自己认为优秀的程序员(比如简历上提到自己曾是微软的工程师),但事实上不是。然后会发现创业之路就像二次大战一样艰难。

如果你不是程序员,如何来挑选优秀的程序员呢?我觉得没有最佳答案。我想说你最好找一个优秀的程序员来帮你筛选。但你如何找到这个人?

这点上,我不太同意 Graham。我觉得优秀的程序员有很多特质。即使一个商人也能识别。我下面来一一列举。

#1 激情

在我与别人合作的经历中,遇到过很多技术员:他们写程序,因为他们觉得这是份不错的工作。业余时间从来不会去编程。当他们知道我家里有一个局域网和 3 台电脑时,显得很震惊。他们只是在工作,不会主动学习新事物,除非工作中需要,或者为了找份工作。当一天的工作结束时就再也不想谈论它了。有些人觉得工作之余谈工作不适合社交。但如果你想结识一个优秀的程序员,体现出自己的激情是很重要的。

#2 自学

时过境迁,编程语言也在不断进步和完善,新的技术会出现,新的标准也会到来。当然不是说,所有优秀的程序员都对那些事物有浓厚的兴趣,但有很多程序员他们从来不会主动学习新事物,除非迫不得已,因为他们不喜欢学习新东西。这些人往往是在大学时学的计算机专业,然后渴望毕业后找到份好工作。

如果你打算雇佣某个程序员,只要提到“我能掌握那个,只要把我送到培训中心一个星期”。不要雇佣那样的人。优秀的程序员不需要培训中心。事实上,优秀的程序员会提到你从未听过的信技术,然后向你解释为什么必须用它,即使他都不知道如何使用。

#3 聪慧

有些商人觉得缺乏情商就是不够聪慧。事实上聪慧包括很多因素,情商只是其中之一。优秀的程序员不是不会说话,事实上,优秀的程序员通常是你认识的人中最聪明的。他们中的很多人有很好的社交能力。我参加过几次 London Ruby User 聚会,除了少数几个特例,大多数人都很聪明,善谈,兴趣广泛等等。但你不会在公众场合看到他们谈论,然后会想“这是怎样的一帮 geek 啊”。

不要认为那些话不多的人就是好的程序员。他们不是,如果在完全放松的环境下都不能很好地交流,他们不是优秀程序员的概率会很大。

#4 隐藏技能

这跟激情有关,也是优秀程序员的一个特征。

我在 9 岁时就开始编程,那时还不是在 PC 上,后来迁移到了 PC,学了 Pascal。当我 14 岁时,用 C 和 Assembler 写了一个 raycasting 引擎。花费了大量的时间与显卡打交道,终于可以看到很酷的图形效果。在这之前,我只是个二流的程序员,没有信心做任何复杂的事情。当我完成它时,我收获了自信。我知道只要我想,再难的事情我都能搞定。

这会在我的简历上出现吗?不会

我深信大多数优秀的程序员都有类似的冰山不会出现在简历上。他们觉得这不是“合适的经历”。可以对那些潜在的优秀程序员问一个这样的问题“你能告诉我一个自己独立完成的项目吗?即使是不完整的,在业余时间开发的,没有出现在简历上?”如果他们不能,他们很可能不是优秀的程序员。

#5 多种技能

这个很简单,由于对新鲜事物的热情和强烈的求知欲,那些 22 岁以上的程序员通常掌握好几门语言。这不可避免,学习一个新技术是最有意思的事情之一。

#6 证书

这其实不是一个优秀程序员的特征,很多有计算机相关证书,很多没有。年龄也一样,有些 18 岁就展露头角,有些 40 岁才有所成就。我的经历告诉我,大多数平凡或者差的程序员大学时才开始编程,为了他们的计算机课程。而优秀的程序员编程的历史可以追溯到更远。如果你的准程序员在大学前没有接触过变成,他所有的经历都是从第一份工作开始的,他很可能不是一个优秀的程序员。 声明

上面或者下面所说的特征不是必备的。你很可能会发现 NB 的程序员不符合这些特征。我的观点是,你不太可能找到一个优秀的程序员不符合这些特征中的任意一条。当然,你也会发现差的程序员也符合这些特征中的某几个。但我深信,一个程序员,这些特征符合地越多,那么他是优秀程序员的概率就越大,作为一个商人,你可以信赖这些人。

总结

以下几个特征能够帮助你找到优秀的程序员

  • 对技术充满热情
  • 编程是生活的一部分
  • 会在你的耳边谈论技术相关的话题,如果你有兴趣的话
  • 主动学习新技术
  • 对自己不能认同的技术,感到不适应,无法全身心投入
  • 聪明,对很多话题都感兴趣
  • 在大学之前就开始接触编程了
  • 有隐藏的冰山,自己完成的大项目
  • 对许多不相关的技术有了解

❤️