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

作者 | 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 系统容器 | 原力计划
☞从货币历史,看可编程货币的升级
你点的每个“在看”,我都认真当成了喜欢

想招到优秀的程序员?这些坑一定不要踩相关推荐

  1. 如何招到优秀的程序员(第二版)

    根据大家的反馈,我发现在第一版中对优秀程序员的定位有一些偏差,因此作出改进,希望大家继续拍砖!并慎重声明:此处是讨论如何招到优秀的程序员,如果你认为自己是优秀的,请说出你自认为优秀的地方,这会给HR的 ...

  2. 想成为一个优秀的程序员,首先做到这5点

    我经常把程序员比喻成为篮球队员,为什么呢?在篮球场上虽然都是为最终得分努力,但每个人分工不同,大家是根据自己的特点和优势负责不同的位置,比如大前锋,中锋,控球后卫等.而一个人再厉害,没有团队协同是打不 ...

  3. 做到这一点,你也可以成为优秀的程序员(转)

    作为一个程序员,我经常会问自己一个问题: 优秀的程序员都具备哪些特质? 我总结过很多特质,例如: 有解决问题的能力 有独立思考的能力 有好奇心.有探索精神 逻辑清晰,能够用通俗的语言把技术问题讲清楚 ...

  4. 做到这一点,你也可以成为优秀的程序员

    作者: 解牛_冯雅杰 来源: 简书 作为一个程序员,我经常会问自己一个问题: 优秀的程序员都具备哪些特质? 我总结过很多特质,例如: 1.有解决问题的能力 2.有独立思考的能力 3.有好奇心.有探索精 ...

  5. 想要成为一名优秀的程序员,这十八招必看

    文章目录 第一招:速学能力 第二招:理解能力 第三招:编程能力 第四招:使用能力 第五招:编码能力 第六招:注释能力 第七招:思维能力 第八招:英语能力 第九招:学习能力 第十招:思考能力 第十一招: ...

  6. 想成为优秀的程序员这些码德不能缺

    我把这些看成是作为一个程序员的基本素质,多数是编码之外的事情: ●代码每天备份:(预防意外导致的任何损失) ●上传代码时写清楚log信息:(为维护这个模块的人着想,有可能是你自己) ●提供接口时不要把 ...

  7. 想要成为真正优秀的程序员是不是真的很难?

    很多人认为要想成为一名优秀的程序员,那就需要一天24小时每天不断地编程--睁开眼睛要编程,闭上眼睛睡觉的时候还要梦到编程--我认为这是一种矫枉过正的方法.沿着这条路走,只会让你精疲力尽,犹如夸父逐日一 ...

  8. 寻找优秀的程序员之实战指南-1

    寻找优秀的程序员之实战指南 --选自<软件随想录:程序员部落酋长Joel谈软件> [好消息]本书今天(12.10)互动有货,感兴趣的朋友可以 逛逛去 2006 年 9 月 7 日 ,星期四 ...

  9. 【知乎】怎么成为一个优秀的程序员,而不是一个优秀的码农?

    怎么成为一个优秀的程序员,而不是一个优秀的码农? 9 条评论 分享 默认排序按时间排序 98 个回答 3844赞同反对,不会显示你的姓名 萧井陌 微信公众号:炼瓜研究所 技术社区 - 3844 人赞同 ...

最新文章

  1. 【Spark】Spark2.x版的新特性
  2. 详解 Windows下apache 实现 SSL
  3. 超级计算机适用于科学计算,中国科学院
  4. 工程师必备:C/C 单元测试万能插桩工具
  5. 数据库---初识sql语句
  6. SpringBoot脚手架工程快速搭建
  7. java打印前线程的id_logback打印日志输出线程ID:切面模式
  8. java应用挂死故障排查
  9. php多图片上传程序2.4.3,php多文件上传 多图片上传程序代码
  10. CVPR(IEEE Conference on Computer Vision and Pattern Recognition)
  11. postgresql 修改表字段的长度
  12. php require找不到文件,第一次运行Fatal error: require_once找不到文件
  13. SVG 绘制可交互的中国地图
  14. itunes备份文件的位置在哪
  15. 用网络求t图的几篇论文框架图
  16. for循环中表达式和循环体的执行顺序
  17. 广州智算科技有限公司前端面试题
  18. arduino 土壤温湿度传感器_Arduino上使用土壤湿度传感器
  19. SAP中采购计划协议中交货容差测试
  20. [转]BLDC电机控制算法是很难 那是你没搞清原理

热门文章

  1. 程序发布出现: 服务器无法处理请求---无法生成临时类(result = 1)。 错误CS2001:未能找到源文件“C:\ Windows \ TEMP \ lph54vwf.0.cs”...
  2. vue从入门到开发--2-基本结构
  3. Python之路:初识
  4. MVC Code First中的惯例(约定)
  5. WF从入门到精通(第十章):事件活动 (转)
  6. 虚拟机中CentOS 7 网络服务启动失败
  7. mysql-5.6.14.tar.gz_CentOS 6.4下编译安装MySQL 5.6.14
  8. ROS学习——2编写简单的发布者和订阅者
  9. 《统计学习方法》—— 感知机对偶算法、推导以及python3代码实现(二)
  10. RTTI decltype declval