弗雷德·布鲁克斯(Fred Brooks)的“外科团队”是否有效处理公交因素?


10

我的团队由4名经验丰富的开发人员组成,致力于大型模块化Windows应用程序(约200 KLoC)。自从项目开始(3年前)以来,我一直专注于核心代码库,尽管我不是团队经理,但已经逐渐转移到半领导开发人员的职位。

我们当前的迭代是高层管理人员要求的高优先级UI刷新,其中涉及对核心代码库的约15项更改。当经理询问时,我估计15项更改中的每项更改都需要不到4个小时来完成,总共不到7个工作日。然后,我自愿参加了这项工作。相反,经理决定将所有15个任务平均分配给所有四个开发人员。

从开始工作的三天里,我观察到两件事:

  1. 其他经验不足的团队成员每人完成大约1个或更少的任务。

  2. 布鲁克定律的实际应用:我花了大约一半的时间提供帮助(试图指导他们如何使用组件)。结果,我自己只完成了2个任务,而不是预期的5或6个任务。

我担心上班时间太晚,向经理咨询,并再次建议我完成剩余的任务。我的请求被拒绝,并且所述平均分配负载的原因有两个:

  1. 限制卡车/公共汽车的因素 -现在提高其他开发人员的技能,以便将来可以将任何工作提供给任何人,而不仅仅是我。
  2. 消除“瓶颈”(我)并更快地完成工作。

明确地说,我在以下方面没有问题:a)花时间进行教学,b)接触我的代码的人员,或c)工作安全。实际上,我经常向团队负责人建议,我会在核心代码库的某些方面对其他开发人员进行培训,以降低风险。

在此迭代中,我们还针对了许多高优先级的错误修复程序,因此,如果重新分配工作负载,似乎可以取得更大的进步。

在《神话人月》中,布鲁克斯建议建立一个外科团队,其中每个团队都由领导+副领导(经理和我)以及一些次要角色组成。我觉得我们很自然地会加入这个组织,但我的经理正在与之抗衡。我觉得总线因素已经得到解决(经理在核心代码中很精通),并且瓶颈实际上并不存在(让更多开发人员参与进来不会使工作进展更快)。在这方面,我认为手术团队是件好事。

这些是我的感受,但我不是经验丰富的经理,我们也不必处理公车因素(敲木头)。布鲁克斯说的对吗?您是否曾在公交因素发挥作用的“外科团队”中工作?是否有更好的技术来管理分销专业知识?

类似问题:


1
考虑将其培训为与团队交流您的技能。

Answers:


5

实际上,我认为您正在遵循“手术团队”模式。幸运!

该模型的部分要点是,下级团队成员扮演助手角色。当团队不进行心脏外科手术时,可以放慢脚步,让他们有机会练习一些技能或交叉训练职责。

外科医生的职责是通过寻找弱点并加以解决来检查和管理他们的团队,并成为顶尖的开发人员。您不能让非外科医生(业务经理)来执行此操作,因为他们不了解所需的技能,就像是熟练工的学徒一样。

因此,经理正在利用这一机会来实现他的其他目标之一。如果在此过程中团队中发现了一些缺陷,那么他可以在问题变得严重之前进行处理。说,雇用另一位开发人员。

或者,大三学生可能会犯错。这是他们这样做的最佳时机,因为他们要有人看着他们的肩膀。奥斯卡·王尔德说

经验仅仅是我们犯错的名字。

如果这些晚辈永远不会有机会犯错,那么他们将永远不能提高。它不仅会抢夺您的经验丰富的未来开发人员团队,而且在某种意义上还会抢夺他们应该拥有的机会。


感谢您的回答。这种经验已经明确表明了我们团队的两个弱点:1)我们的核心代码库太大,需要更多的模块化,并且2)当我们进行更多的模块化时,其他开发人员需要带头使用新组件,而不是我。更大的问题(不一定是我最初的问题的一部分)是,我对代码的了解比对经理(谁是“正式”外科医生)的了解要多得多,因此他无法有效地委派他人。
凯文·麦考密克

@KevinMcCormick-听起来您应该让您的经理担心这些事情。调整估算值,使其现在包括帮助团队成员完成任务。您这样做的理由很纯正。
Ramhound 2012年

@Ramhound,绝对正确,我什至已经与经理讨论过,他以后也同意了。他不了解的一些技能失衡,他主动提供了帮助。他确实知道该项目严重依赖我,我们俩都在努力解决这个问题。
凯文·麦考密克

7

