技术招聘中最痛的点其实是不精准。技术面试官或CTO们常常会向我们吐槽:
“我经常在想,能不能把我们项目中的代码打印出来,作为候选人的面试题的一部分?”
“能不能把一个Bug带上环境,让候选人来试试怎么解决?”
“我很讨厌八股文面试,但非常想知道候选人在遇到新的技术问题会如何解决。”
古诗中说:“纸上得来终觉浅,绝知此事要躬行”。这句话虽然说的是学习,但也同样适用于技术面试。
没有实战考察,CTO们始终对候选人的水平无法放心,所以如何考察实战能力就是技术招聘的最大痛点。那么,解决方案是什么呢?ShowMeBug给出的答案是情境化面试。
什么是情境化面试?
对于HR来说,情境化面试不是一个陌生的概念,但它却较少被应用到程序员的招聘当中。
在技术招聘领域,情境化面试就是让双方进入到一个实战编程环境中,由面试官发问具体的编程问题,再由候选人思考并解答交流的过程。必要时刻,候选人还可以进行编程实操。通过反复切换不同的技术场景,面试官可以深入了解候选人真正的技术能力。
情境化面试并不是单纯的面试官出题、候选人答题,这样的方式既不高效,也不精准。情境化面试注重互动,注重观察候选人的技术思考力、架构能力和工程化能力。
举个例子,现在公司要招一个Java中级工程师,主要考察标准就是能够胜任 SpringBoot 中一个中等难度的模块的独立开发,要求Bug少,开发思路清晰。那我们可以设计以下考察点:
考点1:准备一个 SpringBoot 环境,安装常用依赖,例如翻页组件 Mybatis-PageHelper,里面完成一个半成品的投票功能。准备3-5个问题,例如写 5-10 行代码。
考点2:Git 操作方面,准备一个代码分支,了解候选人 Rebase、Merge 等实操能力。
考点3:其他数据库方面的问题。
考察候选人时,面试官可以把 SpringBoot 环境拿出来,并开始提问:“SpringBoot 的 MVC 是怎么设计的?接下来,这里已经完成一个简单的投票程序,但有一个关键的提交功能没有完成,你是否可以研究下,把相关代码补充出来?”
经过短暂思考,候选人就会在这个环境中找到对应的控制器,开始补充代码。
开始编码前,面试官可能会先询问编码思路,随后候选人开始编码。面试官还可以继续问:为什么这里的数组下标是 -1,它的意思是什么等等。
等对方基本完成编码(花费5-10分钟),双方再进一步交流更多问题。例如:如果遇到网络异常,我们应该如何处理;数据库事务失败时,如何捕捉异常;还可以实战交流 SpringBoot 异常代码等等。整个过程可能也只需要 30-45 分钟。
从这个过程中可以看出,情境化面试确确实实能够考察到候选人真正的技术能力。
怎样更便捷实施情境化面试?
可能有朋友说,原来我们采用过的一些方式已经是情境化面试法了,比如:在纸上讨论一个技术问题;预留一台电脑让候选人上机实战;线上共享屏幕让候选人试着讲讲自己的项目……
这些方法当然没错,但仍有很大的改进空间。如何让情境化面试更便捷实施才是关键。ShowMeBug提供了一个极为便捷的情境化面试环境。
使用ShowMeBug时,面试官可以随时拿出一个框架环境,例如 SpringBoot,Vue,React,Django 等,让候选人在浏览器中进行实战编程,完整模拟出工作时的一些编程体验,例如代码补全就是函数级的LSP补全,跟本地基本一致,甚至可以随时拿出来一个安装好了 Git 的 Shell 环境,让候选人实操。
(上图为ShowMeBug 代码补全)
在面试过程,推荐直接采用远程线上面试。
ShowMeBug的情境化面试,可以最为直接高效地进行技术面试,解决爽约率高的问题。如果还是习惯线下面试,可以额外准备一台电脑,或者让候选人带上自己的笔记本电脑,一个浏览器即可进入实战编程环境,解决代码面试中准备环境的痛苦。
在面试题出题时,面试官也可以在几分钟内准备好题目,轻松安装一些依赖,设定答题区与面试引导。更重要的是,一旦完成这些基础设定,团队里任何成员都可以轻松使用面试题,所有面试官都可以保持一致的高水平。
候选人同样可以快速适应这样的考察方式。在这种模式下,候选人不再需要刷题,不再需要考八股文,也基本没有学习成本,因为这个云端环境基本上模拟了本地的开发环境,一致性很好,并做了大量的体验优化。我们通过降低学习成本,让候选人更充分发挥自身的技术能力。
(上图为ShowMeBug前端框架题)
总的来说,情境化面试能非常明显地提高技术面试准确率,很多企业其实都曾经采用过,但在 ShowMeBug出现之前,情境化面试所需要的编程环境,以及在这个过程中的沟通技巧,对于很多技术面试官来说都是比较大的挑战。
ShowMeBug让情境化面试在技术招聘领域的应用变得简单,结合其自带的团队协作能力,让一个面试官的经验复用给招聘团队中的所有人,极大提升了技术招聘的质量。