寻找少数精英——寻找和雇用业内最好的软件开发人员

已发表: 2022-03-11

挑战

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

招聘软件开发人才——真正的人才——是一项多方面的技能,它处于社交网络、技术敏锐度、流程管理和直觉的十字路口。 任何曾经负责招聘的人都非常了解招聘挑战的范围和深度。

招聘人才是一项多方面的技能,处于社交网络、技术敏锐度、流程管理和直觉的十字路口。

特别具有挑战性的是,优秀的软件工程候选人的标志性品质极难评估。 您如何探索候选人的创新能力和创造性思考能力? 怎么判断他是不是队友? 你如何诊断她接受建设性反馈的能力? 你如何调查某人的道德纤维?

虽然评估这些“软”标准并非易事,但这样做对于雇用最优秀的人才至关重要。 然而,评估这些关键但难以捉摸的属性的尝试常常包含足够透明的问题或挑战,以使“正确”答案对大多数候选人来说是显而易见的。 因此,通过询问他们无法获得任何实质内容。

一个常见的陷阱是过于关注技术细节,而不是评估候选人解决​​问题、创造性思考以及与团队其他成员合作的能力。

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

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

当共同使用时,这些招聘技术产生了一个高效的筛选过程,并在招聘受薪或自由编程人才方面取得了成功的成功记录。 这个过程就是这篇文章的全部内容。

入门:用最好的方式填充管道

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

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

毫无疑问,合格候选人的唯一最佳来源是个人网络,因为有素质的人往往会与有素质的人交往。 个人推荐是成功的新员工(来源)最有成效的来源。

其他有价值的顶尖技术人才来源包括:

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

这些资源的美妙之处在于,它们甚至在面试他们之前就以一种或另一种方式提供了你已经审查过的工程候选人。 无论是您公司中的某个人,还是您认识的某个人,都认识他们并高度推荐他们。 或者您已经查看了他们的开源代码并对其印象深刻。 或者他们的博客文章暗示了成熟的技术专长和理解水平(理想情况下甚至是幽默感:-))。 这里的关键是,当您联系时,候选人已经远远超过“只是一份简历”。

此外,考虑使用职位描述模板(例如用于 SEO、前端 Web 开发和后端 Web 开发的模板),这些模板对您想要的候选人类型设定了很高的期望。

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

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

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

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

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

存在许多在线资源,您可以从中选择此类编程挑战以纳入您的面试过程。 那些专注于算法(而不是特定编程语言的知识)的人有助于评估候选人的计算机科学基础和解决问题的能力。 一些值得注意的例子包括hackerrank.com、projecteuler.net 和beatmycode.com。 但是请记住,您不需要使用这些站点来管理测试; 相反,您可以简单地将它们用作从中选择挑战的资源,然后让候选人在面谈期间(在白板上等)编写解决方案。

也就是说,在线测试可以成为面试过程中有价值的附加组成部分。 但是,在使用在线测试服务时,重要的是要避免过度关注候选人网站生成的分数而不是其解决方案的细节的风险。 一方面,您可能不同意测试服务采用的评估指标。 此外,您认为解决方案的某些方面可能特别聪明或优雅,而自动评估过程可能完全没有注意到。

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

在线测试服务提供的评级也可能出现“误报”或“误报”。 一方面,误报可能会导致浪费时间和资源来面试不合格的候选人,而误报可能会取消非常值得考虑的候选人的资格。 从长远来看,后者具有更严重的后果,因此必须仔细监控。

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

在线开发测试也可以作为一个有价值的初步过滤器,以消除技术技能远低于标准的高比例候选人。 有趣的是,由于缺乏信心,许多这样的候选人甚至没有尝试参加考试就放弃了这个过程。 也就是说,信心并不总是最好的态度晴雨表,正如邓宁-克鲁格效应所证明的那样。

