IT实习:经理的观点



继续在Yandex进行夏季实习 。 它有五个方向:后端,机器学习,移动开发,前端和分析。 在此博客中,在有关Habré的其他博客中,您可以找到很多有关实习进行情况的内部信息。 但是对于那些不在公司工作的人来说,在这个过程中仍然有很多谜团。 如果您从开发经理的角度来看,那么还会有更多问题。 如何进行实习,如何最大程度地提高与实习生的互用性,如何在三个月内学会学习并教授继续工作所需的一切?

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

实习前面试


候选人正在等待几次技术面试。 面试成功与否取决于软技能(有效沟通的能力),而更多地取决于硬技能(数学和编程技能)。 但是,管理人员都重视。
伊格纳特:
即使一个人很酷,但完全不交流,他也将无法运用所有技能。 当然,我们会注意这一点,但这不是不让某人参加实习的理由。 在三个月内,一切都会改变,此外,您的第一印象可能是错误的。 如果一切正确,则该人员必须进行解释,寻找其他团队。 对于受训者,社交能力绝对不是关键因素。 尽管如此,专业技能仍然更为重要。
丹尼斯:
我喜欢讲故事的人-很好的方式。 一个能够告诉他们如何与团队英勇地对抗fakap的人很有趣。 当这样的故事弹出时,我开始问其他问题。 但是,如果您仅要求“谈论项目中有趣的事情”,这种情况很少发生。

一位候选人曾经说过一个很棒的短语,我什至写下:“我成功地避免了繁琐的工作。”



由于没有太多的交流时间,面试官会在会议的每分钟尝试获取有关候选人的有用信息。 如果实习生事先弄清楚了他可以分享哪些经验(这不是简历中的内容),那就太好了。 严格来说,这应该是个简短的故事。
丹尼斯:
如果有人说他尝试了多种语言和方法,我会注意。 视野开阔的人们在战斗模式中提出了更优雅的解决方案。 但这是一个模棱两可的优点。 您可以抢占先机,但是认真不学任何东西。

丹尼斯描述的故事时间通常只保留在最后的采访中。 在此之前,有必要证明将构成未来工作基础的基础知识和实践知识。 并且,当然,您将需要在黑板或纸上编写代码。
Misha:
我们测试概率论和数学统计知识。 我们希望了解一个人是否有使用度量标准,使用机器学习算法,调整其参数,进行再培训等方面的经验。我们期望一个人可以编写足够的代码以成为分析师。
丹尼斯:
那些来面试的人大多懂语言:在叶卡捷琳堡,我们有一门很好的基础语言学校,很好的机构。 但是,老实说,至少在我们的epsilon社区中,具有良好拼搏技能的实习生很少见。 例如,Swift。 使用弦乐非常困难,几乎没有人可以与他们合作。 对于这样的眼睛立即依依不舍。 我经常在面试中给出一项任务,这与生产线处理完全相关。 一直以来,只有一个人可以立即在一张纸上编写这样的Swift代码。 之后,我去告诉所有人,终于有人可以在Swift纸上解决这个问题了。

面试算法


这是一个单独的问题,因为候选人仍然有一个问题-为什么我们总是评估算法和数据结构的知识? 甚至未来的移动开发人员和前端供应商也可以通过此测试。
Misha:
在采访中,我们肯定会给出某种算法难题。 候选人需要弄清楚如何在Python中实现它,最好没有错误。 您需要了解如何检查程序并自行修复。



算法经验派上用场,原因有三点。 首先,显然在算法问题中将需要它-很少发生,但仍然会发生。 其次,开发人员将能够更有效地解决与算法有关的问题,尽管不需要深入研究算法本身(并且已经有很多这样的算法了)。 第三,如果您不是在大学里学习算法的,但是您仍然知道如何使用它们,那么这将使您成为一个具有好奇心的人,并会在受访者的眼中提高您的权威。
丹尼斯:
大多数移动开发是JSON Shifting。 但是每六个月就有一次需要算法。 我现在正在为Yandex.Weather绘制精美的地图。 一周之内,我必须实现平滑算法,Sutherland-Hodgman算法和Martinez算法。 如果一个人不知道哈希图或优先级队列是什么,他将坐下很长时间,不清楚在没有外部帮助的情况下是否可以进行管理。

