欢迎加入:向团队介绍新开发人员


哈Ha! 我叫Andrey Gomenyuk,我是Badoo服务器开发团队之一的团队负责人。

在致力于开发管理的May Badoo Techleads Meetup上 ,我分享了将新人纳入团队的经验 。 今天,我将分享一份报告的补充文本和改进版本。

想象今天是您在Badoo的第一个工作日。 该部门希望您,尤其是我的领导者需要什么样的知识和技能? 至少这样:



注意,没有什么比“用PHP编写”和“了解MySQL”更重要了。 我们在面试中问这个问题。 在此列表中列出了我们所有的工具,技术和术语,以及我们很可能不喜欢其他所有人的一般事物。 而且越早了解所有这些,就越好。

在Badoo入职


入职一词是指将一个人加入团队,向他介绍项目和流程。 由于我们的服务器开发部门在过去几年中翻了一番(现在已有40多人),因此我们成为Badoo中第一个关心新员工的大量适应以及他们如何融入工作的公司。

我着重介绍了入职的两个主要目标。

首先是短期的。 我们像大多数IT公司一样,真的希望在第一天就把这个人放在代码上,在第一周就把他的票证投入生产,以便这个人尽快适应。 但是,这对我们来说不是主要的事情。

第二个目标是长期的。 我们希望一个人尽快达到一定的独立性 ,并开始有效地解决任务。

为此,我们带领初学者经历了五个不太明确的阶段。 但是在我依次讨论它们之前,我要注意两个同样重要的观点。

谁会见新来者


在第一个工作日,我们一定会见初学者。 这应该由领导来完成,我们部门中的我们正在努力遵守这一规则。 Lead遇到一个人,向他展示办公室并将他介绍给团队。 然后与人事部门举行预定会议,在会议期间起草文件。


来源

在此之后,似乎已经可以将一个人摆在桌面上了,但是还有另一个重要的细节。

谁将“领导”初学者


在某些公司中,整个入职过程都与导师“捆绑”在一起。 这些人会解释一切,显示内容,地点和方式,回答初学者的问题,并将他与合适的人联系在一起。

我们不使用这样的术语,但是,正如著名歌曲所说的那样,有一个导师,但没有任何言语。 只是将这个角色分配给潜在客户,可以将其委派给其中一位员工。 通常,领导(或由他任命的人)是所有问题初学者的出发点。 在一次简短的会议上,他向该项目介绍了新来者,并讨论了公司采用的流程。 这是我们将文化转移给以前在其他公司工作过并习惯于做不同事情的人的开始。 初学者了解我们做什么,如何做以及为什么做是非常重要的。

入职阶段


我将允许自己将整个过程分为几个阶段,每个阶段都有某种结果:

  • 男子坐在一台笔记本电脑
  • 具有定制的工作环境
  • 并制作门票。
  • 可以设计新功能
  • 并独立工作。

接下来,考虑每个阶段发生的情况。

1.笔记本电脑




首先,我们希望初学者专注于工作,而不是考虑一些无关紧要的事情,并且我们正在尝试做很多事。 因此,我们会提前与他联系,并确定设备的要求:显示器,笔记本电脑,键盘,鼠标需要什么。 我们为初学者创建所有帐户并颁发特权,将其添加到群组和聊天中。 这些程序中有许多是自动执行的,而其他程序则被输入到清单中,这样该人第一天就不会在办公室里跑来跑去,从而弄清为什么他不能进入吉拉或为什么他看不到分配给他的票证。

2.工作环境


然后,该人坐在笔记本电脑旁以建立工作环境。 但是整个设置是他进入一个特殊的界面,选择用户名并加载SSH密钥。 做完了

