如何驯服小辈?

小学生如何进大公司? 如果你是一家大公司,如何雇佣一个像样的初级员工? 下面,我将向您讲述我们在前端招聘初学者的故事:我们如何完成测试任务,准备进行面试并为新人的发展和入职建立指导计划,以及为什么标准面试问题不适用不工作。

如何驯服小辈?
我正在努力驯服Junior

你好! 我叫 Pavel,在 Wrike 团队从事前端工作。 我们创建一个项目管理和协作系统。 我从2010年开始从事网络工作,在国外工作了3年,参与了多家初创公司,并在大学教授了网络技术课程。 在公司,我参与了针对初级员工的技术课程和 Wrike 指导计划的开发,以及直接招聘他们。

为什么我们甚至考虑雇用初级员工?

直到最近,我们还在招聘中高级前端开发人员——足够独立,可以在入职后完成产品任务。 今年年初,我们意识到我们要改变这个政策:一年来我们的产品团队数量几乎翻了一番,前端开发人员数量接近一百人,而在不久的将来这一切都将必须再次加倍。 工作量很大,空闲的人很少,市场上的人就更少了,所以我们决定向那些刚刚开始前端之旅的人求助,并意识到我们已经准备好投资他们的产品了。发展。

谁是小三?

这是我们问自己的第一个问题。 有不同的标准,但最简单、最容易理解的原则是:

需要向 Junior 解释什么功能以及如何操作。 中间需要解释需要什么功能,他会自己弄清楚实现方式。 签名者本人会向您解释为什么这个功能根本不需要做。

无论如何,初级开发人员是需要有关如何实施这个或那个解决方案的建议的开发人员。 我们决定建立的基础是:

  1. Junior是一个想要发展并准备为此而努力的人;
  2. 他并不总是知道自己想往哪个方向发展;
  3. 需要建议并寻求外部帮助——来自他的领导、导师或社区。

我们还有几个假设:

  1. 六月的立场将会引起激烈的反应。 您需要在发送简历的阶段过滤随机回复;
  2. 主过滤器无济于事。 ——需要更多的测试任务;
  3. 测试任务会把大家吓跑 - 不需要它们。

当然,我们有一个目标: 4周内3名青少年.

有了这个认识,我们开始进行实验。 计划很简单:从尽可能宽的渠道开始,然后尝试逐渐缩小渠道,以便您可以处理流程,但不要将其减少到每周 1 名候选人。

我们发布职位空缺

为公司:将会有数百个回复! 考虑一个过滤器。

对于初级:在发送简历和测试作业之前,不要害怕问卷——这表明公司已经照顾了你并且已经设置好了流程。

第一天,我们收到了大约 70 份来自“懂 JavaScript”的候选人的简历。 然后又是这样。 并进一步。 我们实际上无法邀请每个人到办公室面试,而是从他们中选择了最酷的宠物项目、实时 Github 或至少有经验的人。

但我们在第一天为自己得出的主要结论是风暴已经开始。 现在是在提交简历之前添加调查表的时候了。 她的目标是淘汰那些不愿意付出最小努力提交简历的候选人,以及那些不具备知识和背景至少无法在谷歌上搜索到正确答案的候选人。

它包含有关 JS、布局、Web、计算机科学的标准问题 - 每个想象在前端面试中会问什么的人都知道这些问题。 let/var/const 之间有什么区别? 如何仅将样式应用于宽度小于 600 像素的屏幕? 我们不想在技术面试中提出这些问题 - 实践表明,在完全不了解开发的情况下,经过 2-3 次面试就可以回答这些问题。 但他们能够首先向我们展示候选人原则上是否理解上下文。

在每个类别中,我们准备了 3-5 个问题,并日复一日地更改答案表中的设置,直到淘汰最通过和最困难的问题。 这使我们能够减少流量 - 在 3 周内我们收到了 122 名候选人,我们可以利用它进一步开展工作。 这些人是 IT 学生; 想从后端转到前端的人; 25-35岁的工人或工程师,他们非常想改变自己的职业,并在自我教育、课程和实习上投入了不同程度的努力。

