阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

技术招聘已经变味了

  • 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:4010370

评论

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

区块链培训哪家专业,引领区块链技术创新

CECBC

区块链

架构学习2021年03月03日(002)

张小胖

大话 Python:python 操作 excel 系列 -- 怎样读取 excel 文件?

老王说编程

Python Excel 数据读取

大话 Python:python 操作 excel 系列 -- 数据清洗

老王说编程

Python Excel 数据清洗

互联网信贷风险与大数据 个人信贷业务互联网化

张老蔫

28天写作

大话 Python:python 操作 excel 系列 -- pandas 读取、分析、保存

老王说编程

Python Excel pandas

LeetCode题解:190. 颠倒二进制位,使用遮罩,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

据说很多女性看不懂地图——视觉表象

Justin

心理学 28天写作 游戏设计

linux使用udev配置U盘自动挂载

happlyfox

Linux 28天写作 udev 自动挂载

呀,又是一个谣言「Day 12」

道伟

28天写作

职场中吃力不讨好?从根因上去破解

一笑

28天写作

浪潮肖雪:用工业互联网解决企业痛点问题

浪潮云

工业互联网

通过AWS EMR降低集群计算成本

行者AI

AWS 计算

上过云么?一行代码秒上云体验过么?

华为云开发者联盟

华为云 云服务器 devcloud 代码托管

死磕归并排序算法

Silently9527

算法 排序算法 快速排序

大话 Python:python 操作 excel 系列 -- excel 数据分析

老王说编程

Python 数据分析 Excel

DevOps敏捷60问,一定有你想了解的问题

华为云开发者联盟

DevOps 运维 敏捷 工具链 华为云

大话 Python:python 操作 excel 系列 -- 数据处理

老王说编程

数据处理 python excel

Redis最佳实践:7个维度+43条使用规范,带你彻底玩转Redis | 附最佳实践清单

Kaito

数据库 redis 后端

话说 wait、notify 、 notifyAll

木子的昼夜

Java 通信 Wait notify notifyAll

Mybatis系列全解(八):Mybatis的9大动态SQL标签你知道几个?提前致女神!

潘大壮

Java 后端 mybatis 后台 mybatis源码

git 教程 --git reset命令

生之欢愉,时间同行

git git reset

大话 Python:python 操作 excel 系列 -- 数据汇总与统计

老王说编程

Python Excel 数据统计

基于pandas

rainbow

B站专栏内页数据如何抓取,Web Scraper 学习在进一步,无编码学爬虫之五

梦想橡皮擦

Python 28天写作 3月日更

徐烨:这20年,我与应用系统的“云化”之路

华为云开发者联盟

架构 服务器 华为云 企业上云 应用系统

不用代码趣讲 ZooKeeper 集群

HelloGitHub

Java zookeeper ZooKeeper原理

有图有真相:带你实现现流行的权限验证

华为云开发者联盟

安全 session 权限 JWT 认证

大话 Python:python 操作 excel 系列 -- 数据的提取与筛选

老王说编程

Python Excel 数据提取与筛选

简述Electron的发展和应用

anyRTC开发者

WebRTC 跨平台 Electron RTC sdk

智汇华云 | 深入理解Istio中的证书管理

华云数据

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