算法是开发的基础。 这就是帮助开发人员成为开发人员的原因。 不管你做什么 在简单的项目中也需要它们,主要项目是“转换JSON”。 即使您自己没有编写算法,而是隐式使用任何数据结构,也最好理解它们。 否则,您将获得运行缓慢或不正确的应用程序。

有一些程序员是从学术上发展起来的:他们进入了大学,说实在没有学习五年,并获得了专业。 他们知道算法,因为他们已经被教过。 然后,算法知识并不能描述一个人的视野,因此有必要以另一种方式验证这种视野。

我认为自己是自学成才的。 是的,我正式拥有IT教育和软件工程文凭。 但是自学成才的人学会了编程“矛盾”。 他们没有大学课程。 通常,他们对算法不熟悉-因为他们从未遇到过研究它们的需要。 当这样的人理解算法时,这意味着他花了时间并弄清楚了它们。 大学毕业后,我意识到基本算法部分存在白点-事实是应用了专业。 我去了普林斯顿大学,著名的罗伯特·塞奇威克(Robert Sedgwick)学习在线课程。 明白了,做了所有功课。 当受访者讲类似的故事时,我立即变得感兴趣,渴望与他一起工作,或者至少继续谈话。


伊格纳特:
从某种意义上说,当您采访受训者时,您期望得到的不仅仅是来自经验丰富的开发人员。 我们正在谈论解决算法问题的能力,快速编写至少某种正确的代码。 实习生的候选人-他仍在大学里。 就在一年前,他被告知有关算法的所有细节。 预计他可以复制它们。 如果这个人足够,并且认真听了讲课,他将只知道一切,将其从缓存中取出。

学员要解决什么任务


通常,可以在最终面试中概述和讨论实习计划。 实习生只能在工作开始之初获得培训任务,其结果不会涉及到生产中。 此外,获得此类任务的可能性很小。 大多数情况下,都会给出积压的军事项目,这是值得关注的,但不是优先事项和“可分离的”,因此其他组件不依赖于它们的实施。 领导者试图分配他们,以便实习生了解服务的不同部分,并与其他团队成员在相同的环境中工作。
伊格纳特:
这些是非常有用的任务。 也许他们不会将群集的利用率提高10%,不会为公司节省一百万美元,但会让数百人满意。 例如,我们现在有一位实习生,他正在与我们的客户合作,开始在集群上进行操作。 在开始操作之前,它必须在集群上加载一些数据。 通常需要20到40秒钟,而在此之前它是无声的:我在控制台中启动它,然后坐在黑色的屏幕上。 实习生来了,并在两周内完成了一项功能:现在您可以查看文件的上传方式以及正在发生的事情。 一方面,该任务在描述中并不困难,另一方面,有一些事情需要挖掘,要研究哪些库。 最好的部分是您做到了,一周过去了,结果发现它在集群上,人们已经在使用它。 您在内部网络上写了一篇文章-他们说谢谢。


Misha:
实习生准备模型,为其收集数据,提出指标并进行实验。 渐渐地,我们才开始给他更多的自由和责任-我们检查看他是否应付。 如果是这样,他将进入下一个级别。 我们不认为当实习生到来时,他可以做所有这一切。 负责人可以帮助他解决问题,提供指向内部资源或在线课程的链接。

如果受训者表现出自己的高度,可以给他们以优先权,这对部门或其他服务很重要。
迪玛:
我们的受训人员现在从事反欺诈的核心改进。 这是一个与Yandex服务上的各种新闻和欺诈行为作斗争的系统。 最初,我们考虑提供的东西对生产来说不是很复杂,也不是很重要。 我们尝试预先考虑受训者的任务,但随后我们发现一个人正在“燃烧”,快速且能够很好地解决问题。 结果,我们开始委托他为新服务发起反欺诈。