我们公司过去一直像您建议的那样工作。我们只有两个人了解代码的关键部分。每当在代码的那部分中提出一项任务时,而不是花费数周的时间来加快其他人的工作速度,而是将任务分配给他们,因为他们可以在几天内完成任务。实际上,这段时间效果不错。

最终发生的事情是他们的盘子变得满满的,以至于即使他们可以在2天之内完成一项任务,也要花费数周的时间才能跻身榜首。经理们将就谁的任务更加紧迫而展开激烈的口头辩论。紧急依赖任务将被搁置。

最终,经理们厌倦了等待,开始训练自己的团队。是的,它在一段时间内变慢了很多,但是现在我们的吞吐量要好得多。

您现在可能处在第一阶段,可以处理工作,但是您无法预测何时进入第二阶段。这里有一个提示:它总是在最不方便的时间发生。当您还有喘息的空间时,经理是正确的选择。

是的,看到某人为自己可以更快更轻松地完成的工作而苦恼,这真令人沮丧。尝试为两岁的孩子做父母。您这样做是因为它有助于整个团队的进步。计划表是您经理的工作。如果您担心未完成的高优先级错误,请挑战一下自己,看看可以多快修复它们。


感谢您的回答!我可以肯定地说,“第二阶段”确实令人恐惧,因为我们有另一个项目的另一个员工,这是一个非常明显的瓶颈,并且过去曾引起重大问题。我不确定我们的项目是否存在相同的问题,所以我猜这里有点下意识。无论如何,我以此为契机分享一些知识,并可能揭示一些文档,代码模块化等方面的弱点。是的,这令人难以置信!听到别人也有同样的感觉令人感到安慰。
凯文·麦考密克

6

您现在可能不是瓶颈,但是如果您继续自己完成所有工作,最终您将成为瓶颈。您的经理意识到,重要的是,您要学会委派以冒险您的项目迟到,请相信他。一旦您学会放手,您的大三学生将在您的指导下开始学习并产生更多的东西。


感谢您的回答,我绝对同意一个人从事所有工作的风险很高,经理也意识到这一点。但是,在这种情况下,我无法完成所有工作。其他团队成员在完成其他任务(例如修复错误和处理子组件)而非核心系统体系结构时,效率很高。有点类似于建议MS的Windows Media Player团队的某人对Windows内核进行更改。
凯文·麦考密克

@KevinMcCormick-如果将Media Player添加到Windows内核中,这是有效的借口,怎么办?听起来您好像不想让团队成员熟悉核心系统架构,而且我看不出这样做的原因,但是从长远来看,这只会对您有所帮助。
Ramhound 2012年

@Ramhound,是的,在这种情况下当然是正确的。我确实希望其他人拥有我写的东西的所有权,进行更改并理解它(我定期提供培训和文档)。我只是认为“每个人都在相同程度上完成所有工作”的方法与某种程度的角色分配相比并不有效,因为我们每个人都有不同的技能和专长。
凯文·麦考密克

3

您正在应用的约束可能不存在,或达到您认为的程度。具体来说,您担心到完成为止的时间。另一方面,您的经理似乎没有受到时间限制的关注。

如果您将交货时间排除在问题之外,那么您将很快开始怀疑为什么要首先问这个问题。

这并不是说时间总是可用的,您确实指出这是高层管理人员的高度优先要求。但是您不了解老板与他们进行的所有对话。他可能已经协商了更多的时间,以便让您花费时间来训练团队的其他成员。

而且,尽管您认为公车因素已经得到解决,但您的老板可能正在考虑下一个要求,而他的一位明星开发人员很容易无法适应7天的工作。在较小的迭代中对团队进行培训要安全得多,在迭代中目标风险的大小要小得多。

我以前是一个严重的瓶颈;老实说,这不是一个令人愉快的地方。就我而言,我和IT副总裁进行了交谈,我们提出了一个永久解决此问题的计划。它很疼,但比我被卡车所受的伤害要少得多。

尽快进入需要淘汰的一切的思路很容易。一位优秀的经理会发现难得的机会,稍稍延迟(进行交叉培训/教育)以后就可以赚大钱。


感谢您的回答!我希望我能接受所有这些。在这种情况下,时间约束非常真实,但是正如其他人所说的那样,从来没有一个好的时间进行这类时间投资。有兴趣听听您如何解决自己的情况。
凯文·麦考密克

3
+1有些老板可能是白痴,但很多时候您的老板视野更开阔,您只需要信任他即可。
Phil

@Phil-听起来像是在这种情况下,老板实际上可能有很好的见解。让他担心时间轴,担心迟到,他毕竟提供了估计。最坏的情况是,关键时刻发生了,您自己完成了所有其他工作。
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.