事实是,我们在办公室内建立了一个开发平台,类似于我们的生产基础架构。 此外,为了模拟多个DC,我们在伦敦和莫斯科两个办事处都有一个开发平台。 这种方法有很多优点。 开发人员始终拥有最新版本的代码和最新软件-与生产版本完全相同。 即使有些问题不起作用,也可以确保有人已经解决了问题。 实际上,新手只是克隆存储库,打开IDE-即可使用。 确保Lida能够进入所有聊天并开始接收邮件就足够了。

在这个阶段,我准备给初学者一张第一张票。

3.门票


假设第一张票是这样来的:



或像这样:



对您来说,这些票可能只有一件事-不清楚。 我用橙色突出显示了可能会引起您最多问题的单词,即使不是,我也会告诉您有关它们的信息。



和以前一样


七年前我去Badoo时,就是这样。 Lead坐在新手那里,开始说: “看,我们有队列,一个脚本框架。 他们是这样工作的。 注意这一点。 在这张票中,您需要这样做

问题在于,负责人将工作时间花在这些故事上。 每次他向初学者解释相同的事情时,他总是会忘记一些事情。 每条线索都说明了自己的方式。

很自然,线索将只在票证上提供与此票证相关的特定介绍性注释,而忽略了初学者现在可能不需要的要点。 如果幸运的话,后者将能够找到工具描述的链接。 但是通常所有这些文档都是为内部使用而编写的,也就是说,应该理解用户已经熟悉这些细节。 该文档有很多细节,对于初学者来说,在最初的阶段绝对是不需要的。 结果,出现了一个自相矛盾的情况:一个人在公司工作了一年或两年,但是并不能保证他熟悉所有事情并且知道整个基础架构是如何工作的。


电影《 土拨鼠日》的镜框

除了回答各种问题的同事外,当时管理平台的Aleksey Rybak还为所有新员工作了关于基本原理,基础架构和基本服务的演讲。 在某个时候,他已经厌倦了,并将其录制在视频中。 但是,在两个小时的故事中,您将无法获得全部,这里有很多细节。 然后,这个讲座很难更新。 当然,很酷,七年来它已经过时了一点,但是其中的某些部分不再适用。

有时,有人在Wiki上创建了一个“欢迎新开发者”页面。 他们在那里添加了很多链接,可以很好地阅读给开发人员。

如果我说任何一家公司都有两种获取新信息的主要来源,我可能不会误会很多:这是某种Wiki(或Google Docs)的类似物,并且是一个吸烟室。 不幸的是,只有其中一个信息是最新的,这不是Wiki。

我们的页面没有通用的结构。 这样补充。 另一个团队的负责人对我说: “ Andryukha,您的开发人员做得不好。 为了做好,我在Wiki上写了一篇文章。 将其添加到“欢迎新开发人员”中,以便所有开发人员都必须阅读它



自然,他认为自己的文章最重要,将其放在最可见的位置,并用红色粗体突出显示。 结果,一个包含他可能需要的链接的大页面将被转储到初学者中。 带有大量的粗体短语 ,“必须阅读”和“必须阅读!”。

在某个时候,我们意识到讲座,视频和Wiki不再适合我们。 我们决定利用这些工具中的最佳功能并做一些新的事情。 然后他向我们提出了正确的想法。Laravel框架。 不计入广告。 只是在那个时候我们正在为一个项目选择框架,在“最佳PHP框架”的搜索引擎中,Laravel首先出现了,然后我们就知道了。 在其中,我们真的很喜欢“快速入门”文档部分,它在一个真实的示例中讲述了基本原理和可用工具(并且,在了解了基础知识之后,您就可以开始阅读详细说明了)。

快速上手


我们非常喜欢这种格式,因此决定为初学者写一篇类似的文章。 但是怎么做呢? 有很多信息-如何在简洁和信息量之间保持平衡,同时保持及时更新的可能性,以使新来者不必在吸烟室中汲取知识? 以及如何鼓励阅读已经在公司工作了一段时间但肯定存在知识空白的人员的文档?


来源

