作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.
海姆·辛格的头像

Hyam歌手

海姆是一位富有创造力和以结果为导向的领导者,拥有产品和服务组织的技能, 创新解决方案, 敏捷开发.

分享

所面临的挑战

招聘软件开发人员通常是一项艰巨的任务,因为全世界都是你的人才库.

招聘软件开发人才——真正的人才——是一项多方面的技能,它位于社交网络的十字路口, 技术能力, 流程管理, 和直觉. 任何曾经承担过招聘责任的人都非常清楚招聘挑战的广度和深度.

招聘人才是一项多方面的技能,它位于社交网络的十字路口, 技术能力, 流程管理, 和直觉.

特别具有挑战性的是,杰出的软件工程候选人的标志性品质是极其难以评估的. 你如何发掘候选人的创新能力和创造性思维? 你怎么判断他是否有团队合作精神? 你如何判断她接受建设性反馈的能力? 你如何调查一个人的道德品质?

虽然评估这些“软”标准并非易事,但这样做却很容易 至关重要的 为了雇佣最优秀的人才. 然而很多时候, 试图评估这些至关重要, 然而,难以捉摸的, 属性由足够透明的问题或挑战组成,“正确”的答案对大多数候选人来说是显而易见的. 因此,问他们什么也得不到.

一个常见的陷阱是过于关注技术细节, 而不是评估应聘者解决问题的能力, 创造性地思考, 并与团队的其他成员和谐相处.

一个常见的陷阱是过于关注技术细节.

诚然,有效 面试和雇用高级软件开发人员 它是一门艺术还是一门科学. 尽管如此, 评估软件工程师技能和能力的更微妙的维度确实存在方法和方法.

当集体使用时, 这些招聘技巧产生了一个非常有效的筛选过程,并证明了在招聘受薪或在职人员方面的成功记录 自由编程人才. 这个过程就是这篇文章的全部内容.

入门:用最好的填充管道

寻找和雇用少数精英的过程早在面试之前就开始了. 事实上, 正确识别潜在合格候选人的系统方法可以大大简化和提高整个招聘过程的效率.

填补软件开发人才的招聘渠道对于招聘最优秀的人才至关重要.

毫无疑问,找到合格候选人的最佳途径就是人际关系网, 因为高品质的人倾向于和高品质的人交往. 个人推荐成为成功新员工最有效的来源(source).

其他有价值的 一流技术人才的来源 包括:

这些资源的美妙之处在于,它们提供了你已经审查过的候选人, 以某种方式, 甚至在面试他们之前.
  • 博客和在线技术帖子. 开发者博客可以成为强有力的候选人的重要来源. 技术职位通常提供了对开发人员技术敏锐度的有价值的见解, 解决问题的方法, 写作技巧, 所有这些都是识别优秀候选人的重要标准.
  • 开源代码贡献者. 在GitHub和SourceForge等网站上仔细阅读开源项目可以产生非常合格的候选项目. 这种方法的另一个好处是,它允许您在决定联系之前查看和评估候选人的代码示例.
  • 会议. 相关技术会议的会议发言人和共同与会者经常为合格的候选人提供宝贵的资源. 如果您无法参加,请查看在线课程并考虑联系演示者. 你可能只是碰巧在“合适的时间”联系了他们。, 或者他们可能会把你介绍给其他非常有资格的人.

这些资源的美妙之处在于,它们提供了您已经审查过的工程师候选人, 以某种方式, 甚至在面试他们之前. 要么是你公司里的人,要么是你认识的人,认识他们并极力推荐他们. 或者您已经审阅了他们的开源代码,并对其留下了深刻的印象. 或者他们的博客文章表明他们有成熟的技术专长和理解力(最好是幽默感:-)). 这里的关键是, 在你联系的时候, 求职者已经远远不只是“另一份简历”了。.

此外,考虑使用职位描述模板(如以下) 搜索引擎优化, 前端web开发, 后端web开发),这对你想要的候选人类型有很高的期望.

评估软件开发人员的技术敏锐度

技术熟练程度的有效确定远远超出了特定编程语言或技术的细微差别. 虽然这些技术细节当然不应该被忽视,但它们通常是被忽视的 评估过程中最重要的元素.

