我喜欢并赞成mcottle的答案,但我想介绍其他答案尚未提出的其他动态和论点。
首先,在mcottle的答案中隐含的事实是,在一定技能水平以下,有些问题是不可能的。不幸的是,您发现此问题的方法是您的团队不断尝试和失败,这非常昂贵。失败之后,有两个可能的经验教训。一种选择是,您了解到您需要更多有能力的开发人员,因此您聘请了他们,并在预算和进度过度的情况下完成了该项目,但是至少您将来会做好准备。另一个选择是,对于您的团队来说,这样的项目“太难了”,将来不应该尝试这种事情,即您放弃该项目,而实际上放弃了任何类似的项目。当然,它很少会被表述为“我们太笨了,无法做到这一点”,而将其合理化为“我们的系统非常复杂”或“我们有很多遗留代码”或其他一些东西。后一种观点可能会严重扭曲公司对可能的发展以及应该进行多长时间/昂贵的开发的观点。”
一个问题是,您公司的计划到底是什么?好的,他们会雇用廉价的初级程序员。三年过去了,现在呢?他们如何对待过去三年来一直与他们在一起的开发人员?他们只是从不给他/她加薪吗?这里的选项如下:
- 他们竞争性地加薪以留住员工,在这种情况下为什么他们现在要支付高级开发商费率会有问题?我会回到这。
- 他们的薪资水平停滞不前,这意味着他们最终将精疲力尽给缺乏动力和/或技能的员工。
- 他们更积极地罢免更多的高级员工。
后两个案例意味着大量的员工流失,这意味着公司知识的丧失和不断增加的员工薪酬。在第二种情况下,您实际上是在选择不良的开发人员,因此成本将以进度增加的形式增加。这种播放的方式是在X项目上一切正常,直到突然间Jim Jim离开了,他是最好的开发人员之一,因为他已经两年没有加薪了,现在该项目“可以理解”的时间要长得多您需要雇用和培训新的初级开发人员(大概)不会像Jim那样优秀。这是您重新调整期望的方式。
即使在提供竞争性加薪的情况下,如果您只有初级开发人员,他们应该在哪里学习以及如何学习?你基本上希望其中一人将学会对自己的良好做法,尽管他们的工作环境,并最终指导别人(而不是离开另谋高就)。与一些优秀的开发人员一起“启动泵”将更加有意义。您更有可能养成专家初学者的文化。结果是,您最终将向那些仅比初级开发者略胜一筹且具有文化毒性的人支付高级开发者费率。
特别是非常优秀的开发人员的一项好处,令我感到惊讶的是,没有人提到他们可以很容易成为乘法因素。初级开发人员和高级开发人员很可能花费相同的时间来制作表格。但是,好的开发人员不会这么做。他们将创建一个表生成器,以减少每个人创建表的时间。作为替代/补充,他们将提高每个人的能力上限。例如,实施Google MapReduce框架的开发人员可能非常有资格,但是即使用户的MapReduce完全无法自行制作其算法的大规模分布式版本,而现在使用MapReduce可以轻松实现。通常情况下,这种动态不太明显。例如,更好的源代码控制,测试和部署实践可以使每个人都变得更好,但是很难追踪到特定的人。
稍微争论一下对方,也许高层人士是对的。也许不需要更多有经验的开发人员。但是,如果真是这样,那么发展似乎并不是公司的重要组成部分。在那种情况下,我将完全淘汰开发人员,使用现成的软件或按需雇用承包商。也许值得探讨为什么他们不仅仅使用承包商,而不仅仅是内部团队。如果您反而会造成大量的员工流失,那么增加承包商就不成问题。