更好地了解彼此

为公司:测试任务不会吓倒考生,反而有助于缩短漏斗。

对于初级:不要复制粘贴测试 - 这是显而易见的。 并保持你的 github 井然有序!

如果我们把所有人都召集起来进行技术面试,我们每周就要进行大约 40 次面试,只针对初级人员,而且只针对前端。 因此,我们决定检验第二个假设——关于测试任务。

在测试中对我们来说重要的是:

  1. 构建良好的可扩展架构,但不要过度设计;
  2. 最好花更长的时间,但要把它做好,而不是在一夜之间拼凑出一个工艺品并附上“我一定会完成它”的评论发送出去;
  3. Git 的发展历史是工程文化、迭代开发以及解决方案没有被公然复制的事实。

我们同意我们想研究一个算法问题和一个小型 Web 应用程序。 算法是在初级实验室水平上准备的——二分搜索、排序、检查字谜、使用列表和树。 最后,我们选择二分搜索作为第一个尝试选项。 Web 应用程序必须使用任何框架(或不使用框架)进行井字游戏。

剩下的几乎一半人完成了测试任务 - 他们向我们发送了解决方案 54 名候选人。 令人难以置信的洞察力 - 您认为互联网上有多少种可供复制粘贴的 tic-tac-toe 实现?

多少?事实上,似乎只有3个。而在绝大多数决策中,正是这3个选项。
什么不喜欢:

  • 复制粘贴,或基于相同教程进行开发,无需您自己的架构;
  • 两个任务都位于不同文件夹中的同一存储库中,当然没有提交历史记录;
  • 脏代码、DRY 违规、缺乏格式;
  • 将模型、视图和控制器混合到一个类中,长达数百行代码;
  • 对单元测试缺乏了解;
  • “正面”解决方案是对获胜组合的 3x3 矩阵进行硬编码,例如很难扩展到 10x10。

我们还关注邻近的存储库 - 很酷的宠物项目是一个优势,而来自其他公司的一堆测试任务更像是一个警钟:为什么候选人不能到达那里?

结果,我们在 React、Angular、Vanilla JS 中找到了很酷的选择——总共有 29 个。我们决定再邀请一位候选人,而不测试他非常酷的宠物项目。 我们关于测试任务好处的假设得到了证实。

技术面试

为公司:不是中/高级来找你的! 我们需要一种更加个性化的方法。

对于初级:请记住,这不是一场考试 - 不要试图对 C 保持沉默,也不要用你所有可能的知识轰炸教授,让他感到困惑并给出“优秀”。

在技​​术面试中我们想了解什么? 一件简单的事情——候选人的想法。 如果他通过了第一阶段的选拔,他可能拥有一些硬技能——但他是否知道如何使用这些技能还有待观察。 我们商定了 3 项任务。

第一个是关于算法和数据结构。 用一支笔,在一张纸上,用伪语言并在绘图的帮助下,我们弄清楚了如何复制树或如何从单链表中删除元素。 令人不快的发现是,并不是每个人都了解递归以及引用的工作原理。

第二个是实时编码。 我们去了 代码战争网站,选择简单的事情,例如按最后一个字母对单词数组进行排序,并与候选人一起花费 30-40 分钟,试图让所有测试通过。 似乎掌握了井字游戏的人应该不会感到惊讶 - 但在实践中,并不是每个人都能意识到值应该存储在变量中,并且函数应该通过 return 返回一些东西。 尽管我真诚地希望这是一种紧张,并且这些家伙能够在较轻松的条件下处理这些任务。

最后,第三个是关于建筑的。 我们讨论了如何制作搜索栏、去抖动如何工作、如何在搜索提示中渲染各种小部件、前端如何与后端交互。 有很多有趣的解决方案,包括服务器端渲染和网络套接字。