技术熟练程度的有效确定远远超出了特定编程语言或技术的细微差别...
这是候选人的基本技术实力和理解, 创造性思维, 以及解决问题的能力是评估的关键.

最好的开发人员不会把时间浪费在那些可以在语言规范或API文档中轻松找到的东西上. 此外, 学习一门新语言, 技术, 或者,设计模式对于一个强大的开发人员来说是一个相对微不足道的练习(实际上,考虑到新技术被引入和获得市场份额的加速速度,它是一项基本技能)。. 因此,这是候选人的基本技术实力和理解, 创造性思维, 以及解决问题的能力是评估的关键.

实现这一点的一个行之有效的方法是 提出一个不受语言限制的编程挑战. 向应试者提出一个问题,让他或她用自己选择的语言编写一个解决方案. 唯一的要求应该是解决方案是彻底和正确的, 包括处理任何边缘条件或潜在错误. 还记得, 这里的目标是评估候选人解决问题的能力, (b)计算机科学知识, (c)编码风格. 此时,您并不是在评估特定编程语言的能力. (这种方法的另一个好处是, 顺便说一下, 是为了避免要求面试官是候选人所写代码语言的专家吗.)

网上有很多资源,你可以从中选择这样的编程挑战,并将其纳入你的面试过程. 那些侧重于算法(而不是特定编程语言的知识)的课程有助于评估候选人的计算机科学基础和解决问题的能力. 一些值得注意的例子包括 hackerrank.com, projecteuler.网。, beatmycode.com. 但是请记住,您不需要使用这些站点来 管理 the tests; rather, you 可以 simply use them as resources from which to select 挑战,然后让应试者在面试时(在白板上)编写解决方案, 等.).

也就是说,在线测试 可以 成为面试过程中有价值的额外组成部分. 使用在线测试服务时, 虽然, 重要的是要避免过于关注候选人的网站生成分数,而不是他们解决方案的细节. 首先,您可能不同意测试服务使用的评估指标. 此外, 您可能认为解决方案的某些方面特别聪明或优雅, 自动化评估过程可能完全忽略了这一点.

使用在线测试服务时, 重要的是要避免过于关注候选人的网站生成分数,而不是他们解决方案的细节.

在线测试服务提供的评分也有可能出现“假阳性”或“假阴性”. 一方面,一方面, 误报会导致浪费时间和资源来面试不合格的候选人, 而假阴性可能会使那些非常值得考虑的候选人失去资格. 从长远来看, 后者有更严重的后果,因此必须仔细监测.

在一般情况下, 亲自进行的测试本质上比在线进行的测试更可靠, 因为它们减少了欺骗的可能性. 此外, 亲自测试提供了观察软件工程师候选人如何在压力下工作的机会. 尽管如此, 使用在线测试服务可以是本文所提倡的更全面的筛选过程的有效组成部分, 它结合了其他技术来帮助淘汰欺诈或不合格的候选人.

在线开发测试也可以作为一个有价值的初步筛选,以消除那些技术技能远远低于标准的候选人的高得惊人的百分比. 有趣的是, 许多这样的考生甚至没有尝试参加考试就放弃了这个过程, 因为缺乏自信. 话虽如此,信心并不总是态度的最佳晴雨表,这一点已经得到了证明 达克 效果.

另一个非常有价值的评估技术敏锐度的方法是 要求应聘者提供一份他们撰写的开源项目清单, 或者至少促成了, 在GitHub和SourceForge等网站上(如果他们只是一个贡献者的话), 请他们向您指出他们亲自编写的代码的哪些部分). 然后你可以在审查了他们的代码后参加面试, 准备好询问他们具体的设计决策, 编码风格, 模式使用, 等等......。. 这样的讨论比简单地就一门语言的技术细节提问求职者要有价值得多.

说到语言……

少数精英成员不仅精通技术, 他们是沟通清晰的完美软件开发专业人士, 有效地, 而简洁地, 包括口头和书面.

口头沟通能力在面试过程中很容易被评估, 无论是面对面还是通过电话. 诚然,在某些不涉及用户接触的“幕后”技术角色中,口头表达能力不那么重要, 尽管如此,他们仍然很重要 最大化有效的团队互动 以及思想的交流.

