我们正在面试高级软件开发人员的职位

我一方面进行了一百多次面试,另一方面也进行了面试。 在本文中,我想分享我的经验,观察和有趣的观点。 也许这可以使某人免于犯错误,不正确的结论和浪费时间。

大鸟是哪种鸟?


因此,高级软件开发人员(又名高级开发人员)是具有丰富经验(至少5年)并且在商业软件开发方面具有深厚知识的开发人员。 为金钱而发展的工作经验是必要但不是充分的条件。 确保参与企业级的任何项目,并且如果从一开始就很完美,那么它将给您带来难忘的经历和广阔的前景。 高级版与中级版的主要区别在于,它可以将任何任务带入生产就绪状态。 他清楚地知道可以做什么和不能做什么。 它可以抓住需要在软件中进行重构或者只是从头开始重写的时刻。 编写高质量的代码,而没有严重的体系结构错误。

假设长辈比中级更快是错误的。 在我的实践中,很多情况下Middle可以更快地执行简单任务。 但是,在开发,维护和开发阶段,您可以运用积累的经验,避免错误和浪费时间时,高级几乎总是可以更好,更快地处理复杂的任务。

面试的主要目的


奇怪的是,但有时面试官没有遵循面试的主要目的,即确定开发人员是否对团队有用,并且这种收益与该开发人员的成本有多大关系。 相反,面试官通常会透露开发人员不知道的内容,而不是弄清楚他知道什么以及可以做什么。 结果,他得出了错误的结论,并随之带来了所有后果。

谁应该面试?


在这里,唯一正确的答案是aka Lead的近期负责人。 一个常见的错误是采访受访者中的2-3人,他们提出了交叉且不一致的问题。 所有这些都会给受访者带来不必要的压力,并阻止建立心理联系。

大气层


对于开发人员来说,面试总是一个压力,对于更多的人来说,更少的人。 他们中的许多人都不知道如何定性地“出售”自己。 因此,吸引开发人员并将采访转移到两个同事之间的友好交流中非常重要。 确实,通过友好的交谈,您可以找到离开以前工作的真实细节,以及面试者无需修饰就能掌握哪些技能。

学习能力


正如我在“目标”中所写的那样,重要的是要了解受访者的长处,他之前的工作,吃狗的方式,使用的方法以及一路上遇到的装备。

高级开发人员的主要能力:

  • 演算法
  • 建筑,设计模式。
  • 资料库
  • 进程的并行执行和同步。
  • 软件性能的基础。
  • 调试和记录。

开发人员的重要角色是了解其工作原理,概念和功能知识,而不是特定工具。 例如,如果他完全理解MySQL,那么与Postgres打交道就不会困难。 在大多数情况下,高级开发人员快速学习任何工具并不困难。

很多时候,受访者会切换到他们熟悉的一些细节,以下是实际操作中的案例:

  • 如果选择条件不止一行,如何使用SQL删除一行?
  • 哪个git命令将回滚上一次提交?
  • 您知道Java中Object对象的哪些方法? 其他语言可能还有其他选择-面试官很了解。

这些问题也来自“将硬币扔向空中”类别,它们的知识或无知不能得出有关开发商经验的任何客观结论。

还有一个单独类别的“机智”爱好者,他们对愚蠢的问题和任务进行“可理解性”检查,例如:

  • 为什么孵化轮?
  • 如果有两个水桶(3升和5升),如何在一个水桶中准确倒入4升水?
  • 解决一些难题,例如,收集魔方。

此类问题的问题在于,不仅会筛选出智商低下的人,而且还会筛选出相当一部分聪明的人,这些人根本没有准备好应对此类问题或承受压力。 在这里,不是聪明的人,通常是走得更远的人,那些已经知道标准问题和任务的答案和解决方案的人。

寻找动力


受访者经常提出这样一个常见问题:“您为什么要与我们合作?” 据了解,受访者将诚实,公开地透露自己的动机-“我想要更多的钱”或“一切都比我现在要好。” 但是对于受访者来说,这样的问题会引起字面上的误解,而且他很少公开回答。 因此,最好找出带有间接问题的动机。

动机是什么:

  • 。 最受欢迎的动机,但通常不被接受。 它非常适合家庭和那些习惯花很多钱或真的想存钱的人。
  • 有趣的任务 。 当人们真的很喜欢他们的工作时,他们准备加班和在周末工作而无需支付额外费用。
  • 升级新技能 。 该行业并没有停滞不前,为了保持劳动力市场的需求,他们经常需要抽水。
  • 职业成长 。 在初创公司工作的主要动机之一。
  • 知名或炒作公司 。 成为她的一份子并从她的名声中受益的机会。

