1

很久以前,当我的公司规模小得多时,将开发工作分配给团队非常容易:

  • “应用程序”团队开发了特定于应用程序的逻辑,通常需要深入了解特定行业问题)
  • “通用”团队开发了所有应用程序通用/通用的部分(用户界面相关的东西,数据库访问,低级 Windows 的东西,......)

多年来,团队之间的界限变得模糊:

  • “应用程序”团队经常使用“通用”部分编写特定于应用程序的功能,因此他们没有要求“通用”团队为他们编写该部分,而是自己编写以加快开发速度;然后将其捐赠给“通用”团队
  • “通用”团队的重点似乎更“面向维护”。所有“非常通用”的代码都已经编写好了,因此不需要在其中进行新的开发,但是它们必须不断地支持应用程序团队提供的所有功能。

所有这些似乎都表明,在团队中进行这种拆分不再是一个好主意。也许“通用”团队应该演变成“软件质量”团队(定义和保护编写优质软件的规则),或者演变成“软件部署”团队(定义软件应该如何部署、安装……) .

如果您有不同的应用程序,您如何将工作分配到不同的团队中?

  • 每个人都可以编写通用代码并将其捐赠给中央“通用”团队吗?
  • 每个人都可以编写通用代码,但没有人“管理”这个通用代码(每个人都是所有者)
  • 通用代码仅由“通用”团队编写,应用程序必须等到“通用”团队交付通用部分(通过库,通过 DLL)
  • 不同应用程序之间的代码没有重叠
  • 其他方式?

请注意,混合的好处(允许每个人在代码中的任何地方编写)是:

  • 代码以更灵活的方式编写
  • 调试代码更容易,因为您可以轻松地进入调试器中的“通用”代码

但是最大的(也许是唯一的)缺点是,如果没有明确的团队来管理它,这个通用代码可能会成为任何人的责任。

你的愿景是什么?

4

2 回答 2

2

当你有不同的“应用程序”团队时,你总是会得到重复的功能——相同类型的帮助类,同样的问题被多次解决,通常以稍微不同的方式解决。

问题是,没有人真的想加入“通用”或“框架”团队,而且该团队的工作非常艰巨,既要宣传他们的代码库中可用的功能,又要确保人们实际使用的“应用程序”它。

您需要指定一些首席工程师/开发人员。这些人的角色是监督“应用程序”和“通用”团队之间的代码开发。他们还负责了解“通用”团队有哪些功能可供重用,然后确保它被实际使用(而不仅仅是重新发明)。最初让一个(或几个)人在这个领域有知识和责任感会比仅仅召开团队会议并说“大家好,这是一组新的 API,开始使用它们”更快地传播知识。这些主要开发人员的角色之一是管理代码审查,其中一部分代码审查可以确保使用了适当的“通用”代码,

当然,通用团队还必须做好记录他们所拥有的工作 - 如果应用程序开发人员无法在通用代码中找到他们想要的内容,他们将继续自己编写,从而使您当前拥有的循环永久化。

于 2010-04-05T10:26:10.370 回答
1

我以前的一位雇主有这样的想法来拆分开发工作:

  • 将从事长期项目的项目团队,通常平均为 3-6 个月,因此这些都是不会轻易完成的大项目是理所当然的。

  • 持续的工程团队将处理可能需要几周时间的短期功能,以及错误修复和其他维护工作项目。这里的关键是,这个团队必须准备好在较短的快速周期内工作,因为他们的周转时间应该与项目团队有很大不同。

我没有足够长的时间来看看结果如何,但在我看来这是一个好主意。主要的一点是,有很多小工作本来是无法完成的,但可能对整个公司非常有用,所以这是一种在更大的工作项目之外完成这些小工作的方法。两者之间的任何内容都可以进行审查,或者拆分为 CE 团队的小部分,或者如果公共区域中有足够相似的部分,则将其打包到一个项目中,例如,用于一大群应用程序的服务包将如何采取一些错误修复并将它们打包以供项目团队执行。

于 2010-04-05T15:50:57.830 回答