五个新的初级开发人员和许多复杂的任务。现在做什么?


10

我们公司已经雇用了五名新的初级开发人员来帮助我开发我们的产品。不幸的是,与新近毕业的开发人员相比,新功能和即将到来的错误修复通常需要更深入的知识(线程/并发,调试复杂系统中的性能瓶颈等)。

委派(和计划)他们(可能)可以解决的任务,回答他们的问题,指导/管理他们,检查他们的代码用尽了我的全部时间,而且我常常觉得我可以比整个委派过程花费更少的时间来解决问题(仅计算我的时间)。另外,我没有时间解决需要更深入的系统知识/更高级技能的任务,而且似乎在不久的将来它不会改变。

那么,现在是什么?我应该怎么做才能有效地利用他们和我的时间?


1
所有5个Jr.人员都参与了您的项目?您是唯一监督他们的高级开发人员吗?
泰安娜(Tyanna)2012年

@Tyanna:是的,我是这个项目的唯一资深。前些年,其他前辈被转移到其他项目。
mxe 2012年

2
首先要做的是向管理层解释,当您增加新手
Jk时

作为我自己的应届毕业生,我感到非常惊讶的是,那里有一个程序不涉及并发或性能。
丹尼尔·约瑟夫

+1。我唯一的遗憾是我无法进一步支持您。
Shivan Dragon

Answers:


2

是的,您可以比他们更快地解决问题,这就是为什么您年长而他们却不行。但是,一位优秀的长辈也希望将其大三带入高中,而做到这一点的唯一方法是让他们学习如何做事。

指导是目前最有效地利用时间,而不是编码。

这样看,如果您在接下来的六个月中有效地进行了指导,并且初级人员学到了足够的知识,可以成为中级开发人员-那么您将有5名中立的开发人员和一名高级人员。如果您因为速度更快而自己进行所有艰苦的工作,那么六个月内您将有5个初中生摇晃他们的拇指(如果他们不给他们任何挑战性的工作,那么他们中最好的人将会转移到其他工作上,所以您可能会有更少或更新的初级开发者)和一名过度劳累且胡思乱想的高级人员。

您知道在bug中通常会发现哪些复杂的交互,因此,如果事情,如何解决和发现实际问题以及解决这些问题通常需要使用的方法类型,则专门针对这些类型进行一些培训。然后在出现问题时向他们提出问题。是的,它们将需要更长的时间来修复它们,您应该在时间估算中考虑到这一点。

对编程的想法很棒。为每个真正高级的问题配对一个不同的问题。即使他们还不了解解决问题的方法,在您告诉他们要寻找原因的方法时,让键盘上的小三能帮助他们教会他们进行故障排除的过程。当然,不要仅仅指望他们接受口授。解释您要他们寻找的内容以及原因。询问他们的想法并听取他们的意见。解释为什么他们的想法不是一个好的选择。通过提出引导性问题,使用苏格拉底教学法。与您在没有解释的情况下指示给他们的答案相比,他们会记住通过您提出的主要问题得出的解决方案更好。如果他们真的输入解决方案,而不是仅仅看着您输入解决方案,他们还会记住更好。

当大三学生帮助您解决特定类别的问题时,您可以与他人配对,下一次出现此类问题时,您可以将他与其他人配对,并且只能进行咨询,而不是站在他们的肩膀上他们尝试不同的东西。

您有五个新人,这真的很难。您需要对所有人公平,并轮换您与之配对或提供指导的人。不要播放收藏夹。但是,如果某人没有成功并取得进步,那么您还需要成为一个提供“坚强爱情”的人。您可能需要将其中一个或多个召唤出去,并告诉他们他们需要改进,以及您为什么认为他们没有成功。如果您配对并且可以的话,SOme peopel将允许您完成所有工作;只是因为这样比较容易,所以不允许这样做。如果某人无法完成工作,那么一旦他们不愿或将不会学会变得更加独立,那么如果您不随身携带它们,这对他们会更好,对您的团队会更好。

记住,您会得到您所期望的。如果您期望不高,那么您将不会获得太多。期望它们发光,并且大多数将达到您的标准。


20

