因此,我们对如何处理有关并行Scrum团队冲刺的源代码有不同意见。背景信息是我们有两个7人团队在同一产品发布的2周迭代中处理相同的代码基线。
团队A:在一个阵营中,我们首选的方法是:每个团队在自己的分支中工作,如果更改可以接受,则在每个sprint结束时合并到主干。原因是团队A不想冒B团队引入错误代码的风险。 B队:在另一个阵营中,我们首选的方法是:两个团队都在后备箱中工作,尽早并经常检查小型工作变更集,并依靠持续集成构建来尽早预防和识别损坏的构建。 B队不希望每隔几周进行一次大型合并。思考?这两种方法都比另一方更有效吗?是否有团队推荐的第三种方法?
编辑:只是为了澄清两个团队都想要CI,但是团队A将有多个夜间构建,每个分支一个。 B队赞成单一分支上的单一构建。
感谢〜
答案 0 :(得分:2)
在涉及人员的任何正常情况下,合并将很快被推迟“直到我们稳定了这一件事”。这一件事很快就会稳定下来,所以分支机构开始出现分歧。一开始并不坏,但很快你会注意到你将合并和稳定冲刺。这就是我在所有项目中发生的事情,我看到分支被用于这样的事情。
在上面两个选项中,我建议立即咬掉子弹,然后使用选项B.它会产生一些开销,但至少人们在他们仍然记得他们正在做什么以及他们为什么做的时候会立即合并他们的变化。在几周内,它会变得更加困难。
解决方案C可以是为两个团队提取具有公共代码的第三个项目,让每个团队的主动开发部分随意修改。共享代码库应该更加稳定。不知道这样的解决方案是否适用于您的情况。
答案 1 :(得分:2)
团队B.你正在引入开销 - 大型合并 - 以避免经常不会发生的假设情况(“坏代码”),如果确实如此,将导致更少的工作纠正比所有的合并都会积累。此外,这些合并本身可能会引入错误。
简而言之,您正在添加更多工作来处理未经证实的问题,最终可能导致更多工作。
另一方面,如果团队B(或者A就此而言)正在检查错误的代码,那么捕获它的地方就在CI中,如果他们 引入了错误的代码,那就是管理问题,而非程序问题。
答案 2 :(得分:2)
为什么不让B队在主干和A队的分支上工作?每个人都得到他们想要的东西! (开个玩笑:这与方法A没什么不同)
但是,说实话,你正试图在“孤岛工作”和“只有一个庞大的团队”(或更具外交性:“稳定的工作空间”和“主动协作”)之间做出选择。 我建议采用混合方法。但我同意Kai Inkinen的想法,即将代码库重构为共享代码与特定于团队的代码。您的团队足够大,他们生成的代码将是重要的:更多的组件是有意义的,并可能完全避免这个问题。假设你没有这个选项:
A的一些缺点:
B的一些缺点:
我的建议方法:
通过这种方法,团队将获得奖励(相对容易的合并),以便经常和检查,以便尽快向主干进行更改。这些都是好事。
我还应该指出,使用像git / Mercurial这样的东西,你会有更多的灵活性。
答案 3 :(得分:0)
我会继续进行整合。这样做的理由很少。查看Martin Fowler的this链接,了解它的优点。