一次好的面试就像两个充满激情的程序员之间的非正式谈话。

作者 | Ravi Shankar Rajan

译者 | 明明如月,责编 | 郭芮

头图 | CSDN 下载自视觉中国

出品 | CSDN(ID:CSDNnews)

以下为译文:

Charles Barkley 曾言:“我并不认为自己是在接受面试。我只是在交谈。”

是的,一次好的面试就像两个充满激情的程序员之间的非正式交谈,是一次有意义的信息交流,一场关于所面临挑战的良性辩论。好的面试应该以面试官和被面试者互相学习而告终。

我在软件行业的第一次面试就符合上述描述。那是一家 IT 服务公司,为世界各地的客户提供应用程序维护支持服务;因为我一直想在一家产品公司工作,所以我对此不太感兴趣。尽管如此,我还是参加了那次面试,然而面试官,这个首席工程师,简直棒极了。

他说:“我在网上看到了你的一些开源项目,我也看了你的一些编程博客。尽管对我来说你的这些观点有些激进,但是你的很多观点很有趣。如果你想谈论那些激进的观点,请先说服我。”

我的面试从开始,持续了将近 90 分钟。在这 90 分钟里,我们几乎聊了方方面面:技术挑战、行业趋势、最新技术、工作法,甚至程序员的态度。在这种面试中我们从彼此身上学到了很多东西。

我最终接受了这个 offer,这是我一生中最好的决定。

面试是一条双行道,公司需要能帮助他们实现目标的好程序员,而程序员需要能实现他们职业抱负的好公司。这种关系必须是相互共生的,才能形成富有成效的伙伴关系。

这里的关键是专注。作为面试官,不要浪费宝贵的面试时间问一些无意义的问题。把重点放在对组织重要和有价值的事情上,这样能聘用到专业知识的优秀程序员。

在雇用优秀的程序员时,这里有一些最糟糕的方法需要避开。

不要做一个自作聪明的面试官

Deyth Banger (《How to Talk to Anyone》作者)说得很清楚:“与其装聪明,不如装傻… 毕竟,聪明人最终都会如愿以偿。”

如果你在面试中花四分之三的时间谈论你自己、你的职位、责任和技能,那么你就是一个自作聪明的面试官。你提到了你处理危机情况的巧妙方法,你让可怜的程序员清楚地知道,你是组织中最有权利的人。

记住,优秀的程序员并不都是顺从的,他们会质疑一切,直到他们理解背后的原理。如果你偏执于自己的观念,他们会马上注意到并且躲着你。

只要诚实和谦虚就够了。你的目标应该是寻找一个问题解决方案,一个可以加入你的团队并帮助团队变得更好和更有创造力的人。

不要认为你的解决方案就是唯一的解决方案

你向应聘者提出一个棘手的问题,你期望他能给出一个明确的正确答案。

这是废话。

一个好的程序员面试都是为了深入了解他 / 她解决问题的能力以及解决问题的技巧。如果你执着于某个特定的解决方案,甚至只期望程序员只提出该解决方案,那么就没有任何进一步讨论的余地。更糟糕的是,你可能最终会筛选出一个思维能力有限的平庸的程序员。

如果面试的程序员只是记住了很多好的解决方案,他给了你想听到的解决方案,但实际上,他很可能是一个水平非常一般的程序员。

记住,创造力需要合作才能茁壮成长,但是合作和共谋之间只有一线之隔。前者是一种“不同意就同意”的文化,这种文化能够激发出人们最好的一面,而后者是一种“保留各自意见,接受分歧的存在”的文化,这种文化会导致灾难。

不要问脑筋急转弯

Rebecca Wells 曾经说过:“这就是生活。你不需要用脑筋急转弯来解决问题。你只需要爬上那只野兽,然后骑上它。”

破坏手表的最创新方法是什么?

一家肉店的店员身高 5 英尺10英寸,穿着13码的运动鞋。他有多重?

