我在一家公司工作,有数百人为基本相同的产品编写软件。软件的质量必须很高,因为很多人都依赖它(尤其是开发人员自己)。因此,每个主要问题都导致了新的检查 - 自动或手动。
因此,交付软件的过程变得越来越繁重。所以这需要更多的开发人员......你可以看到它是一个恶性循环。
我们现在遇到快速发布软件的问题 - 即使为一个非常严重的问题更改一行代码的前置时间至少也是一天。
您使用哪些技术来加速大型组织中的软件交付,同时仍保持软件质量?
答案 0 :(得分:6)
我还在一个庞大而繁琐的组织工作。我已成功实施了多种agile software development方法,但我发现有两种方法特别有价值。
迭代和增量开发 - 保持您的发布周期短而紧。在大型团队中,如果在不同版本之间进行了大量更改,您可能会发现自己处于集成的噩梦中。
大型组织倾向于制定具有较长开发时间的大型项目计划。打这个。在开发的前两周,当您的整体感知发生变化时,计划一整年的项目是没有意义的。让您的利益相关者了解如何使用小额增量版本并适应不断变化的需求。
自动单元测试 - 这是确保您发布高质量软件的绝佳方式。最糟糕的错误是由看似无辜的代码更改引起的,这些更改会在其他地方产生意想不到的后果。综合单元测试可能是捕获此类错误的最佳方法。如果你可以毕业到test driven development或behavior driven development,那就更好了。
任何大型组织都会有一些平庸的开发者。这是生活中的事实。自动化单元测试是一种关注它们的好方法。让一位优秀的开发人员为他们编写单元测试。您将确保至少他们的代码有效(即使它很难看)。
答案 1 :(得分:4)
答案 2 :(得分:2)
有许多方法可以改进流程,但关键组件是modularity。通过明确区分职责(包括代码和组织)以及定义清晰一致的界面,一个大型团队可以将所有小团队联系在一起。
答案 3 :(得分:1)
明智而沮丧的说法:
Fred Brooks:Adding programmers to a late project makes it later。
Gerry Sussman:程序员并行组合电阻器。
其他人:项目的成本是程序员的数量乘以时间表的长度。
可能有用的东西:
组织项目,以便有一个或两个人构建的核心应用程序,最好通过语言操作。然后让所有程序员通过使用该语言进行编码,有效地成为核心的用户。