我们使用这种设计进行了 21 次采访。 观众是完全多元化的——让我们看看漫画:

  1. “火箭”。 他永远不会平静下来,什么事都参与其中,在采访中他会用一连串的想法淹没你,这些想法甚至与所提出的问题没有直接关系。 如果是在一所大学,这将是一个熟悉的尝试,以证明你所有的知识,当你所记得的关于你遇到的罚单是昨晚你决定不学习它 - 你仍然无法得到出来。
  2. “格鲁特”。 因为他是格鲁特,所以很难联系到他。 在面试过程中,你必须花很长时间逐字逐句地寻找答案。 如果只是昏迷就好了——否则对你的日常工作来说会很困难。
  3. “德拉克斯”。 我以前是做货物运输的,编程方面只在Stackoverflow上学过JS,所以面试时不太明白讲的是什么。 同时,他是一个好人,有最好的愿望,想成为一名伟大的前端开发人员。
  4. 我们可能会 《星主》。 总的来说,他是一个很好的候选人,你可以与他进行谈判和建立对话。

在我们的研究结束时 7名候选人 进入决赛,通过出色的测试任务和面试的良好答案证实了他们的硬实力。

文化契合

为公司: 你和他一起工作! 候选人是否愿意为自己的发展付出极大的努力? 他真的能融入球队吗?

对于初级: 你和他们一起工作! 公司是否真的准备好投资于后辈的成长,还是会为了低薪而将所有肮脏的工作都甩给你?

除了产品团队(其领导必须同意接受他)之外,每个初级员工都会获得一名导师。 导师的任务是指导他完成为期三个月的入职和提升硬技能的过程。 因此,我们以导师的身份针对每种文化契合度,回答了这样的问题:“我会根据我们的计划在 3 个月内负责培养候选人吗?”

这个阶段过去了,没有任何特殊之处,最终给我们带来了 4 优惠,其中3人被接受,这些家伙进入了球队。

收到offer后的生活

为公司:照顾好你的后辈或者其他人!

对于初级: 啊啊啊啊!!!

当一名新员工出来时,他需要入职——了解最新的流程,告诉他公司和团队中的一切是如何运作的,以及他应该如何工作。 当一个后辈出来的时候,你需要了解如何培养他。

当我们思考这个问题时,我们列出了 26 项技能的清单,我们认为,初级员工在三个月的入职期结束时应该具备这些技能。 这包括硬技能(根据我们的堆栈)、流程知识、Scrum、基础设施和项目架构。 我们将它们合并为路线图,并在 3 个月内分发。

如何驯服小辈?

例如,这是我大三的路线图

我们为每个后辈指派一名导师,与他单独合作。 根据导师和候选人当前的级别,会议可以每周举行 1 到 5 次,每次 1 小时。 导师是志愿者前端开发人员,他们想做的不仅仅是编写代码。

我们堆栈上的课程(Dart、Angular)减轻了导师的一些负担。 课程定期为 4-6 人的小团体举办,学生可以在不中断工作的情况下学习。

在 3 个月的时间里,我们定期收集初级员工、他们的导师和领导的反馈,并单独调整流程。 在整个期间内,对所提高的技能进行 1-2 次检查,最后进行相同的检查 - 在此基础上,针对确切需要改进的内容提出建议。

结论

为公司: 年轻人值得投资吗? 是的!

对于初级:寻找精心挑选候选人并知道如何培养他们的公司

在 3 个月的时间里,我们审查了 122 份问卷、54 项测试任务并进行了 21 次技术访谈。 这给我们带来了 3 位优秀的初级人才,他们现在已经完成了一半的入职和加速路线图。 他们已经在我们的项目中完成了实际的产品任务,其中仅前端就有超过 2 行代码和 000 多个存储库。

我们发现,青少年的漏斗可以而且应该相当复杂,但最终只有那些真正准备好努力工作并投资于自己的发展的人才能通过它。

现在我们的主要任务是通过与导师和一般课程的个人工作模式为每个初级人员完成三个月的发展路线图,收集指标,来自领导、导师和学员本身的反馈。 至此,第一个实验可以被视为完成,可以得出结论,可以改进过程,并且可以再次开始选择新的候选者。

来源: habr.com

添加评论