HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

技术招聘已经变味了

  • 2020-05-05
  • 本文字数:3194 字

    阅读完需:约 10 分钟

技术招聘已经变味了

在技术面试中,常用的代码考量手段无非是现场写代码和留算法笔试作业,但这两种方式可以考察的因素非常有限,因此受到了一些技术人的吐槽。


回家写笔试代码是个好主意吗?

最近,Andrew Rondeau 放弃了一个在家编码的面试机会。为了尊重公司隐私,这里只简述公司的测试需求:


这项测试需要花费几个小时来完成。创建一个基于 Web 的留言板,需要使用 C#、ASP.Net Core、Angular 和 Material 设计,并使用数据库。当有人添加消息时,请实时更新所有其他打开的浏览器。为方便起见,无需进行身份验证。


根据 HR 的说法,这需要花费几个小时来完成,但 Andrew Rondeau 其实对 ASP 并不十分了解,自 WebSocket 出现以来,没有进行过任何实时操作,也没有使用过 Angular 或 Material 设计。Andrew Rondeau 预计该项目至少需要花费一天时间。


公司的人力资源毕竟有限,Andrew Rondeau 猜测公司并没打算在他身上花费太多时间,但是却希望求职者倾注很长时间在它身上。Andrew Rondeau 没有接触到团队中的其他成员,也没有见过他们的产品。Andrew Rondeau 在想如果在该项目上投入很长时间,却不小心犯了低级错误怎么办?那些高级工程师会不会将他拒之门外?如果到最后发现自己并不想要这份工作,但是浪费了很长时间,又该怎么办?


基于如上种种原因,Andrew Rondeau 放弃了这个工作机会。


Andrew Rondeau 表示还有一种情况,他也会考虑放弃面试。


此前,他曾接到测试要求是“修复开源项目中的 bug”。解读复杂的源代码可能需要几天时间,如果源代码使用了不熟悉的语言或习语,那估计花费的时间更长。


在 Andrew Rondeau 看来,修复开源项目中的 bug 并不友好,因为无法与已经在该代码库中工作过的其他面试者公平竞争,他很担心花了很长时间在家完成了这项测试最终却连个面试机会都没得到。

现场编程只是“假 IQ 测试”

Neil Sainsbury 拥有 15 年的软件开发经验,作为一名开发人员,他成功经营着自己的软件业务,并且是一家已经拿到风投的初创公司联合创始人,所以需要亲自招聘和管理开发人员。他认为,招聘应该从多个角度对候选人进行评估,比如他们对人友好吗?沟通能力如何?如何证明自己的想法?如何看待这个行业?对这个业务领域有什么看法?如何应对压力等。


