大量开发人员在没有繁琐的过程或质量差的软件的情况下如何一起编写软件?

StackOverflow https://stackoverflow.com/questions/2866762

我在一家公司工作,数百人为基本相同的产品编写软件。该软件的质量必须很高,因为很多人都依靠它(尤其是开发人员本身)。因此,每个主要问题都会产生新的检查 - 自动化或手动。

结果,交付软件的过程变得越来越繁重。因此,这需要更多的开发人员……您可以看到它是一个恶性循环。

现在,我们遇到了迅速发布软件的问题 - 至少有一天,即使更改一行代码的提前时间至少是一天。

您使用哪些技术来加快在大型组织中的软件交付,同时仍保持软件质量?

有帮助吗?

解决方案

我还在一个大型且繁琐的组织中工作。我成功实施了几个 敏捷软件开发 方法论,但我发现有两个特别有价值。

迭代和渐进发展 - 使您的释放周期短而紧。在一个大型团队中,如果在发行版之间进行了许多更改,您会发现自己陷入整体噩梦。

大型组织倾向于拥有冗长的开发时间计划的大型项目计划。战斗。当您的整个感知在开发前两周后可能会发生变化时,整整一年的项目毫无意义。调节您的利益相关者习惯于制作小额增量发布并适应不断变化的要求的想法。

自动单位测试 - 这是确保您发布高质量软件的好方法。最糟糕的错误是由看似无辜的代码变更引起的,这些更改在其他地方带来了意想不到的后果。全面的单元测试可能是捕获这种错误的最佳方法。如果你可以毕业 测试驱动的开发 或者 行为驱动的发展, ,甚至更好。

任何大型组织都会有一些平庸的开发人员。这是生活的事实。自动化单元测试是关注它们的好方法。让您的更好的开发人员为他们编写他们的单位测试。您将保证至少他们的代码有效(即使这很丑陋)。

其他提示

有很多方法可以改善流程,但是关键组成部分是 模块化. 。通过清楚地分开职责(无论是在代码和组织中)并定义清晰,一致的界面,一个大型团队可以工作,因为许多小团队都捆绑在一起。

明智但令人沮丧的谚语:

  • 弗雷德·布鲁克斯: 将程序员添加到一个晚期项目中.

  • 格里·苏斯曼(Gerry Sussman):程序员并行结合了电阻。

  • 其他人:项目的成本是程序员的数量乘以时间表的长度。

可能有效的东西:

组织项目,以便有一个或两个人构建的核心应用程序,最好是通过语言运行。然后让所有程序员有效地成为 用户 核心,通过使用该语言进行编码。

我正在考虑基于语言的产品: SAS, s/r, MATLAB, , ETC。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top