IT 实习:经理的观点

IT 实习:经理的观点

招聘为 暑期实习 Yandex 继续。 它有五个方向:后端、机器学习、移动开发、前端和分析。 在这个博客以及关于 Habré 和其他博客的其他博客中,您可以找到很多关于实习如何运作的见解。 但对于那些不在公司工作的人来说,这个过程的大部分内容仍然是个谜。 如果你从开发经理的角度来看,就会出现更多问题。 如何正确进行实习,如何与实习生最大限度地互利共赢,如何在三个月内了解他并教会他继续工作所需的一切?

我们五个人准备了这篇文章。 让我们自我介绍一下:来自分布式计算技术服务部门的 Ignat Kolesnichenko、来自 Market 机器智能服务部门的 Misha Levin、来自应用程序开发服务部门的 Denis Malykh、来自搜索界面开发部门的 Seryozha Berezhnoy 和来自反欺诈开发小组的 Dima Cherkasov。 我们每个人都代表自己的实习领域。 我们都是经理,我们需要实习生,并且我们有一些与他们一起工作的经验。 让我们从这次经历中告诉你一些事情。

实习前面试

一些技术面试正在等待候选人。 面试的成功较少取决于软技能(有效沟通的能力),而更多地取决于硬技能(数学和编程技能)。 然而,管理者对两者都进行评估。

伊格纳特:

一个人即使很酷,但完全不善交际,也无法发挥他所有的技能。 当然,我们会关注这一点,但这并不是不带人实习的理由。 三个月后,一切都会改变,而且,你的第一印象可能会被证明是错误的。 如果一切正确,您将需要向该人解释,寻找其他命令。 对于实习生来说,沟通能力绝对不是关键因素。 尽管如此,专业技能更为重要。

丹尼斯:

我喜欢讲故事的人——以一种好的方式讲故事。 一个能够讲述他和他的团队如何英勇地应对一些fakap的人是很有趣的。 当这样的故事出现时,我开始提出后续问题。 但如果你只是要求“讲述一下你的项目中有趣的事情”,这种情况就很少发生。

一位候选人曾经说过一句精彩的话,我什至写了下来:“成功地避免了解决繁琐的问题。”

IT 实习:经理的观点

由于交流时间很少,面试官在会议的每一分钟都试图获取有关候选人的有用信息。 如果实习生提前弄清楚他可以分享哪些经验细节(而不是来自简历),那就太好了。 这应该是一个严格意义上的短篇故事。

丹尼斯:

如果一个人说他尝试过多种语言和方法,我会注意。 视野开阔的人在战斗模式下会想出更优雅的解决方案。 但这是一个模棱两可的加号。 你可以掌握它的窍门,但并不能真正学到任何东西。

丹尼斯所描述的故事的时间通常只留到最后一次采访时。 在此之前,有必要展示将构成未来工作基础的基础知识和实践知识。 当然,您需要将代码写在黑板上或纸上。

鼠:

我们测试概率论和数理统计知识。 我们会考察此人是否有使用指标、机器学习算法、设置参数、再训练等方面的经验。我们希望此人能够编写足够的代码来成为一名分析师。

丹尼斯:

来参加面试的人大多都懂语言:在叶卡捷琳堡,我们有一所很好的基础语言学校,很好的机构。 但说实话,拥有良好硬技能的实习生是很少见的,至少在我们的 epsilon 社区是这样。 例如,斯威夫特。 它涉及非常复杂的弦乐工作,很少有人能够立即使用它们。 眼睛立即引起您的注意。 在面试过程中,我经常给出一个与字符串处理相关的任务。 一直以来,只有一个人能够在一张纸上立即编写这样的 Swift 代码。 之后我到处告诉大家,终于有人能够在一张纸上用 Swift 解决这个问题了。

在面试中测试算法

这是一个单独的主题,因为考生仍然有一个问题 - 为什么我们总是评估算法和数据结构的知识? 甚至未来的移动开发者和前端开发者也会经历这样的测试。

鼠:

在面试过程中我们肯定会提出某种算法问题。 候选人需要弄清楚如何用 Python 实现它,最好没有错误。 您需要了解如何检查您的程序并自行纠正。

IT 实习:经理的观点