少数精英成员是沟通清晰的完美专业人士, 有效地, 而简洁地, 包括口头和书面.

书面沟通能力的最佳评估方式是要求应聘者提供写作样本. 技术写作 样品优先, 因为他们不仅展示了写作技巧, 还有技术清晰度. 在面试前索要这些样本可能特别有用. 一方面, 这为你提前回顾和分析他们的写作提供了机会,这样你就可以在面试前准备好和他们讨论和评论他们的写作. 除了, 一些技术候选人会因为要求编写样本而被“推迟”,因为样本本身可以作为一个有价值的过滤器.

道德困境

有一个老笑话,讲的是一位父亲想教儿子道德. 父亲告诉儿子,他和他的合伙人有一家干洗店. 父亲说,有一天,一位顾客来到我们店里取干洗的衣服. 当顾客转身离开时,我意识到她多付了10美元. 好吧,那么道德问题来了,我该不该告诉我的伴侣?!

相比之下, 真正的 伦理困境——道德困境——往往是模糊而复杂的 而且他们肯定会在商业中表现自己. 即使是最强大的软件开发人员,如果他或她缺乏适当校准的道德指南针,也会对项目造成难以估量的破坏. 因此,评估候选人的这一维度至关重要.

即使是最强大的软件开发人员,如果他或她缺乏适当校准的道德指南针,也会对项目造成难以估量的破坏.

要做到这一点,一个非常有效的技巧是 向候选人提出一个假设的道德困境 然后问他们在这种情况下会怎么做. 要使之有效,就必须消除这种困境 有一个明显的答案. 理想情况下,任何可能的答案都应该是不完美的,并且有些问题. 应聘者对这类问题的回答可以让我们深入了解他们的思维方式, 他们的道德标准, 以及他们的优先事项.

这里有一个例子:

你所在的公司被另一家公司雇佣去做一个项目. 这个项目需要使用一个特定的分包商. 你以前为那个分包商工作过,因此你知道他们经常延长工作时间,并向客户收取过高的费用. 如果他们在这个项目上这么做, 虽然, 这不会伤害到你的公司, 因为这些成本会转嫁到你公司的客户身上. 你已经向你的老板提过这件事,他建议你不要对顾客说什么, 特别是因为分包商在项目中的份额只占总预算的一小部分. 你有一个非常亲密的朋友,他为客户工作. 一天吃午饭的时候, 你的朋友问你对这个分包商有什么了解, 因为他知道你以前在那工作过. 你如何回应,你告诉他什么?

这里的美妙之处在于没有明确的“正确”答案,这种情况反映了现实生活和商业世界的道德复杂性. 如果问得恰当, 对这种“道德困境”问题的回答可能是招聘软件开发人员面试过程中最有说服力和最有价值的部分之一.

了解你(你是谁 真的?)

面试过程的一个固有缺陷是,在你面试之前,你真的没有办法了解和一个人一起工作是什么样的 和他们一起工作. 尽管如此,对应聘者的个性和气质有一个真实的感觉对成功招聘至关重要.

技术精英不仅在技术上有优势,他们也非常专业. 因此,对它们的研究不限于严格的技术评价.

技术精英不仅在技术上有优势,他们也非常专业.

考虑到这一点, 这里有一些面试技巧,可以帮助你评估候选人的个性和专业程度。

首先, 考虑有意地让一名非技术人员开始面试过程 (如行政助理). 然后,您可以询问该员工,一旦候选人意识到他们不是技术人员,他们是如何对待他们的. 他们是贬低人、不耐烦、居高临下呢,还是和蔼、耐心、恭敬呢? 工作人员传递给你的信息确实很有说服力. 你想知道应聘者是否尊重他人,不管他们是谁.

在整个面试过程中,寻找机会向应聘者提供建设性的反馈. 仔细观察这引起的反应. 应聘者是否对这些反馈表示赞赏,或者是否表现得很有戒心?

