软件开发中反馈的重要性

[原文发表地址] The Importance of Feedback in Software Development

[原文发表时间] 21 Jun 2011 5:29 AM

如果你经常看我的博客,你会发现我谈了很多协作的概念,以及它对现代软件项目的成功和失败的影响。 我最近发表了一篇关于AgileProject Management的文章。文章的末尾我简单的提到了,在下一个发布中,我们会把反馈循环作为一个主要举措。这里我略带介绍一下。

让我们看看Agile开发宣言:

个人与互动胜过流程和工具

有效的软件胜过面面俱到的文档

与客户的协作胜过合同谈判

响应变化胜过遵循计划

我认为,这些箴言中的每一条都涉及到了反馈,推动交互和反馈对Agile的信用来说是非常重要的。如果你更深入地研究Agile软件的12条原则,你也会在其中看到反馈信息的作用。反馈能够帮助你理清你的理解。反馈让你用全新的方式看待事情。反馈能帮助你纠正行动。反馈可以帮助你学习。反馈使你和你的工作做得更好。无论你遵循特定的Agile实践与否,及早并经常反馈是变得更成功的一个关键组成部分。

将反馈深入地植入到V.Next 工作中有许多方法。我们正在计划下一次发布,我们也确实开始缩小下一次发布的核心任务的范围。很明显,我们在讨论的过程中很多观点都提到了将反馈作为核心原则。我们紧紧扣住这个话题,使其作为一种共同的原则,并努力使整体效应大于局部效应。我们已经启用了多种形式的反馈。当然,我们还可以做得更多,但就目前来看我们协调的很不错,这不禁让人很振奋。

这个过程中,我们已经逐渐形成了用图形化的方式来谈论一个好的软件开发过程的反馈周期。很明显,这对扩展到包括利益相关者的Scrum周期来说是一个大的进步。我们还有一个版本,其中包括了长期应用生命周期的运作的反馈循环。

这个过程捕获了反馈的大部分结构和一些行为,但我认为还有一点非常重要,那就是你要考虑到底需要哪些反馈。在下一项发布中,我们会重点优化下面几种反馈工作流:

对优先事项的反馈- 我是否建立了你需要的最重要的功能?我是否遵循了正确的顺序?如果没有完成你想要的一切,我是否提供了足够的重要功能来使得该解决方案对你有帮助,因此可以继续下去?这一切都是为了确保利益相关者和团队能够团结起来一起解决如何组织工作和哪些功能将要被交付(用户情景, 愿意的话)。我的前一个帖子中提到过,V.Next 中对这些问题的解决方案就是采取Agile Project Management。它提供了一个基于Web的视图的计划好的工作和进程,方便每个人对具体的细节到粗糙的方案的访问。也很容易调整和试验。真的让优先次序的讨论变容易了。

设计反馈 -软件是否提供了你需要的功能?我是否恰当地抓住了你的需求?这会让客户使用起来更便捷吗?如果我在没有理解你的所需的情况下,转换到一个可以满足你要求的设计,那么即使是世界上最优秀的软件开发人员也不可能做到。我有时会问开发团队:“你们是否曾经按照客户的要求设计,而非按照他们实际需要的来设计”。有不少人使劲点头。这是一个典型的沟通不畅的症状—既没能概念化和交流实际需求,也没有努力验证提出的解决方案。有人说,一图胜过千言万语。在下一次发布中,我们会发布一个故事板工具。使开发团队和利益相关者协作的过程中更方便。并确保在创建用户情景/剧本之前双方能进行一次互信的交流,以便对最终用户的体验以及方案的实施达成共识。

对工作软件的反馈 – 这款软件是否真的做到了我们预期能够做到的事?既然它起作用了,那么解决方案也起作用了吗?我说不清有多少次了我自认为自己设计的东西肯定很棒,只有坐下并使用它才意识到它不能真正地跟我的工作流程紧密结合起来。再回到绘图板(或故事板)进行另一轮的设计。没有什么比坐下来操作软件,然后了解其是否真的“好”更切实际的了。这对采用Agile practices的团队来说是巨大的文化转变之一,也是最重要的转变之一。为了确保设计的合理性,你必须建立在合理的小消耗增量上,并及早的经常性的征求反馈。它能节省你浪费的无数个星期,你可能花了数周的时间来开辟一条路径,但最终却发现走进了死胡同,而通过简单地询问:“你认为我到目前为止做得如何?”,你本可以更早地避免这个局面的。为了帮助解决这个难题,我们在V.Next上创建了很多东西,其中最重要的一款我们称之为“反馈工具”。这款反馈工具和相关联的工作流程让产品负责人/业务分析师/开发主管更容易地向特定的一组用户故事/需求征求软件最新版本的反馈。这样的话,利益相关者可以轻松地审查用户情景和相关故事板。他们可以尝试软件的各项功能,捕捉屏幕截图,并评论他们所看到的。他们可以有选择地截取视频,音频等,并且可以很轻松地在反馈处做好书签以提请注意。所有的这些都被捕获到了反馈工作项中,产品负责人可以利用这些作出任何必要的更新计划。

对代码的反馈 -虽然前3个主要注重建立利益相关者的合作,我们不要忘记,开发人员之间的合作也很重要。代码审查成为建立开发人员间反馈的一个越来越常用的方式。他们可以提供:

  1. 一种新的视角,以确保您不会错过任何东西。
  2. 一种好方法来对代码体中发生的改变保持了解。
  3. 一个好的方法,使您更好的学习代码,并明白变化的原因。

在我们下一项发布中, 我们使代码审查的工作流程变得更优化,更灵活,代码审查的体验也变得更好。它它为它 它为开发人员提供了一个互相学习,日益进步的好方式。

结语

尽早且经常的取得反馈是你成功的重要部分。如果需要组织你的工作的方式,使你能得到反馈,你要保持坦诚,使人们能明白要对什么反馈信息,并结合反馈到工作中,不断变得更好。通过在开发过程中增加迭代和反馈作用,你能够写出更好的软件,使顾客更满意。我认为我们在下一个发布中构建的功能能对你有很大助益。而这只是个开始。我们已经有了一堆更多地关于如何增加反馈系统的丰富性和范围的点子,你可以期待看到我们的继续投入。

Brian