算法经验很有用,原因有三个。 首先,它显然在算法任务中是需要的——这种情况并不经常发生,但确实会发生。 其次,开发人员将能够更有效地解决与算法相关的问题,即使他们不需要深入研究算法本身(而且已经有相当多的算法了)。 第三,如果你在大学里没有学过算法,但你仍然知道如何使用它们,那么这表明你是一个好奇的人,并且会增加你在受访者眼中的权威。

丹尼斯:

移动开发的一个重要部分是 JSON 改组。 但每六个月就会出现一次需要算法的情况。 我目前正在为 Yandex.Weather 绘制漂亮的地图。 在一周内,我必须实现平滑算法、Sutherland-Hodgman 算法和 Martinez 算法。 如果一个人不知道什么是哈希图或优先级队列,他会在很长一段时间内陷入其中,并且不清楚如果没有外部帮助他是否能够管理它。

算法是发展的基础。 这有助于开发人员成为开发人员。 你做什么并不重要。 在简单的项目中也需要它们,其中的主要工作包括“翻译 JSON”。 即使您本身不编写算法,但隐式使用了一些数据结构,最好还是理解它们。 否则,您最终会得到运行缓慢或不正确的应用程序。

有些程序员是在学术上发展的:他们进入大学,学习了五年,并获得了专业。 他们知道这些算法是因为他们是被教授的。 然后,算法知识本身并不能以任何方式表征一个人的视野;这个视野必须以另一种方式来测试。

还有一些自学成才的人,我自己也算其中。 是的,我正式接受过 IT 教育,获得软件工程文凭。 但自学成才的人“尽管如此”还是学会了编程。 他们没有大学课程。 通常他们不熟悉算法——因为他们从未面临过研究它们的需要。 而当这样的人理解了算法的时候,就意味着他花了时间并且理解了它们。 大学毕业后,我意识到自己在基础算法方面存在盲点——事实是我的专业是应用性的。 我去普林斯顿大学学习了著名的罗伯特·塞奇威克的在线课程。 我想通了并完成了所有作业。 当一个人在采访中讲述类似的故事时,我立即变得感兴趣,我渴望与他合作,或者至少继续谈话。

IT 实习:经理的观点

伊格纳特:

当你面试实习生时,在某些方面你的期望甚至比经验丰富的开发人员还要多。 我们谈论的是解决算法问题的能力,快速编写至少一些正确的代码。 实习生仍在大学。 就在一年前,他被详细告知了有关算法的一切。 预计他可以复制它们。 如果一个人足够并且仔细听讲座,他就会知道一切,从缓存中获取它。

实习生解决什么任务?

通常,可以在最终面试中概述和讨论实习计划。 只有在工作开始时,实习生才会被分配培训任务,其结果不会用于生产。 而且,接到这样的任务的可能性也很小。 大多数情况下,战斗项目是从积压的项目中给出的,即那些被认为值得关注的项目,但不是优先事项和“可分离的”项目 - 因此其他组成部分不依赖于它们的实施。 经理们尝试分配它们,以便受训者了解服务的不同部分,并与其他团队成员在相同的环境中工作。

伊格纳特:

这些都是非常有用的任务。 它们可能不会将集群利用率提高 10%,也不会为公司节省一百万美元,但它们会让数百人感到高兴。 例如,我们目前有一名实习生与我们的客户一起在我们的集群上运行操作。 在开始之前,操作必须将一些数据加载到集群上。 这通常需要 20-40 秒,然后悄无声息地发生:您在控制台中启动它并坐在那里,看着黑屏。 实习生来了,并在两周内完成了该功能:现在您可以看到文件是如何上传的以及发生了什么。 一方面,这项任务并不难描述,但另一方面,有一些东西需要挖掘,需要查看哪些库。 最好的部分是你做到了,一周过去了,它已经在集群上,人们已经在使用它了。 当你在内网发帖时,他们会说谢谢。

IT 实习:经理的观点

鼠:

学员准备模型、为其收集数据、提出指标并进行实验。 渐渐地,我们开始给他更多的自由和责任——我们检查他是否能处理好。 如果是,他就会进入下一个级别。 我们并不认为当实习生进来时,他们知道如何做这一切。 经理帮助他解决了这个问题,给了他内部资源或在线课程的链接。

如果实习生表现出最佳状态,他可能会优先获得对部门或其他服务很重要的东西。

迪马:

我们的实习生现在正在对反欺诈进行核心修改。 该系统可打击 Yandex 服务上的各种滥用和欺诈行为。 起初我们考虑提供不太复杂且对生产不是很重要的东西。 我们试图提前思考实习生的任务,但随后我们发现这个人“火力十足”,解决问题又快又好。 于是,我们开始委托他来开展新服务的反欺诈工作。

此外,由于任务量大,有很小的机会收到同事之前没有接触过的任务。

迪马:

有一套旧系统,还有一套尚未完成的新系统。 有必要从一个转移到另一个。 在未来,这是一个重要的项目,尽管具有很高的不确定性:你需要大量沟通,阅读难以理解的遗留代码。 最后面试时,我们诚实地告诉实习生,任务很困难。 他回答说他已经准备好了,来到我们的团队,一切都很顺利。 事实证明,他不仅具备开发人员的素质,而且还具备管理者的素质。 他准备四处走走,找出答案。

指导实习生

实习生需要一位导师来让自己沉浸在流程中。 这是一个不仅了解自己的任务,而且了解实习生的任务的人。 与导师建立定期沟通;你可以随时向他寻求建议。 导师可以是小组领导者(如果是一个小组),也可以是其中一位同事、常规团队成员。

伊格纳特:

我尝试至少每隔一天过来询问实习生的情况如何。 如果我发现自己陷入困境,我会尽力帮助他,问他问题出在哪里,并与他一起解决问题。 显然,这消耗了我的精力,让实习生的工作变得不那么有效——我也浪费了我的时间。 但这可以让他不陷入任何事情并得到结果。 而且还是比我自己做要快。 我自己大约需要 5 个小时来完成这项任务。 实习生5天之内就能完成。 是的,这 2 天我会花 5 个小时与实习生聊天并提供帮助。 但我至少会节省 3 个小时,而且实习生会很高兴他得到了一些建议和帮助。 一般来说,你只需要密切沟通,观察对方在做什么,不要失去联系。

IT 实习:经理的观点

塞尔:

学员与导师不断保持联系,每天与导师沟通数次。 导师审查代码,与实习生结对编程,并在出现任何问题时提供帮助。 我们就是通过这种方式,结合导师的帮助和实战任务来培养前端开发人员。

迪马:

为了防止实习生被抛弃,我们甚至在雇用之前就讨论了谁来指导他。 这对导师本人来说也是一个很大的提升:为担任团队领导角色做准备,考验同时牢记自己任务和学员任务的能力。 有定期会议,有时我自己去参加,以了解情况。 但导师与实习生的交流相当频繁。 一开始他花了很多时间,但得到了回报。

然而,有导师并不意味着所有出现的问题都可以通过他来解决。

鼠:

我们的习惯是,人们遇到问题时会向邻居和同事寻求建议并迅速寻求帮助。 一个人成长得越快,就越需要经常去同事那里学习东西。 简单地了解其他人的任务甚至会很有帮助,这样你就可以想出新的任务。 当实习生能够达成一致,了解对对方来说什么是重要的,并在团队中取得成果时,他会比经理必须为之做这一切的人成长得更快。

塞尔:

有文档,但大部分信息都消失了。 如果您在职业生涯的早期吸收它,这是一个额外的优势,我们可以让人们专注于他们需要学习的内容。

理想的实习生是经过几个月的培训,成为一名初级开发人员,然后只是一名开发人员,然后是一名团队领导者,等等。这需要一个学生的原型,如果有什么事情他不清楚,就不会尴尬地问,但是也有独立工作的能力。 如果他被告知可以在某个地方读到它,他就会去读它,然后带着新知识回来。 他可能会犯错误,但他不应该在同一个地方犯多次错误,最多两次。 理想的实习生应该不断发展,像海绵一样吸收一切,学习和成长。 一个人坐下来试图自己解决所有问题,花很长时间摸索,并且不问任何问题,不太可能习惯。

实习结束

在开始工作之前,我们与每位实习生签订定期合同。 当然,实习是有偿的,按照俄罗斯联邦劳动法规定,实习生享有与任何其他 Yandex 员工相同的福利。 三个月后,该计划结束 - 然后我们将许多实习生转为正式员工(签订开放式合同)。

IT 实习:经理的观点