相比之下,在招聘开发人员时,招聘过程会忽略人的因素,只关注算法或技术方面的东西。这是一种“假”IQ 测试,甚至都算不上是好的测试。以 Homebrew 作者 Max Howell 面试谷歌被拒为例。谷歌说他们有 90% 的员工使用了 Max 开发的 Homebrew,但因为在面试时 Max 没能在白板上写出如何反转一颗二叉树而被拒。(当然,这件事情后来在知乎上引起了激烈讨论,各方观点皆有,此处不赘述,感兴趣的朋友可以点击自行阅读


Neil Sainsbury 认为,软件行业,特别是开发人员的招聘显示出了一些独特性。其他职业很少会如此彻底地忽略候选人的实际能力、历史成就和整体素质,而这些其实都是招聘过程的一部分。


Neil Sainsbury 表示曾经招聘过一些在技术上表现优秀但其实很差劲的开发人员。


技术能力优秀的开发人员之所以失败,其中一个原因是他们太过于沉迷代码,以至于无法理解他们正在开发的东西是否有人关心或使用,而那些技术能力不那么优秀但懂得从用户角度思考问题、懂得用户需求的开发人员反而具有 10 倍(甚至是 1000 倍)的效能。他们可能花了 5 个小时去了解用户的需求,而技术能力优秀的开发人员可能花了几个月辛勤耕耘代码,开发出没有人在乎的功能。


如何了解候选人是否具备理解用户的能力?首先,他们可能会自己开发和交付产品,并让产品获得用户青睐;其次,他们具有很强的社交能力,沟通能力也很好。如果他们还写博客,那么去阅读他们的博客,并把它作为招聘过程的一部分。换句话说,他们具备了一些很好的素质,但却被整个软件行业的招聘给忽视了。


另一种常见的情况是,技术能力优秀的开发人员走的路线与业务目标不太一致。他们积极追求技术上的乐趣,但这对公司来说其实是不利的。但作为一家企业,你又怎敢抱怨?你想招一个对.Net 充满激情的人?你招到了,接下来,你又发现.Net Core 看起来很棒,我们来升级一下吧,即使还没有相应的产品。其结果是,3 个月后,大多数用户开始流失。


此外,还有一些现场面试提出的问题是那种只停留在教科书上,实际中基本不会使用的算法,面对这种问题,很多工程师也会很烦躁。更重要的是,无论是现场写代码还是在家编程,不好的面试体验都会让公司错失优秀的工程师。

糟糕的面试会错失优秀的工程师

面试是个双向选择,企业在面试候选人时,候选人也在考察企业。找到优秀软件工程师并不容易,而一场糟糕的面试意味着企业将与优秀的候选人失之交臂。


当 Andrew Rondeau 在大型科技公司工作时,HR 对软件工程师的了解远不如同岗位的工程师。Andrew Rondeau 知道一些可以简化现场和在家编码问题的网站,网站上提供了大量的面试示例和工具,这些工具最大的价值就是尊重候选人的时间。


在要求候选人到公司现场面试之前,可以事先对候选人进行初步了解,如果不符合要求也不必浪费彼此的时间(有些候选人甚至可能需要乘飞机来参加面试),尊重候选人的时间至关重要。

如何权衡现场编码和在家编码?

如果公司经常要求面试者在家编码,那么这种公司面试候选人的时间成本会比较低(因为已经轻车熟路),但是如果公司随意挑个问题发送给候选人,那么就会占用候选人比较长的时间,这也是 Andrew Rondeau 为什么放弃上述工作机会的原因。


很多工程师喜欢在没有旁观者的情况下放松自在地编码,让候选人在家编码能帮助公司了解候选人的风格和管理项目的能力,却无法看到工作过程,只能知道结果。但是在家编码也存在一个隐患,那就是候选人可能会有欺骗行为,可能旁边还坐着一位程序员帮他完成测试,现场编码就避免了这种问题。


采取现场编码面试可以很容易地看到候选人编码的倾向或偏见。这些暴露出来的问题可以帮企业更好地判断候选人是否符合岗位需求。


但作为候选人,当遇到一个糟糕的面试问题时,很容易无所适从。这种情况下,求职者通常会拒绝这份工作。但是,当在家编码也遇到一个无法操作的面试问题时,也纠结到底要不要进行下去。


因此,可以让应聘者自己决定现场编程或是在家编程,只要分清这两种方式的利弊并做好取舍,就能轻松解决这一问题。

好的面试要满足哪些条件?

在家编程

好的现场编程的面试问题首先要满足的条件是不能占用候选人太多时间,通常 2-3 个小时为宜(要避免对测试时间的错误预估,可能 HR 认为回答这个问题只需要 2-3 小时,但实际上却需要 15 个小时)。同时还需要了解候选人的学习轨迹,如果在家编程需要特定的库、语言、框架等,要在发送问题之前与候选人进行沟通。如果是涉及公司内部业务的测试题,那么现有员工完成这项测试的时间要是候选人完成测试时间的一半。

现场编码

一个好的白板问题需要仔细规划。面试官需要花费 1-2 小时来计划一场 1 小时左右的面试,同一个问题可以向类似岗位的不同面试者提问。


  • 2-4 个对岗位至关重要的高级编程概念;

  • 对此岗位“常识”的认知;

  • 10 到 20 行非常基础的代码编码问题;

  • 规划一个讨论问题,例如,假设需要解释所有岗位需要的 API 和算法;

  • 确定这些问题是否是真正的白板问题,或者候选人是否需要携带笔记本电脑;


总结下来,在家编程和现场编程各有利弊:


结语

一家公司的招聘行为通常会对公司和产品本身产生重大影响。一家公司其实就是员工和所做决策的共同反映。所以,如果只招聘填鸭式或算法式的员工,当他们交付出没有品味的产品时,也无需感到惊讶。那么,像 Stadia(这项技术允许用户通过互联网浏览器或 YouTube 玩游戏)这样的产品是来自于那些深谙用户需求并知道如何为用户开发产品的人,还是来自于那些总是认为需要(不惜一切代价)开发代码的工程部门?


每个人的喜好不同,如果想让所有应聘者都满意,那么最好的办法就是让应聘者自己选择以哪种方式来编码,重要的是,你要清楚如何计划好的测试问题,并确保参与测试的每位候选人都有良好的体验。


2020-05-05 21:4010476

评论

发布
暂无评论
发现更多内容

三大「价值流」搞定技术型管理

蔡建斌

管理 技术管理 精益 引航计划 内容合集

如何选择收银机主板?

双赞工控

安卓主板

三面滴滴Java岗,Java程序员校招蚂蚁金服

Java 程序员 后端

手撸二叉树之二叉搜索树的最小绝对差

HelloWorld杰少

数据结构与算法 9月日更

【优化技术专题】「线程间的高性能消息框架」深入浅出Disruptor的使用和原理

洛神灬殇

Disruptor LinkedBlockingQueue ArrayBlockingQueue 9月日更

什么?语音合成开源代码不会跑,Follow me!

华为云开发者联盟

tensorflow 语音合成 Tacotron2 DeepMind 深度神经网络模型

Who is Mavenir?

俞凡

Mavenir

狄刚谈区块链:技术上去中心化并不等于管理去中心化

CECBC

【墨天轮专访第四期】华为云GaussDB:发挥生态优势,培养应用型DBA

华为云数据库小助手

GaussDB 交流 华为云数据库 人物访谈

循环神经网络LSTM RNN回归:sin曲线预测

华为云开发者联盟

RNN 循环神经网络 LSTM LSTM RNN回归

用IoT放羊养牛,不出门也能知道它们的动向

华为云开发者联盟

物联网 华为云 iotda 畜牧业 华为云物联网平台

带你读AI论文丨用于细粒度分类的Transformer结构—TransFG

华为云开发者联盟

细粒度 映射 Transformer TransFG 差异性图片

如何从零搭建起一支技术团队

石云升

团队管理 管理 引航计划 内容合集 9月日更

什么是事务数据库?,Java程序员面试题集大全

Java 程序员 后端

14 种编程语言书写关机脚本,真香

梦想橡皮擦

9月日更

测试模型中理解压力测试和负载测试

FunTester

性能测试 接口测试 压力测试 FunTester 负载测试

使用Git分布式控制系统,怒斩腾讯和阿里的Offer

Java 程序员 后端

北鲲云SaaS平台让生物医学关键环节不再靠“猜”

北鲲云

Vite + Vue3 + OpenLayers

德育处主任

大前端 地图 vite Vue3 openlayers

人才缺口超70万,15所高校新设区块链专业

CECBC

性能测试中标记请求参数实践

FunTester

性能测试 接口测试 压力测试 FunTester 标记参数

世界的尽头是铁岭,互联网的尽头是它

艾小仙

NDK-AAudio

Changing Lin

9月日更

三面蚂蚁惨败,面试官要求手写算法,从外包公司到今日头条offer

Java 后端

什么是Spring-Cloud、需要掌握哪些知识点,Java面试常问的算法题

Java 程序员 后端

没有Linux服务器,该如何学习Linux呢?

Simon郎

大数据 Linux java;

RocksDB原理及应用

hanaper

三面美团、四面阿里成功斩下offer,下血本买的

Java 程序员 后端

Vue进阶(幺零七):arr.forEach() 跳出循环

No Silver Bullet

Vue 9月日更

【Flutter 专题】50 图解动画小插曲之 Lottie 动画

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 9月日更

号外!号外!极客时间出插件了😎

IT蜗壳-Tango

极客时间 9月日更 浏览器插件

技术招聘已经变味了_语言 & 开发_赵钰莹_InfoQ精选文章