专栏名称: 伯乐在线
关注职业资讯;学习各类职业感悟、心得和经验分享,扩大职业视野;体会求职、工作和创业的历程 - 就在JobBole.com 伯乐在线
目录
相关文章推荐
OSC开源社区  ·  MCP这么火,来一波简单实操记录 ·  3 天前  
OSC开源社区  ·  TypeScript之父宣布:编译器和工具链 ... ·  昨天  
程序员小灰  ·  24小时,从神坛跌落!Manus究竟做错了什么? ·  5 天前  
程序员小灰  ·  跌爆了。。。 ·  4 天前  
51好读  ›  专栏  ›  伯乐在线

怎样才能招不到程序员?

伯乐在线  · 公众号  · 程序员  · 2019-08-14 20:15

正文

(给 伯乐在线 加星标,看经典文章

原创整理:伯乐在线/伯小乐

【导读】:咦,怎么是 招不到 程序员?标题没写错么?嗯,没写错, 国外程序员 Nikita 最近写了一篇文章《How NOT to hire a software engineer》,吐槽大公司在招程序员的一些不合理的做法。


一起来看看他是从哪些方面吐槽的?吐槽的是否有道理?



----


我不是大公司的招聘专家,但我是一个有 14 年工作经验的程序员,对小公司招聘还是有较多经验和一点常识。


早在 2013 年,我为 AboutEcho 组织了一次非常成功的招聘活动,最终招聘了 9 名高级工程师。


这让我有信心来聊聊如今互联网巨头招程序员的做法。


(插图来自 Yulia Prokopova)


1、不要面试时追求最佳解决方案


当求职者到达面试现场时,面试官给出一个问题,并希望在 2 分钟内得到解决。如果花的时间更长,他们就会开始担心,至少会要求你做点什么。


我能理解,毕竟他们只有 45 分钟,他们有很多事情想和求职者一起经历。


我不能理解的是,面试官是根据求职者在 2 分钟内想出的解决方案的质量来评判。因为那不是人类创造力的工作方式。想出很多点子很容易,但期望最佳点子总是第一个出来就很奇怪了。即使是天才,也无法在几分钟给出世界上的最佳解决答案。


创造力是评估和过滤你所想到的想法的能力。如果你们真的对此感兴趣,为什么不让求职者来比较和评估多种解决方案呢?然后判断求职者是否能够评估解决方案的性能?求职者是否能清楚看到所有的优点和缺点?


如果要求在几分钟内想出最好的解决方案,你们测试的是运气,仅此而已。你们是在雇佣幸运的员工吗?还是招能力的员工?



2、不要在面试中问谜题


如何检查链表是否有循环?一个 N 维的盒子能装进另一个 N 维的盒子里吗?你能在没有第三个变量的情况下交换两个变量吗?如何找到两艘行进中的船之间最短的距离?


别误会我的意思,这些谜题很有趣,讨论起来很有趣,解决方法也很有见地。我以前还是个孩子的时候,我就喜欢看《Mathematical Recreations and Essays》。



然而,不管谜题有多有趣,它们只是一些轶事。谜题的性质是,你要么知道答案,要么不知道。它没有告诉你其他任何事情。它与未来的表现无关,与聪明、能力或其他任何事情无关。知道一个特定的答案,并不意味着你可以采取通用和可预测的方式去解决实际问题。它告诉你的唯一一件事是,当某人与他人分享一个解决方案时,那这个人已经有了一种解决方案。不多也不少。就够了。


(蜡烛烧断绳子之前,你会如何自救?)



3、接受其他选择/解决方案


这在某种程度上是意料之中的,但大公司似乎仍然在这方面失败了。如果求职者提出了另一种解决方案,这是面试官学到一些东西的机会。如果提出的解决方案不可能实现,或者不太好,这也是一个深入讨论的好机会。


尽管如此,我还是因为曾经提出过一个同样复杂的替代解决方案而被 pass 了(而且我背负着一场关于“解决问题的真正方法”的讲座)。另一次面试时我引入了一个特定的解决方案,面试官急迫地忽视我所有考虑到的,只想讨论他认定的解决方案,后来面试官对我的反馈是“没啥印象”。


没有人知道所有的事情。放开心态,倾听他人,多思考。是的,即使你在面试他人。



4、容忍瑕疵


由于某种原因,单字节溢出(Off-By-One)错误被广泛认为是 CS 中最难的问题之一,几乎每个人都会犯此类错误。错误是程序员生活的一部分,并不是你可以摆脱掉的。优秀的程序员知道该怎么做。程序员的素质,并不取决于他/ TA 犯的错误有多少。


现在,如果你只选择那些在面试中没有出错的人,你就能得到一群总是能写出完美代码的程序员。你只是不知道当他们不可避免地犯错误时,他们会怎么做。


所以犯错其实是件好事,因为你会了解到求职者是如何消除错误的。不要只看到错误,而是要看求职者是如何处理错误的:


  • 简单的代码

  • 分治

  • 自检

  • 不变量

  • 断言

  • 编译和运行

  • 测试


噢,不好意思,最后两项。我都忘了你们在面试时不会让求职者运行程序的。那你们还指望什么呢?








请到「今天看啥」查看全文