软件人才并不难找
  但是你的面试方法可能会妨碍你找到他们。
  Blake Callens是PencilBlue公司的联合创始人及CEO,也是 Raleigh创业加速实验室的联合创始人。是ExitEvent的中坚力量。
  每一个软件工程师都经历过这样的面试,在面试中,他们被迫使表现的更像是一个字典,而不是人类。普遍存在的误解是,为了能够开发软件,程序员必须知道职位要求所列出的每种语言的每一个细节。过去,程序员需要从手册上获取这些知识,这种面试是那个时代遗留下来的产物了。
  对于有经验的程序员,如果这样面试他们,他们通常会认为这个公司不入流,与此同时,很多公司因为在面试中没有考察创造性,也错过了非常好的潜在雇员。
  有一次,我进行了一次长达一个小时的电话面试,他们一直问我在JavaScript和jQuery中,变量的命名和方法有什么不同。而不是一个与我在实际工作如何利用web技术完成商业目标的经验相关的问题,尽管这是在招聘一个跨国企业的领导岗位。
  有很多次,我不得不听非技术人力资源经理磕磕绊绊的问出那些由技术领导给他们的“资格审查”问题。显然这些面试官们本可以使用星际迷航里面的唠叨术,因为他们只会这个。
  这些问题通常带有出题人的偏见;更多时候是“我是怎样做事的”而不是“它是如何工作的?”当然,面试官并不知道这些。如果面试者的回答不符合那个的答案,则会被标记为没有答对。
  有一次我被安排进行现场编程,他们让我在浏览器窗口写一个JavaScript应用(没有等宽字体可以用,而且按一下tab会跳出输入区域-但是,我的书写格式却要被他们所评判,这是当然的了。)在提交代码前,我没有办法去测试它,因为面试官看着我写,然后复制粘贴到浏览器中。
  这是一次我至今还感到得意的壮举,这个程序第一次启动完美的运行了。面试官随后坦率又无礼的向我介绍了他个人解决这个问题的方法。他显然花费了很多时间思考和重构了这个方案,而不是像我一样进行现场编程,而且这个方案中包含了更多的个人喜好而非改进。
  上述面试经历,与问我SAT分数的那个面试官一比,都显得苍白了。那个时候我已经34岁了。
  这些情况真是彻彻底底的荒唐,我并不是单指这些人,而是因为现代软件开发的一条不言而喻的真理:开发软件,其中4分之3是要知道编程的总体思想,并且知道如何串联这些知识。剩下的你都可以通过Google来搜索。
  不信我?这里有一些你可以在“佳面试题”里面找到的技术面试问题:
  jQuery如何将一个单击事件绑定到一个文档对象类型的对象上?
  在C#中如何读取文件?
  Java支持哪些数据类型?
  有两件事,比其他任何事情都更能阻止你找到并雇用好的软件工程师:
  专注于纯粹的技术知识而不是实际工作经验。
  想要得到意见的一致性而非差异性..
  问竞聘软件工程师一些业务问题,因为这些问题在你雇用他们之后会遇到。问一些和你正在面对的现实中的挑战相关的问题:
  我们的客户想要把一个再销售售货机集成到我们的销售终端系统。你有和email销售和(或) REST API打交道的工作经验么。
  现有一个类似Photoshop的应用。你怎么建立它的前端?你想用什么技术?
  你对公司使用的技术有什么建议?它有什么强项或者弱项?
  这三个问题都可以把谈话带向更深入的技术问题,这些问题可以涵盖软件工程师正确完成他的工作所需的知识。这三个问题都不会让应聘者不得不去证明他们死记硬背属于的能力。你也可以更好的了解这个人将要如何进行团队合作。毕竟,教会一个人专业技能比教会一个人如何和同事互动容易的多。
  告诉你的技术员,当应聘者回答这些问题的时候,他(她)可以挑战应聘者的看法,但是前提是可以这么做可以推进对话。任何情况下,都不能告诉应聘者技术面试官的个人编程喜好比他们的强。
  这是一个技术面试官非常容易犯,又具有毁灭性的错误,这一错误会渗透到方方面面而不单单是面试。只有当这些迫使你完全按照他们的指示行事的领导被解雇,问题才会得到解决。一个软件要想是健康的,开发者必须在构建和维护中能够提出多样的点子。
  当一个程序员不被允许在团队创作软件时加入自己的想法,会错过很多改进软件的机会。那些通过在项目中融入自己独特经验并可以让产品变得更好的软件开发者会在看到傲慢的技术领导后转身走。
  总的来说,当你招聘一个软件工程师的时候有件事情必须谨记,招聘他们与招聘其他任何技术工人没有任何区别。你不会去要求一个销售岗位应聘者去复述高德纳发展规律周期的每一阶段,所以你为什么要这样对一个软件工程师呢。