此外,由于任务量大,几乎没有机会获得同事从未尝试过的任务。
迪玛:
有一个旧的系统,有一个尚未完成的新系统。 您需要从一个转移到另一个。 将来,这是一个重要的项目,尽管不确定性很高:您需要进行大量交流,阅读难以理解的旧代码。 在最后一次面试中,我们诚实地告诉实习生,这项任务很艰巨。 他回答说他准备好了,加入了我们的团队,他成功了。 事实证明,他不仅具有开发人员的素质,而且具有经理的素质。 他准备走路,认出,敲击。

实习生指导


学员需要一名指导者来深入研究流程。 这个人不仅了解自己的任务,而且也了解学员的任务。 与导师建立了定期的沟通,您可以随时向他寻求建议。 指导者可以是小组的负责人(如果是一小组),也可以是同事之一,团队的正式成员。
伊格纳特:
我尝试至少每隔一天出现一次,询问受训人员的状况。 如果发现自己已挖洞,我会尝试帮助他,问问题出在哪里,然后与他一起解决。 显然,这剥夺了我的力量,使实习生的工作效率降低了,我也花了时间。 但是,这使他不去挖掘任何东西即可获得结果。 仍然比我自己做的要快。 我自己需要5个小时来完成任务。 实习生将在5天内完成。 是的,在这5天里,我将花2个小时与实习生交谈并提供帮助。 但是我至少可以节省3个小时,而实习生会很高兴他得到了提示和帮助。 通常,您只需要紧密沟通,观察一个人的行为,而不会失去联系。


Serge:
实习生不断与导师保持联系,并每天与他交流几次。 指导者修改代码,与受训者进行配对编程,在有问题的地方提供帮助。 通过这种方式,通过导师的帮助和真实的战斗任务,我们训练了前锋。
迪玛:
为了确保实习生不会被遗弃,我们将讨论谁会在他入职之前指导他。 对于导师本人来说,这也是一个巨大的提升:为团队领导者的角色做准备,测试同时牢记他的任务和受训者任务的能力。 我有时会定期开会以跟上他们的步伐。 但是导师会定期与受训者沟通。 起初,他花了很多时间,但是很值得。

但是,导师的存在并不意味着所有新出现的问题都可以通过他解决。
Misha:
我们认为,遇到问题的人会向邻居和同事寻求建议,并迅速寻求帮助。 一个人成长得越快,他就越需要经常去同事那里寻找一些东西。 甚至只是了解其他人的任务以提出新任务也是很有用的。 当实习生能够达成共识,了解对对方重要的事情并在团队中取得成果时,他的成长将比领导者应为之完成的一切快得多。
Serge:
有文档,但是大多数信息都散布在空中。 如果您在职业生涯开始时就将其吸收,那么这将是一个额外的优势,我们可以使一个人专注于需要研究的内容。

理想的受训者是已经练习了几个月的人,成为初级开发人员,然后只是开发人员,然后是团队负责人,等等。为此,您需要一个原型的学生,他要毫不犹豫地询问他是否不了解某些东西,但是有能力独立工作。 如果他被告知您可以在这里阅读,他会去阅读并真正重新获得新知识。 他可能会被误解,但他一定不能被误解超过一个,在同一位置最多被误解两次。 理想的受训者应发展,吸收一切,如海绵,学习和成长。 任何坐下,试图弄清楚自己的人,在很长一段时间里闲逛,不问任何问题的人都不大可能扎根。

实习结束


在开始工作之前,我们与每个受训者签订定期合同。 当然,实习是按照俄罗斯联邦《劳动法》执行的,是有偿的,并且实习生与其他Yandex员工一样具有优势。 三个月后,该计划结束-然后,我们将许多实习生(根据永久合同)转移至该州。