配对编程在这里听起来很有可能。

  • 给其中四个中的两个较简单的错误,让它们配对并让每个对解决其中一个。
    • 将此请求的短语设置为“您能弄清楚是什么原因吗?”。不要让他们开始考虑如何解决它。
    • 一旦他们有了某种程度的解释,然后问他们如何解决。这样一来,他们就不会立刻被繁重的工作所淹没。如果他们还没有的话,让他们去尝试一下代码,一旦他们有了一个计划,甚至是一个模糊的计划,您就可以指导他们找到一个好的解决方案。
  • 另一个,您可以与他配对,然后开始与他一起工作较难的一个。考虑到他对代码的缺乏经验,这可能会更加困难,但是他也会受益于具有丰富经验的人。
    • 我认为,鉴于您的经验,新功能可能是实现此目的的好方法。随着新功能的开发,您可以向他展示现有的API。

关于此建议的轶事/示例:这就是我被介绍到我正在工作的代码库中最毛细的部分的原因-与我配对的另一个相对较新的开发人员,我们最终做了这样的事情:

  • 给了我们一个错误,大约10分钟的介绍之后,我们被告知尝试找出正在发生的事情。
  • 大约一个小时后,我们分解并挖掘了两种不同的思路。
  • 在那之后大约两个小时,我大体上了解了代码是如何工作的,但是不知道确切的错误输出是在哪里生成的。通过挖掘原始数据和非规范化数据,他了解了它是如何生成的,但无法确定代码。
  • 我们配对备份并遵循代码路径,并得到了确切的答案。由此,我们与经理进行了头脑风暴,提出了一些可能的解决方案,并最终在以后实施了该解决方案。

从那以后,我就继承了整个代码库的维护,因为我实际上是唯一一个了解代码工作原理的人(仍然在工作的原始开发人员甚至都没有完全记得)。


+1。唯一的问题可能是将5个人分成2对;-)
Doc Brown

@DocBrown好吧,5个没有经验的开发人员+ 1个有经验的开发人员意味着您可以将3组分成2组(请参见第二个主要要点)。它可能更多地是关于什么类型的代码(UI,业务逻辑等)去向的教程,但是他将学习与其他4种不同的东西。然后在下一组任务上旋转。
Izkata 2012年

7

教他们。为他们分配可以轻松解决的任务。

简而言之,问题是上述工作人员的技能不足以使其完成任务时非常有生产力。因此,您可以1)简化任务2)尝试提高员工的技能。

每当一个新人加入团队并开始在他/她没有经验的代码库上工作时,类似的问题几乎总是(在某种程度上)发生。如果工具和方法未知,这将成为一个更大的问题。通过培训人员对工具和方法更加熟悉,可以更快地缓解问题。

但是,解决这样的问题需要花费时间-一个人不能只是期望别人在一瞬间就能学到一切或学到一切。也许介绍一些有关并发,软件优化和所需的一般方法的书籍将是一个好的开始。


3

听起来您不属于招聘决定。对他们处理当前任务的能力进行公正的评估。写下带有建议的报告(外部培训和诸如此类的任务,只要它不影响您的交货时间),然后将报告发送给您的经理,经理可以开始与雇用这些人的人交谈。一个新人可能会被一个团队吸收,但是一次只有5个新人,除非您有轻松的店铺,否则听起来并不好。无论您做什么,都不要尝试在项目时间上教他们,除非计划中对此有所说明。

编辑:在这种情况下 ,可能需要提及布鲁克定律


2

也许您可以花一些时间创建一个沙盒环境,在其中可以投入使用它们来解决一些棘手的问题而不会造成伤害。让他们尽可能全面地测试解决方案。在同一个问题上放多个。

所有这些事情使他们有足够的技能变得有用而有用的可能性,而且它们需要的时间更少。当然,如果您让它们(大部分)下沉或游泳并且它们几乎下沉,那么您必须重新考虑一下。

在编程专业中,那些不能独自学习的人可能根本不值得花太多心血来教他们。但是我认为,当您减少帮助时,他们会取得怎样的成就,这可能会使您大为惊讶。


如果沙箱环境尚不存在,这似乎是在浪费时间。
Ramhound 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.