谈谈敏捷开发

发布时间:2026/7/2 2:54:01
谈谈敏捷开发 我对敏捷开发是源于10多年前看了一本关于迭代开发的书从而对迭代开发有了一些兴趣。从那时开始有了迭代开发的概念。随着项目经验的增加迭代的重要性也越发觉得明显。随后进入了提倡敏捷开发的公司被迫式的接触了许多“敏捷开发”随着项目经历越来越多慢慢的就开始有了更新的认识和想法。但是在接触敏捷开发这个体系之前自己有机会做一个项目那个时候我开始将自己认为更有利于项目的管理工作做了一些应用那个阶段我的主要做法是1、项目中开始划分更短的制品交互周期而不是以前那样等待产品开发完毕后发布各种测试版本。2、更充分与市场人员交流在市场人员进行需求交底时让更多的甚至全体成员参与会议了解产品的原始业务及需求。并且在过程中有问题也及时的解答及沟通。3、加强沟通力度开发测试都在一起每天都会开个小会通报每日的工作成果将自己的问题说出来。4、不同以往的发布频率测试从项目开始便要切入到产品生产过程而不是等到最后所有功能都完成后。从而大大减少变动对计划的影响。在做这些工作的时候我并不知道敏捷开发这个东西直到在2010年进入一个公司非常提倡敏捷开发已经有了迭代周期、backlog、站立会议、周例会等等在这个团队中对开发过程有各种规章要求完全是制度化的这在我加入的初期非常的不适应。事实上回头想想那种方式已经变的不敏捷了完全是一种教条式的应用。后来自己有机会回到了老东家开始自己带团队很巧老东家被收购后开始推广敏捷开发只不过因为不是总部所以这次没有范本完全由我自己来组织及控制。很高兴这个小团队几个月下来个人觉得比较成功当然后面也得到了公司的认可。下面就敏捷开发分享一些应该着重注意的点解决这些问题我想对任何开发团队都会有很大的帮助。需求在开发中的重要性大量的开发过程告诉我需求在软件开发过程中是极其重要的。传统的开发强调初期的需求调研及需要分析这个过程对于一些正规的团队会产生大量的文档而后交由开发展开产品生产。然而事实却不是想象这么简单无数的例子说明了一点仅仅在需求调研过程中了解到的需求是无法保证的。数不清的例子告诉我们需求是会变的变的原因很多。在极端的情况下有些客户签字的需求在开发完后有需要变更也很正常。所以需求是影响软件开发的第一重要因素需求来源于业务我们开发的产品不就是因为这些业务才去做的吗如何需求都无法把握好还谈什么开发出好用的产品然而如何做好需求呢我想首先要确立需求的地位然后只有通过不断的沟通、尝试、反馈向真实需求迈进。强调人与人的交流不管怎么样开发过程中主要还是靠人的而且软件开发是个复杂的团体工程一个小些的产品也会涉及到各类人客户、业务分析、管理人员、程序员、测试员等等。这么多人在一起做事情有一方没有处理好结果肯定就会有问题。有这样一个例子客户提出了一个会员管理功能需求需求人员了解后组织了解决方案于是交付了开发实现。而经过二个月无尽的黑夜之后交付需求一看有个模块做的有偏差但是已经来不及修改了。交给客户看后发现这不是他们要的会员管理功能相差较大另外在功能开发的这一段时间客户又有了新想法要对原先需求做调整。这种例子可能大家经常经历吧这种问题在敏捷开发方法中提出了解决方法就是通过不断的交付可用的制品。看起来很抽象其实很简单。同样是上面的例子Ø 客户提出会员管理功能需求Ø 需求人员在了解需求后与开发负责人商量确定一个快迭代的开发计划每二周向客户演示一次并将这个计划与客户确认Ø 确认后需求人员向全体成员讲解需求背景故事Ø 开发负责人组织并确定迭代计划内容明确每个迭代提交的产品目标、开发任务安排、测试跟踪计划Ø 每个迭代过程中都由需求及测试进行确认每个任务的实现结果是否跑偏Ø 后面就是每二周向客户演示一次产品并获得客户的反馈Ø 根据客户的反馈调整下个迭代计划并继续下一个迭代Ø 直到产品交付通过上面的步骤就不至于在开发完成后才知道用户的真实想法因为很多用户对软件开发是没有概念的他只知道自己有某种需求但最开始是没有一个完整的概念的。所以就要通过不断的让用户看到产品的模型这个过程用户才会逐步的对产品产生概念。同样的在过程中客户的提出需求变更也是在一定的可控制范围之内这样一来可以大大的减少软件返工的情况自然就不会拖延计划了。而这个过程中需求已经完成了一个真正的过渡不再是一头重的情况了。他让需求从客户那快速的反馈到开发团队中。同样的在开发不断的交付制品时需求也更加及时的了解到产品的进度把握开发人员开发的功能是否符合需求。当然这并不是一个标准做法不同的团队可以有不同的处理方式。这里只是想强调需求需要更多的投入到开发过程中去及时的与客户沟通交流了解到客户的真实想法。强调文档的作用我觉得很多对敏捷开发的一个误解就是不需要文档敏捷开发并未抛弃文档。只是更强调更有效的方式使用文档。在很多传统开发方法中特别是很多很正规的开发团队对文档的要求非常苛刻。然而事实是文档不易管理最痛苦的是不好维护文档需要随着变化而变化比如需求调整、技术架构升级、产品维护等等。如果要保证文档的一致性太难了。特别是对于一些无法进行有效管理的开发团队就更加明显经常是软件已经几个版本了文档却是两年前的。但敏捷真的不需要文档吗我想不是的如何把文档做到好维护我想才是最重要的。文档到底指的指的什么什么样的算文档提出上面两个问题我们先想想经常说的文档的作用是什么不就是一个传播工具吗可以用作记录、给他人看、用于以后查看。有很多方法可就解决了这个问题比如wiki系统。维护一个wiki系统可以随时写随时维护可以方便的查找。嗯多方便。另外一个问题就是什么样的工作需要形成文档呢记得在前一家公司维护一个10多年的老系统修改一个公式计算的BUG但是怎么也不知道这个复杂的公式是什么意思问过了公司大部分的人也无人可解。这时想如果当初有那么一份文档谢天谢地。像这种关键的内容有份文档还是很重要的否则随着时间推移谁也不能保证能记得住当时为什么会这么干。记得多年前一次记笔记的经历我看了一篇文章了解了DELPHI实现单实例模式的方法这种方法很酷。于是整理成了笔记写在了wiki上第二天就得到了回复帮助到了别外产品开发组的同事。嗯文档就是这样他具有传播性你不可能跑去跟所有人说出你的想法但是文档却更容易达成。他也有传承性有些文档也许10多年后又起了重要作用。团队协作1、减少对开发人员的干扰曾经接手一个产品的开发最初遇到一个很头痛的问题原先写好的迭代计划而且工作量也较大大家都在忙着。即便在这样的状态下客服人员却经常跑来找某个程序员A维护各种系统问题程序员A在一次维护中竟然导致了系统数据出现大面积错误。程序员A心理上承受着巨大的压力而每天的这些问题又不得不解决加之新版本又有很重的开发任务无法完成最终导致整个开发计划变更。我无法再忍受找到了需求及客服的负责人沟通后发现这些问题很多都是重复性的主要是因为原先系统的不足。于是回去组织人员做了几个后台临时功能并交付给了客服人员之后就没有再来找过这位程序员A。后续我又找到了客服负责人要求不能直接找开发人员解决这类问题并与负责人约定了处理过程。这是个例子在实际情况中还有很多这种事情甚至有很多开发人员要直接面对客户。我想对于职能型团队来说开发团队最好是减少这些方面的干忧。当然对于一个人包干的情况就不讨论了。大部分的人都不是超人在一个时间段内处理超出自己负荷的工作是很难做好保质保量的。所以对于开发管理人员一定要考虑到这点尽量让开发人员有比较好的工作进度环境通过外界的方式来解决一些开发团队的干扰。我接触过的很多程序员都很反感这种干扰虽然有些人在这种全面的工作强度下成长很快但是并非所有人都适应长期下来会有怨恨和不快工作效率会下降。心情舒畅还是很重要的记得有一次迭代总结时有个程序员总结说发现心情舒畅自己的工作效率很高。呵呵。我想你也有同感吧。