评估技术敏锐度的另一个非常有价值的技术是要求候选人提供他们在 GitHub 和 SourceForge 等网站上创作或至少贡献过的开源项目的列表(如果他们只是贡献者,请他们向您指明他们个人编写的代码的哪些部分)。 然后,您可以在审查他们的代码后参加面试,准备向他们询问具体的设计决策、编码风格、采用的模式等。 这样的讨论可能比简单地询问候选人关于语言的技术细节更有价值。

说到语言……

少数精英不仅精通技术,而且是完美的软件开发专业人士,无论是口头还是书面都清晰、有效、简洁地进行沟通。

口头沟通技巧在面试过程中很容易评估,无论是面对面还是通过电话。 虽然口头技能在某些不涉及用户联系的“幕后”技术角色中的重要性毋庸置疑,但它们对于最大化有效的团队互动和思想交流仍然很重要。

精英中的少数成员是完美的专业人士,无论是口头还是书面形式,都能清晰、有效、简洁地进行沟通。

最好通过要求候选人提供写作样本来评估书面沟通技巧。 强烈推荐技术写作样本,因为它们不仅展示了写作技巧,而且还展示了技术清晰度。 在面试前索取这些样本可能特别有用。 一方面,这提供了提前审查和分析他们的写作的机会,这样你就可以准备好与他们讨论和批评他们的写作。 此外,一些技术候选人会被要求编写样本而“推迟”,样本本身可以作为一个有价值的过滤器。

道德困境

有一个古老的笑话是关于一位父亲想教儿子道德的。 父亲告诉儿子,他和他的合伙人有一家干洗店。 父亲说,有一天,一位顾客来我们店取她的干洗衣服。 当顾客转身离开时,我意识到她多付了 10 美元。 好的,道德规范来了……我要不要告诉我的伴侣?!

相比之下,真正的道德困境——道德困境——往往是模糊而复杂的,而且它们肯定会出现在商业中。 如果最强大的软件开发人员缺乏经过适当校准的道德指南针,他或她可能会对项目造成无法估量的破坏。 因此,候选人的这一维度对评估至关重要。

如果最强大的软件开发人员缺乏经过适当校准的道德指南针,他或她可能会对项目造成无法估量的破坏。

实现这一点的一种非常有效的方法是向候选人提出一个假设的道德困境,并询问他们在这种情况下会做什么。 为了使这一点有效,这个困境没有一个明显的答案是至关重要的。 理想情况下,任何可能的答案都应该是不完美的并且有些问题。 候选人对此类问题的回答可以为他们的思维方式、道德标准和优先事项提供巨大的洞察力。

这是一个例子:

您工作的公司已被另一家公司雇用从事一个项目。 该项目需要使用特定的分包商。 您以前曾为该分包商工作,因此您直接知道他们经常加班并为客户的时间多收费用。 但是,如果他们在这个项目上这样做,它不会伤害您的公司,因为这些成本将转嫁给您公司的客户。 您已经向您的老板提到了这一点,他建议您不要对客户说任何话,特别是因为分包商的项目部分只占总预算的一小部分。 不过,您有一个非常亲密的朋友为客户工作。 一天午餐时,你的朋友问你对这个分包商了解多少,因为他知道你曾经在那里工作。 你如何回应,你告诉他什么?

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

认识你(你到底谁?)

面试过程的固有缺陷之一是,在你真正与他们一起工作之前,真的没有办法知道与一个人一起工作会是什么样子。 尽管如此,对候选人的个性和气质有一个真实的感觉对于成功的招聘至关重要。

技术精英不仅技术出众,而且专业性很强。 因此,对它们的搜索不限于严格的技术评估。

技术精英不仅技术出众,而且专业性很强。

考虑到这一点,这里有一些面试技巧有助于评估候选人的个性和专业精神……

一方面,考虑有意开始面试过程,由非技术人员(如行政助理)进行预筛选。 然后,您可以询问该工作人员,一旦候选人意识到他们不是技术人员,他们是如何对待他们的。 他们是贬低、不耐烦和居高临下,还是令人愉快、耐心和尊重? 工作人员向你转达的内容确实很能说明问题。 您想知道候选人是否尊重他人,无论他们是谁。