我们首先列出了我们认为该部门的每个开发人员都应该知道的工具,技术和方法的列表。 然后,他们以目录的形式构造信息,从简单到复杂:从数据库和服务到性能和测试。 然后,一个人写了前几章,以便其他人可以理解如何介绍这些材料。 之后,我们自愿将剩余的主题分发给其他员工,每个人都写了一章。 结果是一个巨大的文档,只有两个星期才能读完。

我们无法在整个“快速入门”部分中提出一项常见任务。 是的,这将是无效的。 想象一下,您给一个人一个任务-实际上,这是一个涵盖所有部分的巨大功能。 他将为此工作一个月或两个月,而所有这些时间您都无法用门票分散他的注意力,这与入职的首要目的相矛盾。

然后,在每个部分中,我们放置一个或两个与真实任务尽可能相似的任务。 初学者阅读一节,从事任务,熟悉特定工具。 我们建议我们的领导者按照标准流程执行一些任务:发出票证,有人推密码,对密码进行审查,一个人会收到很多反馈。 之后,该分支将被删除,并带有一个票证。

然后出现了一个问题,即如何保持整个信息的相关性。 在这里,同样的任务也帮助了我们。 例如,我们有斑点(虚拟碎片)和负责比较用户和斑点的服务。 在正常生活中,开发人员无需了解这一点,因为他们使用了高级API。 但是我们要求他们了解其内部运作方式。

我们执行任务:在开发人员上注册用户,在其邮件地址上获得现场标识符,在现场获得数据库信息,进入那里,选择并查看那里的内容。 如果此过程发生了变化,那么普通开发人员将一无所知。 他们不会知道您需要进入并更正描述。 但是目前从事此工作的开发人员将理解:出了点问题。 他将走到最前面,说有些事情不起作用。 线索将与他坐下,进行整理-我们将更新文档。 我们不鼓励开发人员自行更改快速入门,以免违反演示文稿的结构和样式。 相反,我们创建了一个Google文档,他们可以在其中写下自己的愿望。 然后由对我们的文章进行更改的负责人查看此列表。

新信息以相同的方式添加到“快速入门”中:某人遇到了文档中未描述的新工具,并在Google Doc中撰写了相关信息。 然后负责人员确定这是否是对大多数开发人员都不感兴趣的特殊情况,或者是否值得在“快速入门”中进行介绍。

开发人员自己有时会在文档中添加一些很酷的“小东西”。 例如,用于阅读持续时间和页数的计数器已添加到每个章节。 同样,在某些部分中,添加了立即在PhpStorm中打开所需类的链接。

然后我们开始思考,如何让老人学习文档? 毕竟,《快速入门》非常庞大,没有人愿意花两周的时间阅读它。 然后,我们进行了测试:在该文档的基础上,我们针对不同主题提出了约100个问题,每个人都可以匿名通过。 每个开发人员都可以选择大约40个问题。 目标不是测试知识,而是帮助人们理解他们不知道的东西。 也就是说,测试是一种学习工具,而不是测试,如果未正确回答问题,则会立即提供提示和链接,您可以在其中快速入门。


测试中的一个问题示例

我们不控制初学者通过测试。 相信对于他们来说,这将是学习快速入门的合乎逻辑的结论。 同时,我们会保留所有答案的统计信息。 当“老人”通过测试时,我们选择了几个他们无法回答我们希望的问题,并请经验丰富的人撰写有关这些主题的文章。

快速入门和测试是我们入职过程中最令人印象深刻的部分。

更多票


通常,连同“快速入门”,一个人会立即获得一张或两张简单的票。 逐渐地,它们的数量增加了,线索确保新票证与开发人员设法熟悉的内容相对应。 因此,阅读过程被实际工作所稀释,总共花费了大约两个月的时间。 理想情况下,在试用期结束时,该人员应精通我们的基础架构,工具和方法。

阅读“快速入门”后,上述票证的含义将变得更加清楚:



