敏捷开发是互联网行业非常流行的一个词汇,它听起来是一个对开发团队管理的方法,而实际上是对团队的系统性要求,更是一种世界观的反映。
敏捷项目中的核心就是迭代,在一周至二周内选取客户最重要的事,然后将其转化为可运行的、测试过的软件。
敏捷故事传统的瀑布式开发方法,从需求定义开始,一个环节做完交付到下一个环节。而敏捷开发以拥抱变化为出发点,一次迭代做几个 user story 。在不断敏捷迭代的过程中,对于系统架构的调整和挑战,更需要有前瞻性的技术栈选择、系统架构设计。它对管理者、对团队成员的基本素质、专业素质提出了比传统瀑布式开发更高一个lever的要求。
一、为什么要敏捷
敏捷的前提是有一个假设:需求不会在项目初期完全搜集到;需求会发生变化;总会有任务超时、超支。总而言之,这是一个不确定的世界,亦没有一个预言者能完全预知未来,唯有把握当下。
那么基于这样三个假设,如何做才能效率最高呢?把精力集中在已经比较确定的、优先级最高的小的功能上,每一次交付出一些可用的功能,也就是敏捷开发。
二、敏捷组织
敏捷开发听起来是一个对开发团队管理方法,而实际上更是对团队的要求。对于组织者要求很高,需要打造一个扁平化的管理组织、组织成员之间信息传递、信任关系无障碍;在技术栈的选择上,更需要具备前瞻性,随时跟根据需求调整系统设计。对于团队中的成员,每个人承担的是更加多样化的职能,需要有更加强烈的主人翁意识,人人都是需求设计者、QA 、全栈工程师,群策群力一起打造全过程。已经习惯于传统工作方式的员工,加入敏捷开发团队会有巨大的不适应,对于组织者也是巨大的挑战。
1、团队的沟通是完全无障碍,信息共享,无座位的头衔和角色。每个角色除了传统的本职工作之外,还愿意主动承担其它的职能,如QA职能,全员都是QA角色。在群策群力的阶段,大家都能主动建言献策。
2、团队成员被充分授权。自己确定工作优先级、工作计划、并对最终结果负责。
3、需要构筑团队成员强烈的责任感。有成果交付的阶段。
4、全栈工程师的目标。团队成员有强烈的不断扩充自己专业领域的愿望,逐步拓展为全栈工程师。
三、如何开始一个敏捷开发周期
最开始需要明确项目的基本原则,让团队有决策依据。正式开始一个敏捷开发周期之前,需要团队成员内部经过充分的讨论,对于纳入本次敏捷开的 user story ,本次冲刺的目标,时间计划等有细致的沟通,团队内部达成一致之后,再开展工作。
1、尖锐的开始。在决定做一件事情之前,需要反复的问为什么要做这样事?目标是什么?为什么不换个方式来做?只有经过反复论证的需求、被团队接受和认可的需求,才排入 to do list 。
2、简约的过程。确定项目的基本原则,简约,让后续的决策过程简单清晰。
3、熟悉和了解公司的规章制度。了解团队与其它团队必要的交互和方式,排入整体计划中。
4、范围、预算、时间、质量 四个要素,需要整体考虑。
四、如何搜集 user story
从接收到客户需求到需求分析,需要先规划处业务流程图,从业务流程中梳理出较为完成的 user story 。不着急落笔成文档,而是在梳理业务流程的过程中,将各个环节的要素理清楚。思想在前,下笔如有神。
1、抓住主要的业务流程。
2、业务流程梳理的过程中,需要与客户反复沟通。尝试举办需求评审。
五、安排开发计划与执行
需求开发计划的执行是需求落地的一环,合作、共识、总结、改进,无论团队和个人,在一次次迭代中不断进步。
1、按照优先级排列,明确本次迭代的目标。需求侧,要有明确的优先级排列。
2、工作的过程中尽量减少不必要的工作,简洁简洁再简洁。
3、估算工作量、估算时间,且尽量按照计划执行。
4、在每个成员的工作过程中,遇到困难,要寻求帮助。以 team 的方式作战。
5、不断在每次迭代中总结反馈,进步。敏捷开发是对团队成员和管理者的考验,不会一次就做的很好,二是需要在不断的实践中总结,提炼出经验教训,找到适合团队的工作防范。
6、20% 的精力偿还技术债务、重构代码。整个系统架构不断优化进步。也就是说,敏捷开发的技术框架实在不断调整中形成的,而不是一开始就完全策划出来的。
文章摘自同事
网友评论