提高软件开发生产力的秘方

http://tech.ddvip.com   2008年01月22日    社区交流

内容摘要:在所有的软件开发项目中,存在一种共通的东西,需要经常地花时间反省和学习。学什么?一切:成员彼此、技术、问题域、客户,等等。学得快的团队才会成为赢家。本文将详细分析这种困扰团队表现的看不见的“学习瓶颈”。

  ◆回顾(Retrospective):1)决定一种团队工作的方式,2)在一次迭代中运用这种方式,3)反省该实践的效果,4)采取行动,规定负责人和期限,以图创造一种更有效的过程,并实现它们。

  ◆发布:1)为本次发布设立愿景和要达成的商业目标。2)设立本次发布要交付的工作(Backlog),3)为本次发布进行若干迭代,4)部署给客户,并为下一次发布收集反馈。

  ◆协作小组的协作小组(Scrum of Scrums):在同时应付多个项目的情况下,每个项目都有自己独立运作的循环,同时又通过定期的会议保持同步——即协作小组的协作小组(Scrum of Scrums)——在会议上每个项目的代表向其他人报告,以便从企业的层次上识别和应对变化。

  ◆管理测试:1)与产品所有者或者业务的利益相关方一起,从较高的层次上定义他们如何测量一个项目或者发布是否成功,2)保持这些“测试”对开发团队清晰可见,以便他们的交付能达到这些期望,3)把管理测试的评估过程整合进回顾(Retrospective)过程,4)团队与产品所有者一起将这些测试分配到每次迭代。

  这些循环中许多都可以彼此契合。测试驱动需求包含若干测试驱动开发循环。一次迭代包含若干测试驱动需求的循环。一次发布又包含若干次迭代,诸如此类……

  更进一步,这些循环是彼此牵动的——实际上每当发生学习过程而否定了更高一级的循环,即是这些循环在持续不断地牵动彼此。测试驱动开发的循环嵌套在测试驱动需求当中`——即是说对于每项需求,要有若干测试驱动开发的循环来满足它。因此,举例来说,一个失败的测试可能意味着编码的错误,也可能意味着正在实现的需求本身并不正确,或者之前的另一项需求应该被否定。因此在测试驱动开发循环中的学习过程引发了对需求的学习过程。类似地,迭代循环嵌套在发布循环中。因此,由于无法预见的技术障碍而无法达成目标的一次迭代 ,会导致系统的一个重要部分所需的工作量大大上升。于是团队会变更部署,重新考虑这次发布要交付的工作,重新调整优先次序和目标范围来迎合新的信息。

来源:InfoQ中文站    作者:郭晓刚    责编:豆豆技术应用

正在加载评论...