第二部分:发现实际的经验
拥有更多的经验是一个优秀人才的很好的指标。有经验的开发人员都是从犯错误中成熟的。他们知道何时该,何时不该使用设计模式。他们有第六感,能感觉到需求的哪一部分需要修改,哪一部分要保持原样。他们知道何时该偷懒,何时该考究。是真实的经验让优秀的开发者和平庸的开发者之间的差距大的无法跨越。

并非所有的经验都是等效的。很有可能,对于某个人,他通过多年的工作,在很多的任务中写或重新无数的代码,犯了许多的错误,就能获得扎实的技能。而另一种情况,一个人会在十年的时间里只在一个项目里修改了一行代码,没有学到任何新的东西。

发现隐藏的时间
很多伟大的程序员都是在他们大学的第二年就开始编程了。当他们离开学校时,他们就已经有了几年的工作经验了。还有,有些很神奇的程序员在他们很小的时候就开始学习编程的艺术了。我也认识好几个人在他们十几岁或更小时就写出来一些不算小的程序了。这些信息你是在简历上找不到的,需要你在面试中把它们引诱出来。
你是怎么进入到软件开发这一行的?
你曾经学过的第一种编程语言是什么?
经验的密度
很多神奇的程序员只是在他们工作的时间里编码。这很好,工作生活很平衡,你没有理由不雇佣这样的人。然而,在工作和学习之余做一些个人的编程项目是一个优秀的人才的很好的指标。有业余编程经验的应聘者很明显有更丰富的经验,更适合公司。没有个人项目?这里有其他几点也能做这方面的指标:
在很小的团队或小组里工作。
参与过很多各种各样的项目。
对一个大型项目的各个抽象层面上都有很详细的了解。
在一个项目组里作为主要开发者。