在整个面试过程中,寻找机会为候选人提供建设性的反馈。 仔细观察这引起的反应。 反馈是否受到赞赏,或者候选人似乎变得完全防御?

在面试的前 5 或 10 分钟进行非技术性的“闲聊” ,作为了解候选人个性的一种方式。 候选人可能认为这只是实际面试的前奏,因此更有可能“放下头发”。 因此,在这段时间里,你可能能够从他们的性格中看出惊人的数量。 当然,如果他们表现出幽默感,那总是一个好兆头。 :-)

除了这些招聘工程师的一般技巧外,这里还有一些示例问题,可帮助评估候选人的个性、自信、诚实和专业精神

  • 当你回顾你的职业生涯时,你所面临的具体困难情况是什么让你印象深刻? 详细描述挑战以及您是如何应对的。 你觉得你处理得特别好? 如果你有机会再做一次,你会做些什么不同的事情?
  • 你认为你在职业生涯中犯过的最大错误是什么?
  • 您最喜欢软件开发的什么? 你最不喜欢什么?
  • 如果你可以为自己画出理想的位置,那会是什么? 就你的角色和职责、公司的规模和类型、工作环境等而言,它会是什么样子?
  • 你最大的优势是什么? 雇佣你我们能得到什么?
  • 没有人是完美的。 你正在努力改善你性格的哪些方面?
  • 如果我打电话给你现在的老板,问他关于你的事情,他或她会告诉我什么?
  • 我们在雇佣你时应该注意什么?

总的来说,这些问题和技巧已被证明可以促进对候选人真实身份的更深入和更深入的了解,这对于做出成功的招聘决定至关重要。

感情是相互的吗?

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

还有一个关键问题有待回答:候选人在多大程度上对您的空缺职位和为您的公司工作特别感兴趣? 这个问题的答案对于确保成功聘用至关重要。 片面关系在商业中的作用并不比在我们生活的任何其他方面更好。

再一次,简单地直接问问题的价值是微乎其微的,因为在面试过程中,人们必须怀疑候选人在回答这样一个问题时的坦率。 相反,这是人们必须尝试通过其他不那么直接的方式来确定的事情。

片面关系在商业中的作用并不比在我们生活的任何其他方面更好。

对于初学者来说,候选人从一开始就接近你的方式是一个相当可靠的衡量标准。 候选人是否提供了一个令人信服的、令人信服的解释,说明他或她为什么对你的公司和可用的机会特别感兴趣? 如果是这样,这不仅显示出真正的兴趣,而且显示出一定程度的专业成熟度和成熟度。 在与您联系之前,这样的候选人显然已经对您的公司和机会进行了至少一定程度的事先研究(而不是简单地“在城里到处扫射他们的简历”)。

进入开发人员招聘流程的候选人已经完成了公司及其产品或服务的功课,为他们的兴趣和精明提供了一个有用的指标。 对面试官进行了预先研究(例如,阅读他或她的简历、LinkedIn 个人资料、博客文章等)的候选人尤其值得注意。 更老练的候选人会在面试过程中强调透露这些信息。 对于其他人来说,简单的开放式问题,例如“您对我们公司了解多少?” “你对我们公司和这个职位有什么特别感兴趣的地方?” 确实可以引起非常有说服力的反应。

最后,真正感兴趣的候选人可能会在整个面试过程中提出问题。 尽管如此,通过询问候选人是否有任何问题来结束面试总是一个好主意。 根本没有任何问题可能是一个危险信号,即使对于本来会被认为是 A+ 候选人的人也是如此。

包起来

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

有效的招聘不是目的,而是一段旅程。

根据自己的文化和优先事项,每家公司的旅程都会有所不同。 找到适合您组织的路径并在其上执行。 你会有成功,也会有失败,但只要你从后者中学习,你就可以放心,你是在正确的道路上。