导读:关于面试的“侮辱”性表现,开发者应该勇敢说“不”。为什么,看本文。
最近,我在指导一些学员完成开发人员的面试时,看到很多的是侮辱性的操作。
许多公司常用以下两种方式之一“侮辱”开发人员:
要求别人一种不可能,非常可笑的时间完成密集型作业
对候选人和面试官都没有用的白板面试
我们来谈谈这些问题,以及为什么我建议各位拒绝侮辱性的面试机会。
白板面试与软件工程的实际工作毫无相似之处。一些典型例子如下:
在解决方案不足的情况下,面试毫无意义。回答面试者随意编造或其他一些小的编码问题会浪费我的时间。
在必须找出解决方案的复杂情况下,我是否要在时间限制下,使用理想算法正确解决问题。这也是一个废话。
如果你雇用我作为一名软件工程师,那就是要决定如何解决问题、权衡实施和部署策略。在白板上解决一些毫无意义的算法并不能说明这一点。
当我专业地编写代码时,我会使用各种工具来编写干净、高效的代码。带走我的IDE、测试运行器、Git等只会妨碍我在现实生活中解决问题的能力。
我们花时间开发了一个示例应用程序,展示了我们在公司工作时遇到的一些数据结构和具体问题;
带回家的工作是在更大的示例应用程序中完成两个功能。我们已经为这些功能编写了测试用例,因此应聘者只需执行 TDD ,并判断自己的代码是否通过。
当候选人到达面试地点时,我们对程序功能进行了小规模的代码审查(就像你在现实生活中审查代码拉取请求一样)
然后,我向开发者提出了关于他们代码的扩展问题:如果我们只想对数据库只进行一次查询怎么办?你可以用什么结构和策略来缓存这些数据?如果数据集有数千万行,你会怎样做?需要怎样重构你的解决方案?
我收到了一引起这个过程的积极反馈。因为,它可以直接让候选人参与到当前公司正在解决的问题中。当我们要雇佣某人时,他们在第一天开始工作时就对我们的一个核心数据结构有了基本的了解。
这一面试过程尊重了开发人员的时间,同时他还参与了对代码、重构和方法的权衡,进行更高层次的思考。
就算他没有解决问题,也对后续的面试和工作也有帮助。大部分有良好解决问题能力的人从此不会被埋没,我们有一个良好的开端和了解,后续一起工作将更加舒适、顺畅。
作者:场长
本文为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。