如果团队同时在实现多个故事该怎么办?blog.mypm.net
如果团队每次实现一个故事,将代码发布到主干中并不算什么大不了的事情。只要这个故事相关的代码在工作分支上完成实现并通过测试,我们把所有的相关内容从工作分支上复制到主干上就可以了。搞定!项目管理者联盟
先等一下。如果团队中同时开发多个故事呢?如果“开户”故事完成了,而“存款”还在进行中呢?项目管理者联盟
项目管理培训
如果我们在这个点上向主干进行同步,就会将尚未完成的“存款”故事同步进去,这时它还不能发布呢!而且违反了主干的版本控制方针!项目管理者联盟
当然,我们可以等到“存款”故事完成。项目管理者联盟
(等待……)blog.mypm.net
好了,现在“存款”故事完成了!太棒了!等一下……现在有人开始开发“取款”用户故事了!没错!同样的问题又发生了!项目管理者联盟文章
如果 “存款”故事的一个测试失败了,就很难知道是因为“存款”故事相关代码造成的,还是由于检入同一分支中并且部分完成的“取款”故事相关代码的原因。项目管理者联盟
等待无法起到任何帮助作用。这样实际上是在滚雪球,期望在未来某个假设的时间点上所有的故事都可以完成(如果这样的情况真的能够发生的话),而且可以进行一次大规模的发布。项目管理者联盟
上述是一个非常普遍的问题。我们该怎么做呢?项目管理者联盟
下面是一些应对之策:
不要做过多的并行开发。要力图将团队的注意力每次都只放在一个故事之上。service.mypm.net
如果在“开户”完成之前就有人准备开始“存款”相关的工作,要等到“开户”彻底完成之后再检入“存款”相关代码。或者可以将“存款”相关的代码检入到一个临时的分支之中,如果你喜欢操作多个分支的话。项目管理者联盟
如果在“开户”完成之前就有人准备开始“存款”相关的工作,可以让他先从一些相对安全和不可见的UI元素等部分开始,这些东西的变化不会影响到整个分支的可发布性。比如,“存款”需要开发一些新的代码以及对一些旧有代码的修改,可以先实现新的代码(新的方法、新的类、新的测试等等),而不是先去修改已有代码。如果“存款”需要新的GUI元素,那就让它们先不可见。等到“开户”故事完成而且发布到主干上之后,我们就可以开始实现“存款”的剩余代码了。项目管理者联盟
下面是一个合适的规则集:项目管理者联盟
任何针对优先级最高的故事开发的人都是“国王”。项目管理者联盟
团队其他的任何人都是“仆人”。项目管理者联盟
要是你想成为“国王”,就试着找路子帮助完成最高优先级故事的相关工作吧。项目管理者联盟
“国王”任何时候需要帮助,“仆人”就必须马上提供相应的服务。项目管理培训
“仆人”不能打扰“国王”的工作。
“仆人”不能向工作分支中检入不可发布的代码。“国王”可以检入任何他想要检入的东西(当然,只要他不违反分支方针即可)。项目管理者联盟
目前优先级最高的故事一“完成”,任何开始下一个最高优先级的团队成员就成为了“国王”。项目管理者联盟
你甚至还能为团队争取到一些王冠饰品呢。:o)项目经理圈子
|