如何确定项目所需的程序员数量


18

您如何知道一个特定项目需要多少个程序员才能成功?

我所服务的公司为客户公司履行订单。我们编写了一个内部仓库管理系统,该系统处理基于位置的库存管理,订单处理,提货单生成,开发票,货运审核和报告(可能有50个报告)。它还具有条形码扫描功能和客户端门户以及许多其他较小的功能。它还包括一个完整的员工时钟。它与Quickbooks,UPS和FedEx集成。它处理至少50个客户端的工作,这些客户端的功能略有不同。例如,我们从客户发送的文件中导入订单,但是每个客户发送不同的文件格式(csv,excel,平面文件和Web服务),因此我们有十几种订单转换方法设置。出口是同一回事。

该项目非常复杂,并且每天都有超过25万行代码的代码在不断增加。这大约是250,000行VB.NET代码,6,200行Ruby代码以及大约5,000行PHP。它还具有一个包含约200个表的MySQL数据库。

由于需求的不断变化和数十个客户的不同需求,代码本身的质量从极差的代码到相对较好的代码都有很大的不同。

当前,该项目只有一个程序员-我自己。我目前还为75人左右的公司提供所有产品支持。这包括故障排除和设置新客户端以及所需的任何新功能。另外,我们正在尝试将整个内容重写为100%基于Ruby on Rails。我们希望在明年左右将整个系统推向市场,以供其他公司使用。

目前,我们只有一名程序员,但我认为这还不够。对于这个规模的项目应该有多少个程序员,或者我们应该如何确定该问题的答案,没有人有任何建议吗?特别是考虑到管理层希望产品在明年之前达到商业质量?


11
我正在等待一个灯泡笑话:(
2012年

大声笑...谷歌标题,你可能会发现一些。当我进行谷歌搜索时,我实际上发现了一堆偶然的笑声。
kstevens715 2012年

8
如果要求不断变化,则不会有多余的双手将产品运送出门。您必须首先确定需求。
2012年

就我而言,这是绝对正确的。我知道我要问的问题可能不是很容易回答。但是,如果我可以比较其他人正在从事哪些类型的项目,以及有多少人全职参与这些项目,那可能会有所帮助。
kstevens715

这个问题似乎和这个问题非常相似。也许您还会发现一些有用的答案。
S.Robins,2012年

Answers:


3

我至少要说5个人。一种用于测试,一种用于规格,支持和文档以及3dev。在您的情况下,有很多要测试的东西,因此50%的专用测试仪应该是不合理的。写下要求并有客户支持来设置您的基础结构以进行测试等的人员应该在那里。对于这样的项目,我觉得三个开发人员都非常低。一个大型后端,它集成到许多第三方系统中,并且具有完整的前端,其中包含许多自定义报告。我想拥有。

  1. 优秀的后端开发人员(持久性/业务层)
  2. 一个优秀的中端/前端开发人员,可以制作动作类和JavaScript CSS设计。
  3. 一个优秀的开发人员代理架构师,但在另外两个专家的帮助下,也在所有层中编写了代码。该开发人员还可以执行诸如设置JUnit框架Maven Jenkins Git分支等工作。

如果您离开,病假,休假等会发生什么情况。每个项目一个人永远都不聪明。独自一人也不是一件好事,因为如果没有同事,您将无法专业发展。我经常一个人工作,建立新的体系结构,等等,通常是由5个开发人员组成的团队,但我的发展从未像我对同事说的那样,让他们一起建立起来,而我们锁定了一周的讨论,讨论的时间。并选择框架。结对编程非常有用,不能由一个开发人员完成,如果您不确定,谁来进行代码审查?如果您遇到困难,谁会帮助您?如果只有一个人的项目属于更大范围的项目,并且在需要时可以征集专家资源,我将不承担任何责任。


1
去年夏天,我放了2天的假期,有人要闯入我的房子才能拿起我的笔记本电脑。我总是谈论在真空中工作,因为我没有很多其他开发人员可以与之交互。而且生活在一个小镇上,甚至没有用户组或任何人加入。我们(I?)最近才开始编写测试代码,实际上是当我们开始过渡到Rails时。我已经无法想象没有测试就可以开发。我喜欢拥有50%专用测试人员的想法。
kstevens715

1
至少一名开发人员应该是数据库保密专家。
HLGEM '01年

8

欢迎来到时常艰难的资源世界!

问题不是“项目规模与团队规模”之一。这是一个非常普遍的误解,通常会掩盖通常与管理相关的其他问题。问题全在Scope上。您需要确定使用当前资源(也就是您)可以实现的目标。然后,您需要确定您处理工作负载的能力是否足以在分配的时间范围内处理任务。因此,必须确定您的项目需求并确定范围。

  • 您是否想花时间清理现有的代码库?
  • 这是确保项目成功的基本要求吗?
  • 您是否有要添加到系统的新功能?您的项目中最重要的方面是什么,需要处理的次要项目是什么?
  • 是否可以放弃任何要求,或者至少推迟到下一个维护版本发布这些要求?

了解需求范围后,可以更轻松地确定在特定时间范围内实现结果所需的工作量。如果您的资源可能被过度利用,那么您将需要更多的人员。如果您的资源可能未得到充分利用,那么您可能会发现自己可以缩短截止日期,或者扩大项目范围。

如果您的直觉告诉您您没有足够的人员来管理项目,那么您可能是正确的,但是您需要了解为什么直觉告诉您这一点。仅仅拥有一种感觉是不够的。相反,您需要能够科学地检查问题,以便提供证据来支持您的直觉,并且您需要准备面对直觉甚至可能是错误的可能性。一旦收集了证据-即:确定了项目的范围,那么您真的需要与您的管理层坐下来,为减少项目范围或增加可用资源以确保项目成功提供依据。根据现有证据。


范围似乎是将250K SLOC系统完全重写为具有自动包装质量(或至少是咨询软件质量)的产品。好处是需求收集和总体设计可能已经完成。这并不小,对于一个承担其他责任的开发人员来说也不是什么。
David Thornley,2012年

@DavidThornley这在很大程度上取决于开发人员职责的范围,他的截止日期,他的工作量以及他的公司如何营销该产品。我看到一个由1-2人组成的团队进行的许多复杂项目之所以非常成功,是因为它们得到了很好的管理……还有许多失败了。但是,我同意这项任务是一项艰巨的任务,就资源而言,它本身已经是一个危险信号。问题是,不先做一点家庭作业就不值得雇用很多人,这确实是我的答案。:-)
S.Robins 2012年