您不应该问什么高级开发人员


  • 很少需要的XXX算法如何工作(例如quicksort)。 为什么问开发人员的日常工作中不需要什么,而Google在5秒钟之内呢?
  • 您是否拥有一个简单的YYY工具(例如git)。 我还没有遇到过一位开发人员,他们不会在一两天内掌握日常工作所需的基本git功能。
  • 您知道如何编写测试。 带星号的问题。 编写测试的过程很简单,但是要学会理解需要测试的内容和程度,这需要很长时间。 实际上,团队中只有一位经验丰富的测试编写者可以有效地控制此过程就足够了。
  • 什么是敏捷/看板/ Scrum。 该方法论将在开发过程中由组长选择;因此,普通演奏者无需完全了解它,并且基本原理可在几天之内掌握。

高级开发人员的类型


要了解特定开发人员的动机和能力,有必要强调其固有的类型。 我确定了以下常见类型:

  • 创造者热情的人 。 他从工作本身匆匆忙忙地完成了一些不重要的任务,在这些工作中您需要发明一些东西。 有时可以买到自行车,但是随着能力的提高,它可以生产出高质量的产品。 主要动机是有趣的项目和任务。
  • 例行公事 。 能够执行非常常规的工作,而不会随着时间的流逝而影响生产力,也不需要任何动力。
  • 超级英雄 。 即使没有足够的能力和时间,也不惜一切代价完成任务。 它通常是用狗屎和木棍雕刻而成的,但是随着能力的增长,或多或少地获得了体面的东西。 对于初创公司和要求苛刻的老板非常有价值。
  • 称职 。 你不能欺骗他,也不能欺骗他,他总是试图理解技术和任务的本质,他深刻地,结构化地思考。 任何项目中的宝贵员工。
  • 肤浅的 。 他们抓住了聪明的话语,方法,(表面地)研究了炒作技术和工具,并试图将所有这些应用到项目中,倾倒了大批小手,即使有可能管理小批小手。 通常是在职业生涯刚开始时,他们就受到同志的驱使和感动。
  • 人质的情绪 。 有一种心情-工作如火如荼,所以只带壳,没有心情-它将使人沉思,并比工作更富有哲理。
  • 职业者 。 显然是针对职业发展。 超过一年没有增长-可能离职。
  • 保守 。 热爱稳定和传统的人负面地指所有这些新奇的小东西,工具和方法。
  • Manimen 。 他们在支付更多费用的地方工作,因此对公司的忠诚度很低。 他喜欢奖金,奖金,免费nishtyaki和其他财务动机。

通常,一个特定的人会以各种比例组合几种类型。 随着时间的流逝,人类的类型及其比例会发生变化,并且有些人能够适应任务(典型的超级英雄)。 值得注意的是,随着年龄的增长,保守党的份额在不断增长,造物主可能会精疲力尽,而肤浅的人会成长为主管。

心理状态


不幸的是,有时高级开发人员开发了错误的技能,他们的性格可能会恶化,这大大增加了相互理解和有效的团队合作的难度。

通常有以下条件:

  • 生命在腐朽 。 有时会发生这样的情况,即由于某种原因(例如,出于业务决策),书面代码没有投入生产或寿命很长(启动或无效管理)。 这将使所有后果严重地令人沮丧。 由于工作经验,不应将此与健康的普通犬儒主义相混淆。
  • 禅理解了 。 多年来,在一个静态的企业项目中,开发人员上下进行研究,他感到自己现在已是稀有专家。 实际上,他在该项目之外的技能几乎不花任何钱,开发人员会对他的能力进行了重新评估。
  • 低估和不确定 。 一系列不成功的项目,糟糕的管理和其他风险使开发人员怀疑他的能力和技能,尽管实际上他可能被证明是一个非常有能力和有价值的员工。 通常在工资和/或职位方面低估了自己。
  • 高估了 。 与被低估和不确定的人相反,这个人成功地完成了一个项目或系列,这是非常成功的,并且在这波浪潮中大大高估了他的能力。

但是测试任务呢?


短期测试任务(2-3小时)中的问题是,根据其结果,无论作者是否具有发展高级水平的经验,都无法得出任何明确的结论。 取得同样的成功,您可以将硬币抛向空中。

结论


根据访问的结果,应形成对开发人员的客观印象:

  • 他的长处是什么?
  • 他如何加强团队。
  • 他需要多少时间才能达到“巡航速度”。
  • 所需的sn对应于上述几点。
  • 与团队之间是否有任何心理联系和兼容性?

如果由于某种原因无法自信地回答所有这些问题,那么您可以进行另一轮面试,或拒绝应聘者。 下一轮可能包括将揭示缺失信息的任何特定任务,例如-直接向以平均费率付款的公司编码半天。

PS不能描述一篇文章中的所有要点,因此,如果您有任何疑问或想要讨论某些问题,请在评论或电子邮件中写。

Source: https://habr.com/ru/post/zh-CN469403/


All Articles