回应 AviD 对 Joel 的评论/问题:
那么,如果您在下一个版本中有 10 个新功能,每个功能需要 5 个任务来实现,您建议创建 10 个版本吗?我如何定义这些是即将发布的版本中包含的功能/“版本”?
以下是我们在开发过程中如何处理这个特定问题:
- 首先,我们制定了定期发布时间表:每月内部发布和每季度外部发布。这个时间表永远不会改变,但任务分配/功能完成会改变。这对于简化我们的人际交流非常重要:不要试图与日历争论。
- 主要功能(在您的示例中为“10 个新功能”)被转换为案例(例如,案例 101 到案例 110)。
- 作为主要功能的子组件的每个任务也被创建为一个子案例,其中描述了是什么使这部分工作成为大图的重要组成部分。以前,在 Fogbugz 6 中,我们通过允许它为我们搜索文本来使用“另见”功能(例如,“这是案例 101 的子组件”)。这实际上是同一件事,但不那么美观。
- 现在我们已经将工作分解为最有用的级别,我们将实际的开发人员带入讨论。每个任务和主要功能都单独分配给特定的开发人员。
- 开发人员通过选择他们认为可以承诺的适当内部发布日期来确定他们何时可以完成分配的工作。
- 在这一点上,我们对每个版本将完成的工作有了一个粗略的草图。随着工作人员实际估计他们完成工作所需的时间、启用基于证据的调度等,进一步的改进仍在继续。
不过,对于 AviD 的问题,他将通过上面的第 5 步解决发布分配问题。
但是,我认为第 6 点是最有趣的,因为这是您真正获得稳定时间表的地方。例如,如果开发人员在估计更大的任务时遇到困难,他们会进一步将其分解为子案例。请注意,我对“最佳有用性”的评估与真正需要完成工作的人有什么不同(可能有很大差异)。
这也是开发人员可以联系其他人并说“我可以完成大部分工作,但如果 X 可以帮助我完成这个小部分 Y,那将真的很有帮助。” 这实际上是我完成大部分开发任务的地方:在这个过程中,我个人坐在多个地方,从大型计划会议到其他人没有时间做的小任务。
PS:将这个答案的评分高于乔尔的评分作为个人目标.... ;-)
PPS:我最初的反应现在被事件所克服,因为 Fogbugz 7 有可爱的子任务。项目经理喜欢这些报告。