在不列颠哥伦比亚,你不能给一个有木制假腿的人拍照,为什么不能呢?

按照一些开明的面试官的说法,这样的脑筋急转弯有助于理解程序员是如何“思考”的,尤其是当他们面对未知的、无法解决的问题时。

这是惹恼优秀程序员的最糟糕的方法之一。

回答这些脑筋急转弯的能力与程序员思考业务问题和编写精心编写的代码的能力没有任何关系。这些难题中没有一个能让我们洞察一个候选人是否是一个优秀的团队合作者或者具有很好的领导能力。

真正的解决问题的能力只有通过询问与他的经验有关的问题,以及了解他在工作经历中表现出的才能的情况才能找到。现在到了抛弃这种愚蠢的脑筋急转弯的时候了。

不要让他在纸上写代码

理查德·菲利普斯·费曼的观察一针见血:“我能创造所有我能理解的事物。”

要求程序员在一张纸上(甚至是白板上)写代码是一个非常愚蠢的主意。程序员是专业人士,专业人士应该被以不同的方式对待,而不是像老师那样要求孩子们在黑板上写算法。

你不能简单地测试一个程序员的记忆能力,然后指望他能记住编程语言的每一个语法细节、工具类的源码和所有关键字。在现实世界中,这是行不通的。

在现实世界中,优秀的程序员是那些知道能够充分利用他们所拥有的工具、技术和算法,而不需要死记硬背的人。

如果你真的想要测试一个程序员的能力,那么就给他一个实时业务场景,同时还要为他提供解决方案所需的工具。我们应该一直寻找用来解决实际问题的真实代码,而不是一些草草写在纸上的代码。

不要问太多与工作无关的问题

问一些共同上下文的问题对面试有帮助。比如他或她来自你的家乡,有着共同的兴趣爱好,甚至经常去同一家网球俱乐部。在面试中,这类问题可以帮助缓和气氛。

但是,如果你只是坚持问与工作无关的事情,那么就没啥意思了。这会让程序员感到困惑和愤怒。他的心底会开始自言自语:“ 这到底是怎么回事?”,逐渐失去兴趣。

问太多私人问题也非常不好。

“你有孩子吗? ”

“你是哪国人? ”

“你多大了? 你看起来很年轻” (尤其是对女孩来说)

等等......

记住,不要招聘“适应这种文化”的程序员,而是要招聘一个“适合这份工作”的程序员。

总结

缺乏思考和创造性是糟糕面试的主要特征,最终的结果甚至可能是灾难性的。

也就是说,好的面试没有定法,也没有明确的尺度。但好的面试成就更强大的公司,优秀的人才,更棒的产品;好的面试让团队中每个人更快乐的工作和生活。

正如 Mark W Boyer 所总结的那样:“经验丰富的管理者面试以挑选人才;经验不足的管理者面试吓跑人才。”

原文:https://levelup.gitconnected.com/the-worst-ways-to-hire-good-programmers-b485291251a1

译者:明明如月,知名互联网公司 Java 高级开发工程师,CSDN 博客专家。

本文为 CSDN 翻译,转载请注明来源出处。

更多精彩推荐
☞全球 Python 调查报告:Python 2 正在消亡,PyCharm 比 VS Code 更受欢迎!

☞全球最大编程问答社区 Stack Overflow 宣布裁员 15%!

☞Wi-Fi 真的安全吗?一行代码就可让周边无线网络全部瘫痪!| 原力计划
☞干货 | 时间序列预测类问题下的建模方案探索实践
☞利用 Docker 在不同宿主机做 CentOS 系统容器 | 原力计划
☞从货币历史,看可编程货币的升级
你点的每个“在看”,我都认真当成了喜欢
Logo

20年前,《新程序员》创刊时,我们的心愿是全面关注程序员成长,中国将拥有新一代世界级的程序员。20年后的今天,我们有了新的使命:助力中国IT技术人成长,成就一亿技术人!

更多推荐