一方面,对于经理来说,开发人员达到实习生最低要求非常重要。 这是实习生被引导的地方,从面试开始。 然而,这只是故事的开始。 对我们来说,实习生始终是员工的潜在候选人。 经理的最低计划是从一开始就确定一个人,三个月后,他会羞于向其他部门推荐。 最大的计划是让他留在同一个团队中,雇用他作为一名职员。 同时,我们考虑到二年级或三年级的学生——即使他已经成为实习生——在学年开始时也需要在大学继续学习。

塞尔:

首先,学员对于我们来说是有潜力的人力资源。 我们正在努力培养 Yandex 内部的人员,以便他们非常适合我们的任务。 我们为他们提供一切,从团队沟通和互动的文化到有关我们所有系统的百科全书式知识。

伊格纳特:

当我们招收实习生时,我们会立即尝试让他加入我们的团队。 一般来说,唯一的障碍是缺乏职位空缺。 我们尝试雇用足够的年轻人作为实习生。 如果一个人有五年的开发经验,他来到Yandex并且是该级别的实习生,那么,唉,对我们来说这意味着即使他是一个很棒的人,因为他在Yandex找到了一份工作,但他有五年的经验经验,他将无法成长为高级开发人员。 这通常是一个速度问题:过去的缓慢增长将意味着这里的缓慢增长。 是的,有时只有三个月后才会意识到一个人无法胜任这项任务。 但这种情况相当罕见。 在超过一半的情况下,我们准备雇用员工。 在我的记忆中,从来没有出现过一个人成功完成实习,却无法通过全职职位面试的情况。

鼠:

我们为所有成功的实习生提供留在公司的机会。 实习结束后,我们通常会承担一半以上的全职工作。 暑期实习比较困难,因为经常是三年级的学生来找我们,他们很难将工作和学习结合起来。

迪马:

假设这名实习生做得很好,并且有很大的前景成长为一名优秀的开发人员 - 即使他现在没有足够的经验。 假设没有开放式合同的空缺。 然后一切就很简单了:我需要去找我的经理并告诉他 - 这是一个非常酷的人,我们必须尽一切努力留住他,让我们为他提供一些东西,让我们找到一个地方安置他。

关于实习生的故事

丹尼斯:

2017年在我们这里实习的那个女孩来自彼尔姆。 这里距叶卡捷琳堡以西400公里。 每周她都会从彼尔姆乘火车来到我们的移动开发学院。 她白天来,晚上学习,晚上很晚才回来。 出于对她的热情的赞赏,我们邀请她来工作,结果得到了回报。

伊格纳特:

几年前,我们参加了一个实习生交换计划。 和外国人一起工作很有趣。 但那里的学员并不比来自ShAD或计算机科学学院的学员更强。 洛桑联邦理工学院 (EPFL) 似乎跻身欧洲前 20 名大学之列。 那一刻,作为一个还不太有经验的面试官,我有这样的期望:不可思议,我们正在面试来自 EPFL 的人,他们会非常酷。 但在这里接受过编程基础教育的人——包括在重点地区大学——结果证明他们已经达到了标准。

或者另一个故事。 现在我的员工中有一个人,他很年轻,大约20岁。 在圣彼得堡工作,来实习。 他很酷。 像往常一样,你给一个人问题,他解决了它们,一个月后他过来说:我解决了它们,我看了一下,看来你的架构构建得很糟糕。 让我们重做吧。 代码将会变得更简单、更清晰。 我当然劝阻了他:工作量大,用户没有利润,但这个想法听起来绝对合理。 该人弄清楚了一个复杂的多线程流程并提出了改进建议——也许是不合时宜的,为了重构而重构。 但一旦你想让这段代码变得复杂,你仍然可以进行重构。 事实上,几个月过去了,我们才开始承担这项任务。 我很高兴地雇用了他。 我们都不是天才。 你可以来,想办法解决问题并指出我们的问题。 这是值得赞赏的。

鼠:

我们有这样理想的实习生。 尽管缺乏经验,他们不仅从技术层面,而且从全球层面看待这项任务。 它们提供了根本性的改进。 他们了解如何将问题从现实世界转移到技术世界而不失去其意义。 他们想知道最终的目标是什么,现在是否值得深入研究细节,或者他们是否可以完全改变任务的方法甚至问题的表述。 这意味着他们有潜力更高几个级别。 要走这条路,他们只需要升级一些技能和内部工具即可。 另外还启动了多个成功的项目。

IT 实习:经理的观点

来源: habr.com

添加评论