范围是我最近几个月一直提出的。项目的20%对公司有80%的影响。这就是我要重点关注的。不幸的是,当我们试图通过抛出更多的代码和功能来处理“紧急情况”时,影响到20%的80%才被推到了最前沿。我曾经要求冻结功能,以便解决一些核心问题。他们给了我5天。不用说已经过了5年,许多核心问题仍然存在。不过感谢您的贴文,非常有帮助。
kstevens715

6

产品/项目的成功将取决于公司为其付出的承诺。如果他们要雇用更多的程序员/支持人员,那么一个程序员的工作效率就会内在下降,因为他们知道必须培训,教导,管理等。这不是一件坏事..但是在实现任何增长之前减少。.一旦产品上市,也需要业务分析师,经理,销售以及产品支持。

托管商业应用程序不只是创建一个可靠的平台。有支持要求,技术支持,错误修复,用户培训等。

您有适当的分析/规格/评估程序吗?如果没有,请立即开始,您可以自己完成。

您现在正在动脑筋吗?如果是这样,如果希望您管理此过程并继续进行开发(提高工资?),请准备加倍努力。

这是我以前在南加州地区定价中处于类似情况的经验得出的答案:

5-6人 && 〜500k

  • 1个主要开发人员/经理戴的所有帽子(〜100k-120k)

  • 2个高级(能力强,自我驱动)程序员,具有良好的数据库知识和技能(2x〜80-100k)

  • 1个项目经理,可以与管理人员($$?)交互,此人还应该能够了解应用程序的需求,并将这些需求直接传达给程序员

  • 1个 (HTML / UI)开发人员?具有javascript技能(我讨厌编程UI /标记代码)

  • 1个 数据库人?但是,大多数优秀的程序员在创建可伸缩数据结构时都没有问题,但是,如果您要考虑优化问题,则至少需要有一名顾问


1
+1非常喜欢您的故障记录!如果我想在SoCal工作,那么完整的OT薪水对我来说会让我感到沮丧,但是,如果Sr人员像MSc + 5年的工作经验,它们的薪水不会比西欧高很多。
农民2012年

1
我同意,除了我还建议入门级程序员接管支持职责(客户端设置和较小的增强)并进行常规的繁琐工作。根据所涉及的技能水平,组合一些角色可能会起作用。
jfrankcarr 2012年

哇,您可以以80-100K的价格在So Cal中获得高级开发人员?考虑到生活费用,这似乎很低。也许我们对“高级”有不同的想法;我在达拉斯认识的资深开发人员所获得的收益远不止于此。
凯文·克莱恩

我们可能对哪种口味也有不同的想法。.我聘请了两名.Net Sr.,他们年轻且有才华,在过去10年中有很多经验并愿意在这个范围内工作。我们使用了最新的Microsoft Stack(TFS,.NET 4,C#,EF 4.1,MSSQL 2008 R2,等等),并且敲出良好的干净代码没有问题。我们是一个很小的团队,我们发现试图雇用一些高级专员的问题是他们对学习的抵抗力强,意见太多,行李过多(我们也没有太多的招聘窗口)
hanzolo 2012年

2

1个程序员在一个大的代码库与所有配置,测试,沟通,支持,记录和错误修正不会对编写新的代码或增加功能(甚至重构旧代码)很多时间的责任。

通过这些无法扩展业务的强制性任务来减少您的工作时间,您会惊讶于管理人员能以多快的速度获得额外帮助。

大型项目具有一定数量的相关开销,这些开销不会消失(尤其是如果似乎总是在与新客户一起实施/测试的情况下)。这就是您通常需要支持轮换和支持的原因。因此团队中的一些人有时间去开发新功能。

您可能还想研究有关软件评估的书籍。这些书听起来似乎没有太多话要说,但它们包含来自各个领域的有趣案例研究,并以证据为依据来支持其主张。


我95%的时间都花在了其中一项任务上。我喜欢支持轮换的想法。如果我们雇用一个可以跟我一起轮岗的人,那可能是要考虑的事情。例如,今天,我实际上正在研究一些核心代码,但由于有人需要电池而被打断了。
kstevens715

@ kstevens715-听起来您需要帮助,即使它是技术的某人的孩子。我假设您的薪水至少为5位数字,如果被告知要买电池,那对我的员工来说将是10美元(相当于我小时工资的35%)。
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.