进行非技术的“闲聊” 面试的前5到10分钟是为了了解候选人的个性. 面试者可能会认为这只是真正面试的前奏,因此更有可能“放松下来”。. 因此,在这段时间里,你可能会对他们的性格有一个惊人的了解. 当然,如果他们表现出幽默感,那总是一个好兆头. :-)

除了这些招聘工程师的一般技巧, 这里有一些样题可以帮助你评估应聘者的性格, 信心, 诚实, 和职业精神:

  • 当你回顾你的职业生涯, 在你的脑海中,你所面临的一个特定的困难情况是什么? 详细描述这个挑战以及你是如何应对的. 你觉得你处理得特别好的是什么? 如果你有机会重新来过,你会怎么做?
  • 你认为你在职业生涯中犯过的最大的错误是什么?
  • 关于软件开发,你最喜欢的是什么? 你最不喜欢什么?
  • 如果你能给自己画一个理想的职位,那会是什么? 你的角色和职责是什么, 公司的规模和类型, 工作环境等等?
  • 你最大的优点是什么? 雇用你对我们有什么好处?
  • 没有人是完美的. 你性格中有哪些方面是你正在努力改善的?
  • 如果我打电话给你现在的老板,问他关于你的情况,他/她会告诉我什么?
  • 我们雇用你时应该考虑什么?

集体, 这些问题和技巧已经被证明可以帮助你更深入地了解求职者, 哪一点对做出成功的雇佣决定至关重要.

这种感觉是相互的吗??

所以,你找到了一个A+的候选人. 高技能的. 积极向上的性格. 优秀的文化契合度. 那太好了! 但是…

还有一个关键问题有待回答: 应聘者对你目前的职位和在你公司工作的兴趣有多大? 这个问题的答案对于确保招聘成功至关重要. 单方面的关系在商业上并不比在我们生活的其他方面更有效.

再一次, 直接问这个问题没有多大价值,因为, 在面试过程中, 人们一定会怀疑候选人在回答这样一个问题时是否坦率. 更确切地说,这是人们必须试图通过其他不那么直接的手段来确定的事情.

单方面的关系在商业上并不比在我们生活的其他方面更有效.

对于初学者来说, 候选人从一开始就接近你的方式是一个相当可靠的兴趣衡量标准. 候选人是否提供了一个令人信服的理由, 令人信服的解释为什么他或她对你的公司特别感兴趣,并提供机会? 如果是这样的话, 这不仅显示了真正的兴趣, 同时也是一种专业上的成熟和老练. 这样的候选人显然至少对贵公司做了一定程度的事先研究, 还有机会, 在联系你之前(而不是简单地“到处乱投简历”).

进入开发人员招聘流程的候选人已经对公司做了功课, 以及它的产品或服务, 提供一个有用的指标,显示他们的兴趣和精明. 已经提前对面试官做过调查的候选人(如:面试官).g.(阅读他或她的个人简介、LinkedIn简介、博客文章等)尤其值得注意. 更老练的应聘者会在面试过程中透露这些信息. 对其他人来说,简单的开放式问题,比如 “你对我们公司了解多少??”“你对本公司和这个职位有什么特别感兴趣的地方??” 能引出很有说服力的回答吗.

最后, 一个真正感兴趣的求职者可能会在面试过程中一直问问题. ,尽管, 面试结束时,问一下应聘者是否有什么问题总是一个好主意. 没有任何问题可能是一个危险信号, 即使是那些本来会被认为是A+候选人的人.

总结

本文描述的技术可以作为寻找和雇用行业中最好的软件开发人员的有价值的核心过程. 然而,重要的是要记住,有效的招聘不是一个目的地,而是一个过程. 人们必须不断地重新评估和调整他们的过程, 作为一个静态的过程注定要成为一个死的过程.

有效的招聘不是一个目的地,而是一个旅程.

每家公司的发展历程都会有所不同,这取决于其自身的文化和重点. 找到适合你的组织的路径并执行它. 你会有成功也会有失败, 但只要你向后者学习, 你可以确信你走在正确的道路上.

就这一主题咨询作者或专家.
预约电话

世界级的文章,每周发一次.

订阅意味着同意我们的 隐私政策

世界级的文章,每周发一次.

订阅意味着同意我们的 隐私政策

Toptal开发者

加入总冠军® 社区.