给新员工一个与经验丰富的开发人员分开的子项目是否可以帮助新手更快地成长?


12

我们的团队有7个开发人员,需要在短时间内(大约一个月)将开发速度提高一倍。我知道有一个常识性规则,即“如果雇用更多开发人员,则只会在头几个月损失生产力”。该项目是一个电子商务Web服务,大约有27万行代码。

我现在的想法是将项目分为大约两个独立的子项目,让新团队在两个子项目中的较小者上工作,而当前团队在主项目上工作。即,新团队将致力于结帐功能,最终将成为独立的Web服务,以减少耦合。这样,新团队就可以在只有10万行代码的项目上工作。

我的问题是:这种方法是否可以帮助新手开发人员轻松适应新项目?还有什么其他方法可以快速扩展开发团队,而不必等两个月,直到新手开始生产更多的软件,然后再开发bug。

=======

更新

这家企业完全失败了,但并不是因为你们提到的原因。首先,我对新团队的规模和能力不了解。我本应该对它们进行评估。其次,在该站点招聘人才是一项艰巨的工作。在总公司所在地,招聘要容易得多,但是在第二团队的城市中,显然缺少具有所需资格的开发商。结果,工作时间从原来的1.5个月延长到了4.5个月左右,并被高层管理人员取消。

我犯的另一个错误(Alex D曾警告过)是我试图将重构出售给高层管理人员。您从不出售重构,而仅出售功能。

事实证明该启动是成功的。从未发生过的重构变成了技术债务:系统变得更加单一且难以维护,开发人员的生产力逐渐下降。我现在不在团队中,但是我希望他们能在不久的将来完成它。否则,我不会为该项目的成败做出任何贡献。


2
如果你雇用更多的开发者,你只能松在最初几个月生产力 -我从来没有听说过,如果它,但我相信它更
BЈовић

2
当您尝试将两个部分重新集成在一起时会发生什么?这两部分是否有可能通过各自的测试,但是对整个批次的大型集成测试将失败?我怀疑您会发现布鲁克定律不是那么容易被规避的。优秀的创意思维;值得+1。我真的很想知道这对您的影响。
达伍德·伊本·卡里姆

1
javana:我们将聘请经验丰富的开发人员
Dmitry Negoda

2
@DmitryNegoda如果可以在足够的时间内找到它们。经验丰富的开发人员通常不会失业,因此即使您采访他们并明天为其提供职位,他们也可能需要在开始之前提前数周通知当前雇主。如果我是您,我将准备一份应急计划,以防万一,例如准备在夜间和周末工作一段时间。
maple_shaft

4
不管您对开发人员有多惊奇,他们都不会在不到1个月(约3周)的时间内理解10万行代码
Ryathal 2012年

Answers:


1

我与其他所有人一样同意Altought:

“ ...将更多的开发人员添加到延迟的项目中,使该项目延迟更多...”

我的感觉是,您将在任何地方都可以这样做,所以...

如果现有项目由模块,子系统或子项目组织得足够好,则您的想法可能会有所帮助。

您可能想尝试的方法是,为它们提供与项目一起使用的小块/模块/表格/类,而不是所有项目。

如果使用数据库,则可能需要使用数据复制一个正常工作的DB,并从要使用的代码模块或代码子系统访问它们。

仅拥有知道编程语言或编程环境的新开发人员还不够,软件应用程序可能会变得非常复杂。

您是否有一些有关应用程序的文档,例如:UML,ER,Codd-Yourdon,等等?

祝好运。


我们只在谈论10万行代码,它不是那么复杂,但是感谢您的关注
Dmitry Negoda 2012年

1
@Dmitry Negoda:复杂性不是LOC的功能。
jmoreno 2015年

有大量研究(例如Boehm的研究)表明,程序员的生产率平均而言是LOC的函数。
德米特里·涅戈达

15

我的问题是,这种方法是否可以帮助新手开发人员轻松适应新项目?

“新手”对您来说可能意味着新手,或者对于作为软件开发人员的工作而言可能意味着新手。如果您要按计划安排一组开发人员按时完成重要项目,请确保至少大多数新员工是有经验的开发人员,最好是那些编写与您尝试的项目相似的项目的开发人员建立。

还有什么其他方法可以快速扩展开发团队,而不必等两个月才开始生产更多的软件,而不是bug?

  • 购买或许可现有产品,而不要尝试构建自己的产品。您真的需要重新发明结帐转盘吗?

  • 就像我在上面说的,请雇用有经验的人来构建您想要的系统。

  • 甚至在雇用这个新团队之前,您都应该考虑他们需要了解您现有的东西。确保为培训课程预留足够的时间,以帮助他们快速上手。

  • 您是否创建了一套书面要求?如果没有,请立即执行。如果您希望设计项目而不是让新团队去做,那么您也应该准备一份清晰的设计文档,但是可以根据新团队成员的输入进行更改。

  • 您是否有明确的开发流程?错误数据库?版本控制?代码审核过程?时尚指南?将这些东西放到位。

  • 不要指望奇迹。您聘请一个七人团队,让他们在几周内高效地工作,但是想要它并不意味着您可以拥有。根据您所在的位置,找到七个合适的人可能要花费一个多月的时间。现在尝试赶时间只会在以后引起痛苦和费用。


1
+1书面要求,它们有些过时了……
Dmitry Negoda 2012年

3
谁来采访这些新员工,更新书面要求和设计文档,填写错误数据库,花时间参加培训课程……?是目前的开发人员吗?因为那意味着他们不会全职工作。因此开发速度下降。哎呀
MarkJ 2012年