作为负责人,我只需要在这里给我一个简单的介绍:现场有一个字段,服务中有一个字段,它们对于用户而言是不同步的; 您需要修复错误并进行同步。 初学者已经知道要运行哪个脚本以及如何执行此操作。

还是第二个例子:



同样的事情:照片最终放在错误的相册中;很可能客户只是发送了错误的相册; 您需要了解是否仍然有这种情况,并加以解决。

门票实际上很简单,只需一个小时的工作。

4.设计新功能


“设计”不是指类和代码的组织,而是指初学者如何处理数据,他将在其中创建表,他将添加哪些事件,它们将在何处传输,一个人将访问哪些服务。 在此阶段,初学者已准备好就如何制作功能做出技术决策。 这通常是通过实践来实现的。 任务越多,知识和经验就越多。

的确,这并非总是可能的,因为不可能为每个初学者找到足够数量的有趣任务。 在测试中,由于情况不同,通常很难涵盖此类主题。 在不同情况下,您需要访问不同的服务,并且需要随处访问自己的特征。

结果,我们仅收集了涉及各种服务,队列,位置的十二个非常大的功能,而开发人员为它们准备了简短的描述(类似于技术任务)。 当新来的人准备好时,领队给他选择一项任务。 他思考了一段时间,并报告他准备讨论该解决方案。 该功能的作者安排了一次会议,开发人员在会议上解释了他的计划:他会这样做,会调用这种服务,将数据存储在这里,会订阅此类事件。 作为回应,作者讲述了他的工作方式以及引起他注意的内容。 结果,开发人员学到了很多新东西,他开始承担起一般的责任。 他了解这个或那个过程如何工作,我们如何做出决定。 如果他事先进入代码并监视该功能的实现方式,那是可以的,这甚至是一个加号。

在会议结束时,主管将收集反馈,并可以使开发人员仔细研究部分内容并思考他所学到的内容。

5.独立工作


实际上,第五阶段没有任何形式的表达。 这些是我们在公司整个工作中所做的事情。 我们非常感谢开发人员与其他团队进行交流,以了解其工作原理的愿望。 如果无法解决问题,则需要知道该向谁寻求帮助。 负责人的任务是向每个人介绍新来者,告诉谁坐在哪里,告诉谁以及在什么情况下可以联系。


来源

一个人应该在我们的过程中得到指导。 尽管我们没有Scrum和Agile,但工作流程非常灵活。 当开发人员不仅漫不经心地遵循我们的流程,而且了解其原因以及解决的任务时,我们深表感谢。 这使他在某些情况下可以找到解决方法。 例如,要了解可以在不进行完整测试的情况下发送特定票证,而其他票证则需要更快地完成。 我们告诉谁联系以及如何确定优先顺序,以便今天开始工作。

我们期望新开发者在试用期间会熟悉我们最大的功能和组件集。 理想情况下,如果到试用期结束时,他将知道足够深的某些组件或功能部件,以能够陪伴它。

我们还会立即将一个人添加到绩效评估中 ,以便他不仅可以从其领导者那里获得反馈,而且还可以从与他进行交互的每个人(包括产品,质量保证和客户团队)那里获得反馈。

总结


这可能是我们新手调试过程的五个主要组成部分:

  • 最小的注意不重要。 我们竭尽所能,使一个人专注于工作,而不会被琐碎的事物(包括家庭事物)分散注意力。
  • 快速入门。 , . , , .
  • . Quick Start, .
  • .
  • . , .

结果


, . , , , «» .

. . - . , , — .


来源

接下来是什么


— Quick Start , , . Quick Start.

, . Quick Start , , , , , , . , - . , . , .

最后,还记得第一张带有术语的图片吗?您可能会想:“为什么这么多?” 对于我们来说,似乎一切都太复杂了,开发人员可能不需要了解所有这一切。阅读快速入门,很容易看到可以简化的内容,我们正在朝着这个方向努力。

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


All Articles