如何为多个项目中解决的问题建立故事准备模型


9

在我们公司中,几个团队将同时从事多个项目的不同组成部分。例如,一个团队可能为某些项目制作特定种类的软件(或硬件),而另一个团队可能制作另一种特定种类的软件。我们使用Jira项目来托管特定项目的问题,并使用Jira董事会来为不同团队的sprint进行托管。

我们面临着避免在项目之间重复代码的问题,并且已经开发了一套在这些项目中使用的核心库。在进行项目工作时,一些开发人员会意识到他们编写的一段代码更加有趣,应该将其提取到一个核心库中,或者他们正在使用的某些核心代码存在错误,需要更多的参数化,或者新功能...您命名。

因此,他们创建了一个核心库问题,该问题进入了核心项目的待办事项列表。在核心图书馆会议上(一周一次)对所有这些问题进行审查,确定优先级和估算,并将在以后的某些冲刺中根据其优先级(与项目相关的问题)进行处理。

通过对问题进行排序来确定优先级,然后sorted在已排序的问题上贴上标签(以便我们可以搜索未排序的问题)。然后,我们将每个核心组件手动发行一个问题到待办事项的顶部,以便首先解决它们。当某些团队将这样的问题放入他们的冲刺中时,他们不得不手动将另一个项目拖到待办事项列表的顶部。

这很容易出错。基本上,我们拥有的是“未解决”和“进行中”之间的其他问题状态“已排序”和“估计”。通过sorted标签及其在电路板上的位置来反映这一点非常麻烦且容易出错。(例如,如果有人在某个冲刺中上下移动一个问题,这将反映在核心董事会上,默默地扰乱团队在几周前的广泛讨论中可能已经决定的问题的顺序。)

那么有什么更好的方法来实现呢?


2
仅仅为库添加功能似乎过多的外交开销。在我们由50名开发人员(医疗软件)组成的公司中,如果他们认为合适的话,我们仍然允许开发人员将代码推送到我们每个内部库中。当然,其后审查。您也许可以考虑使用pullrequest流程,但是要开会?不,那永远都行不通。
Teimpz '16

@Teimpz:当然,每个人都将使用内部库,当然,每个代码都必须经过审查。但是,解决核心问题的顺序(对于某些当前项目而言并不必要)由所有团队决定。效果很好,只有Jira似乎不太支持它。
2016年

开销看起来确实有些高,但是鉴于内核已被广泛使用,我愿意接受一点开销以确保没有问题。虽然开会似乎很多。我将其视为任何其他任务,但进行额外的交流-评论,对话-将非常重要。
Erdrik Ironrose '17

Answers:


2

如果您想在JIRA中进行跟踪,则将其视为一项新任务。

因此,例如:

假设您有一个故事CORE-75:Foo the Bar

一旦确定哪个团队负责该任务,他们就可以创建一个新任务:SUPPORT-123:Foo the Bar in Core

然后,您可以使用SUPPORT-123 阻止 CORE-75SUPPORT-123完成后,您可以返回CORE-75。您可以合并审阅,也可以审阅代码两次(一次由指定团队审阅,一次由一个特定于核心的团队审阅)。

无论如何,这实际上就是您正在做的事情:将核心库视为自己的产品/客户,不要半途而废。


这似乎很麻烦,但是,可以。所以+1
sbi

0

一种方法是团队为他们的冲刺创建一个新的问题,该问题可以链接到核心库问题。有点像您要为某个任务创建子任务,但要全面/积压。

另一种方法是在JIRA之外单独跟踪此事件。将现有的待办事项导出为CSV或电子表格并进行整理。

通过将问题与JIRA分开,您可以灵活地在计划会议中定义优先级,而不必担心JIRA在板上的排序算法,也不必使用标签。

在核心库的优先级计划会议中,您可以创建要完成的任务清单,以完成核心库,并且负责/负责核心库的人员可以确保这些任务由不同的项目团队启动并完成。


-2

有一种观点认为,封装了许多常见但不相关的功能的核心库是一件“坏事”(tm)

有几个原因

  • 他们引入了不需要的依赖和代码
  • 更改它们会导致所有应用程序发生更改
  • 没有一个“所有者”

在您的情况下,我认为将按更改的应用程序划分任务是问题的根源。一种逆康威定律。

我认为对您来说最好的解决方案是远离“核心库”库应该具有一组特定的(少量)逻辑分组功能。应该有可能完成它们。即JsonParser,LogWriter等,添加一个新功能应该很少。

但是,假设这将是一个漫长而艰巨的任务,作为辅助解决方案,我将仅将核心库任务保留在需要该功能的团队中。即。

任务:将特征X添加到产品Y

开发人员:嗯,功能X的一些代码应该放在核心库中。作为该任务的一部分,我会将其放在此处


这似乎很奇怪。首先,您认为您所谓的“具有一组特定的逻辑分组功能的小型库”与我们所谓的“核心库”之间的区别是什么?(顺便说一句:看来我错过了此答案的通知。很抱歉这么晚才答复。)
sbi 2016年

我认为这对我来说是引人注目的一句话:“他们编写的一段代码更加有趣,应该提取到核心库中”。如果您的共享项目是功能完整的“库”,则您无需为它们添加功能。
伊万

我不明白你的论点。为什么任何代码都无法从维护中受益?您的客户是否从不要求新功能,而导致编写新代码?您如何知道代码具有共同的兴趣,而不是通过分配另一个已经有需求的项目来实现?
2016年

假设您的图书馆是Json.Net。它有一个目的是将对象序列化为json和反向。确保您可能需要修复错误或添加对泛型的支持,但总体功能集永远不会改变。例如,您永远都不会遇到客户要求您实施“取消订单的能力”之类的事情,而您会认为,“我会将其添加到Json.Net中”
Ewan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.