该代码是自记录文件,我们将只雇用经验丰富的开发人员。是的,当前的开发人员将为新开发人员提供帮助,其速度将有所下降。我只是希望在100K loc项目中聘用开发人员不会像在270K loc项目中聘用那样痛苦,这就是问题所在。
德米特里·涅戈达

您是否有内部Wiki,还是存储在Word文档中的所有内容分散在LAN上?
Spencer Rathbun 2012年

1
100k,50k或10k都代表同一件事-大量的代码将使任何人都无法进入他们的头脑。如果有几百行代码,那是合理的。一旦您获得了数千美元,您就会拥有一个复杂的系统,并且常常无法实现对速度的期望。
Michael Durrant 2015年

12

恕我直言,将所有新开发人员放到新项目中,与您现有的团队分开一定会带来问题。是的,这(可以)使您的老团队按照当前的速度继续工作。但是,这些新手不会对整体架构和全局有任何了解,因此他们将花费大量时间来加快速度……甚至他们可能会走错方向。

我建议将您现有的团队分成两个团队,并在两个团队中雇用新成员。这样,两个团队中的人员都可以指导新来者,并确保保持一致,一致的架构构想。

否则,我同意Caleb在记录明确的需求,定义开发流程和工具以及预留培训时间方面的观点……而且,期望一个7人的团队在一个月内被录用并加快工作速度是不现实的。


4
+1-您绝对想使用您的旧开发人员来招募新手。尽管这将不可避免地使您慢一点。
mikera 2012年

+1。您想让经验丰富的开发人员指导新员工。即使新员工有很多经验,他们也不会确切知道您公司的工作方式。
安迪

9

德米特里(Dmitry),在短时间内将开发速度提高一倍是一个令人难以置信的宏伟目标。一些好的建议已经发布在这里。但是,无论您尝试什么,都要注意它可能不会发生。如果您的发展步伐没有翻倍,那么从业务角度来看会带来什么后果?您是否在努力按时完成任务?

如果您想按时完成任务,是否可以通过削减功能来更可靠地完成任务?我发现使“错过的截止日期”对客户可接受的一种好方法是进行增量发布。发布具有所需功能子集的版本,然后在准备好更多功能之后,逐步发布它们,直到最终版本。


还没有截止日期。我们期望通过建立合作伙伴关系,潜在客户的数量将大大增加。我们只是希望我们的解决方案更具竞争力,以便合作伙伴选择我们。它不是我们所追求的最后期限,而是其提供新功能的明显能力。但是感谢您的关注。
德米特里·涅戈达

如果真是这样,也许您不打算一步一步地将开发速度提高一倍,而是可以尝试在一段时间内“加速”发展。
Alex D

4

因此,您正在努力成为不成为“ 神话人物月”活动牺牲品的团队。您将遇到一些问题,团队中的某人将不得不进行技术面试,然后您将必须在接受职位后等待几周才能开始。新开发人员可能需要两个月的时间才能使用键盘。

在头几个月,每位新员工的生产力都为负。更糟糕的是,由于当前的开发人员需要指导他们,从而进一步降低了tems的生产率。

MMM的另一部分是,随着团队的成长,沟通问题也随之增加。会议越来越大,电子邮件链越来越长...

我会把他们分成几个小组,并且知道很长一段时间生产力不会与团队规模的增加成正比。还应意识到由于寄宿成本和设备的原因,前几个月现金流的流失可能是巨大的。

在您对Alex D的评论中,您提到:“它不是我们所追求的最后期限,而是其提供新功能的明显能力。” 因此,请切换为一种开发样式,以便以较小的块(更频繁地)分配功能。让团队的新成员测试新功能,这将有助于他们了解代码库。


我不了解测试新功能如何帮助您理解代码库。我们也正在招聘质量检查工程师,因此请开发人员进行开发并测试人员进行测试。
德米特里·涅戈达

2

您最好不雇用任何新员工,并查看您的流程,看看可以在哪里进行更改以使事情更快地进行。发现的错误越早,修复它们所需的时间就越少,那么您如何进行测试?您正在执行代码审查吗?您是否在关注需求的质量?您是否有自定义的构建和部署流程?您有自动化测试吗?您是否每天都举行例行会议(令人惊讶的是,每天有人问您的进步时,开发速度会提高多少!)?您是否在使用敏捷流程?您是否应该解决一些基本的设计缺陷,以使其余的开发过程更快(不良的设计可能会严重降低开发项目的速度)。

请阅读神话人月。显然,您将需要告诉高层管理人员为什么他们会做出艰难的选择来加速项目。。


是的,对您所有的问题都是最后一个问题。
德米特里·涅戈达

0

因此,您想将它们扔下悬崖,看看它们是否会飞?我认为,当您自己发现事物时,它们往往会长期坚持您的工作,而不是仅仅提供解决方案。但是,这假设您确实确实发现了更好的解决方案。我不明白为什么您不能让这个团队拥有一支合格的领导者,他将平衡他们的工作,让他们自己犯一些错误,并通过学习高质量的例子为他们提供指导和指导。


迈克·帕特里奇(Mike Partridge)改变了我的问题。我不会把任何人扔下悬崖。当然,新开发人员将与经验丰富的人一起工作,只是在另一个子项目上。
德米特里·内哥达

我只是希望在100K loc项目中聘用开发人员不会像在270K loc项目中聘用那样痛苦,这就是问题所在。
德米特里·涅戈达
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.