优秀程序员的首要特性:判断力

13年前

公司在招聘程序员时,可能更注重开发者是否聪明,是否有深厚的开发技能等,但Tammer Saleh在EngineYard中发表文章《The Number One Trait of a Great Developer》中表示,判断力才是一名出色开发者所应具有的首要特征。下面是对该文的译文:

我发现很多公司在招聘Ruby on Rails程序员时,往往注重开发者的三个主要特征:足够聪明、大技术社区中的知名度、深厚的Ruby开发技能。其实这些考察点并不正确。虽然这三大特性很重要,但他们却忽略了一名出色开发者所应具有的首要特征:判断力。

关于Jack和Dianne的故事

Jack是一个摇滚巨星。Jack喜欢谈论世界上最酷会议中提到的最新发展趋势。他很重视在一个新项目中使用三种以上的新技术。当请他做一个基于互 联网的控制后台,用于将烹饪方法与厨具进行匹配。他投入很大的精力开始做此事。最终该后台中用到了Google Protocol Buffers、node.js,具有可扩展性,却很难维护。

Dianne是一个优秀的程序员。最初Dianne是一个Unix 管理员,两年前才开始做Ruby开发。当被要求开发一个同样的系统时,她首先问了以下几个问题:

“预期会有多少厨具?”

“我们希望12个月内卖出500套厨具。”

“需要多长时间出一份报告?”

“大概一小时一次。”

“这网络的可靠性如何?”

“使用WiFi,它很稳定。”

Dianne使用MySQL数据库写了一个RESTful API结点。PostgreSQL可能更适合,但她只懂MySQL。

Dianne采用的这个解决方案可以扩展到1万个用户吗?不能,但这个系统并不需要这样做。Dianne的解决方案很简单、容易理解,具有更好的维护性。Dianne知道它并不是最简洁的解决方案,但她却知道任何更复杂的事都会超出她现在的能力。

判断力很重要

当给定一个很有趣的“问题”时,没有判断力的开发者就会陷入精心设计最简洁解决方案的陷阱中。他们总会有一种很自然的欲望而导致过度设计该解决方 案,要么追求复杂度、速度和功能性,要么很简单地找机会演练一下他们所掌握的新技术。他们需要时常被检查,以确保不会在半路掉进“兔子洞”里。

更遭的是,他们并不知道什么时候才超出他们的能力,所以他们总会在整个项目中留下代码炸弹。

雇佣有判断力的员工

我会让我的团队判断应聘者是否聪明,是否适合我们的文化。而我负责判断他是不是有很好的判断能力。为了做到这一点,我会带他出去喝啤酒,并问两个主要的问题:

1.对于Ruby和 Ruby on Rails框架,你最不喜欢他们的哪一部分?为什么?

2.请告诉我你最后一次使用的很有趣的技术?你从中学到了什么?

这些问题可以很好地帮助你,让一个开发者充满热情地谈论他们在什么时候充满激情,在什么地方情绪低落。从中你可以了解到很多,他们是怎样的人,他们 来自哪里。他们是否喜欢NoSQL这种数据库?他们是否了解什么时候不能使用它们?他们是否了解多线程编程中最难点?他们是否喜欢使用函数式编程、哈希函 数,原因是什么?