一方面,对于领导者而言,重要的是开发人员必须达到其实习最低要求。 从面试开始,这就是学员要达到的目标。 但是,这仅仅是故事的开始。 对我们来说,实习生永远是国家的潜在候选人。 领导者的最低计划是从一开始就识别一个人,三个月后,他们不会以向其他部门推荐为耻。 最大的计划是让他留在同一个团队中,并招募员工。 同时,我们考虑到,即使是二年级或三年级的学生,即使成为实习生,也需要在学年开始时继续在大学学习。
Serge:
首先,对我们来说实习生是人力资源。 我们正在尝试在Yandex内部培养人员,以使其最适合我们的任务。 我们为他们提供一切,从团队中的交流和互动文化到关于我们所有系统的百科全书知识。
伊格纳特:
接受实习生后,我们立即试用他,以便他加入我们的团队。 通常,唯一的障碍是缺乏空缺。 实习生试图吸收足够的年轻人。 如果一个人有五年的开发经验,他会来Yandex并在水平方面受过培训,那么对我们来说,这意味着,尽管他是一个很好的伙伴,但他在Yandex上拥有五年的经验并无法成长为高级开发人员。 。 通常是关于速度的:过去的缓慢增长也意味着这里的缓慢增长。 是的,有时只有三个月后才会有人不拉。 但这很少见。 在一半以上的情况下,我们准备招募人员。 在我的记忆中,并不是一个人有成功的实习经历,而是无法通过面试获得全职职位。
Misha:
邀请所有成功的实习生留在公司。 实习后,我们通常会花费一半以上的时间。 暑期实习比较困难,因为例如经常有大三的学生来找我们,而且他们很难将工作与学习结合起来。
迪玛:
假设一个受训者做得很好,并且有很大的发展成一个好的开发者的潜力-即使他现在没有足够的经验。 并且假设永久合同没有空缺。 然后一切都变得很简单:我需要去找我的领导者并告诉他-这是一个非常酷的人,他必须全力以赴,让我们为他提供一些东西,找到在何处安置他。

实习生故事

丹尼斯:
2017年让我们实习的女孩是彼尔姆(Perm)。 从叶卡捷琳堡到西部400公里。 每周她都会从彼尔姆乘火车到移动开发学校来找我们。 下午抵达,晚上学习,傍晚离开。 在欣赏了这种热情之后,我们打电话给她工作,并且得到了回报。
伊格纳特:
几年前,我们参加了实习生交流计划。 和外国人一起工作很有趣。 但是,来自那里的实习生并不比例如来自ShAD或FCN的实习生更强大。 EPFL似乎在欧洲排名前20位的大学中。 那时,我-像一个还没有很丰富经验的面试官一样-抱有这样的期望:太不可思议了,我们将采访EPFL的人,他们会很棒。 但是,在我们国家(包括在主要的地区性大学中)接受过有关编码的基础教育的人们,水平还很高。

或另一个故事。 现在我的职员中有一个年轻人,很年轻,大约20岁。 他在圣彼得堡工作,来实习。 他很酷。 您像往常一样将任务交给一个人,他解决了这些问题,一个月后他来对我说:我决定,我看,看来您的体系结构构建得很差。 让我们重做。 该代码将变得更简单,更容易理解。 当然,我劝说他:工作量很大,用户没有利润,但是这个主意听起来绝对合理。 一个人理解了一个复杂的多线程过程并提出了改进建议-可能是不合时宜的,需要重构才能进行重构。 但是,只要您想使这段代码复杂化,您仍然可以执行此重构。 实际上,已经过去了几个月,我们承担了这项任务。 我很高兴带他去工作人员。 我们不是天才。 您可以来,找出一些问题,并指出我们的问题。 感激不尽。
Misha:
我们有如此完美的实习生。 尽管缺乏经验,但他们不仅在技术上,而且在全球范围内都看到了这项任务。 它们提供了根本的改进。 他们了解如何将任务从现实世界转换为技术而不失意义。 他们想知道最终的目标是什么,现在是否值得深入研究细节,或者您是否可以完全改变完成任务的方法甚至是问题的陈述。 因此,他们的储备金要高出几个级别。 为此,他们只需要提供一些技能和内部工具。 另外,启动几个成功的项目。

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


All Articles