我曾经为之服务的一家公司,由于新项目的特点,也为了在公司的方法论资产做一个积累和提高,并且在详细调研了Scrum方法之后,公司老板作出决定,在E-Notebook项目中,开始采用敏捷开发方法,最近有空将其整理出来,做个留念:
和一开始接触任何事情一样,我先是有个了理论认识,在InfoQ上查阅了很多资料,知道了敏捷的宣言,如何来作,我也在理论上做了很多准备。知道了敏捷会议、敏捷例会、backlog、Sprint,燃尽图等等,并知道了其具体的含义和做法。但是在具体实践当中,还是有各种出乎意料的事情发生,所以也更加加深了对敏捷开放方法论的理解。
1) 一开始,我总是认为在敏捷开发中,不需要做架构设计,所以在给我的组员交代任务时,我们只是进行了针对模块需求和功能的讨论,并采用敏捷方法推荐的方式(每个人对一个故事点的估计)来做了工作量的估计,并制订了backlog和燃尽图(用以跟踪项目进度和进度问题的图表工具)。但是我们开始工作的时候,发现虽然进行了讨论,并达成一致,但是由于每个人的能力不同,对设计和实现细节的理解也不尽相同,造成每个人的工作产出物(代码)在整体结构上的不一致,五花八门的,更要命的是,由于没有事前的统一规划,每个人的实现方式都不一致,为测试和联调带来了麻烦,而且没有统一的规划和设计,如一些系统用的常量,没有放到一个地方,连异常处理的方式都不一样,有的人是往上抛让框架或者最上层去处理,有的人是把异常丢给一个统一的处理器等等,有的地方写了日志逻辑,有的地方没有!一个小组最后在一个sprint中拿出的东西是如此的混乱!在第二个Sprint期间,我们改变了策略,那就是必须进行设计,并形成一定的文档,这样可以减少不一致性,和设计不正确性的可能(每个人的设计都不一样,所以会产生这样的问题),可以减少大家沟通上的成本,有利于模块之间的整合。综上,对于敏捷开发,不是不需要设计的,而是采用较轻的文档,最直接的沟通方式,方便的讨论等等形式来确认设计的,所以说在一个Sprint前期是需要做很多事情的,如设计活动。
2) 我们每次Sprint会议开得都不错,主要是我们对敏捷开发这一块的思想理解比较透彻,
第一, 我们利用Sprint会议达到对需求理解的一致性
第二, 我们利用Sprint会议进行工作量的评估
第三, 对风险的识别
第四, 任务的分配
第五, 对各个功能点的逻辑讨论,并达到一致意见
并且我们每次Sprint结束时(也就是客户认可完成标准时),我们都会开Sprint总结会,并在公司内部建立起一个wiki用来把总结的知识登录上去,以便共享。
3) 我们基本每天开例会,也就是敏捷例会,主要目的是为了了解进度情况,可能出现的问题等等,会去Check每个人昨天完成了什么和今天要做的工作以及遇到的问题。这好像是完整地按照敏捷开发方法论的要求来做,不过在我们实施了一段时间,发现,很多时候流于形式了,这是因为对于一个复杂的工作,一天可能没有啥可以交代的,每天开例会,又给组员增加了压力,因为我每次都会问他完成了什么。后来我们觉得都没有必要每天搞一次,我就根据实际情况来安排例会的频率,有时候一天一次,有时候好几天一次。并及时地去更新燃尽图,并提交给PM。
4) 我们在项目开始前有一个Production backlog,作为一个需求的范围,但是我们在每一个Sprint开始时就是根据Production backlog来制作Sprint backlog,注意这里我们没有打散,
结果是组员对具体要做哪些具体的功能点不清楚,在做RTM时,也无法跟踪到很细的Item,所以大家就不得不化时间讨论一个Backlog point有多少子功能点。后来我们改进了工作方式,那就是在Sprint会议中把Sprint backlog尽量细化到可以操作的地步。
综上,在按照backlog工作时,不是说把故事点列上去就可以了,而是应该关注它的操作性,毕竟Sprint backlog是给内部看的,如果给客户看,那就简化一些就可以了。
5) 我们和客户商量,并按照团队的生产率,制订了2周一次Demo的计划,并事先在Sprint会议上确认了如何演示的问题,并与客户达成一致。但是当到给客户做演示的时候,问题就来了,第一,客户在看完Demo后,改更需求,虽然说这很正常,但是就影响了下一个Sprint的计划,整个进度也受到了影响,我们事先没有考虑这一点,后来我改用每个正常Sprint之间加一个缓冲sprint的做法来解决,并写到项目计划中,使得变更能尽快反映到产品中去。综上,对于Sprint,我们应该灵活对待,应该根据项目特点进行改变使用。
6) 敏捷开发方法提倡很少的文档,当不等于不要文档,文档的目的是为了有效的沟通,我们在第一个Sprint中,没有对关键部分写文档,造成沟通成本较高。所以我们应该正确理解敏捷方法中有关文档得思想!
综上,其实Scrum就是提供了一个方向,方法框架,具体怎么做,还得根据公司的特点,项目的特点,人员的特点,客户的特点来使用,并在一定条件下进行形式的变化。也就是说敏捷的核不变,但是具体的操作形式是可以变的。不能死板硬套,也不能排斥其他的方法论,一个Sprint可以看成一个迷你的传统他软件开发周期(瀑布模型),也不是不要做测试计划,也不是不要使用XP方法(可以看成一种更接近实战的方法,Srucm更加高层一些),结合不同的方法会得到很好的效果。
分享到:
相关推荐
Scrum和Kanban的结合,不仅可以使项目管理更加有序,还可以确保团队资源得到最优配置,并且让团队成员感受到更加公平和透明的绩效评估。这些实践共同促进了IT团队的高效率工作模式,使其能够快速适应不断变化的市场...
综上所述,通过对项目管理中常见的挑战和感受进行深入分析,并结合具体的实践案例,我们可以看到,有效的项目管理不仅能够帮助团队克服难题,还能显著提高项目成功率。通过采用敏捷开发方法,实现产品细分、团队管理...
Scrum是一种敏捷开发框架,主要用于管理复杂的产品开发过程。它强调团队协作、迭代改进和透明度,其中回顾会议(Retrospective)是...同时,这个工具也为开发者提供了一个实践Web应用开发、熟悉Scrum方法论的平台。
6. **项目管理**:在惠普这样的大公司工作,可能涉及敏捷开发流程,如Scrum或Kanban,作者可能分享了这些实践的经验。 7. **代码审查**:在团队环境中,代码审查是常见的一部分,作者可能讨论了如何通过代码审查来...
在敏捷开发中,站立会(Daily Stand-up Meeting,也称为每日 Scrum 或日站会)是一个关键实践,它强调团队的沟通、协作和透明度。站立会通常在 Scrum 框架下实施,是 Scrum 团队日常工作流程的重要组成部分。 1. ...
在实践中,Scrum通过定期的冲刺会议、每日站会和定期的产品评审,保持团队的透明度和高效率。 ### 引入敏捷过程的策略 #### 针对开发者的态度调整 大多数开发者对引入敏捷过程持有适度的怀疑、热情和谨慎乐观的...
4. **UCD (User-Centered Design)**:这是一种以用户需求和体验为中心的设计方法,强调在设计过程中始终关注用户的感受和需求。 5. **UI (User Interface)**:UI设计关注软件的交互性、操作逻辑和视觉美感,旨在...
7. **项目管理**:敏捷方法如Scrum和Kanban在项目管理中的应用,以及项目经理的角色、任务分配、风险管理、进度监控等。 8. **软件质量保证**:涵盖代码审查、静态代码分析、性能测试和安全性评估,以确保软件符合...
4. **软件工程与敏捷开发**:敏捷开发方法论如Scrum和XP(极限编程)在2006年逐渐流行,它们强调迭代和灵活应对变化。这期杂志可能涉及了如何在项目中实施敏捷原则和实践,提升团队效率。 5. **数据库管理**:...
5. **软件工程**:敏捷开发方法(如Scrum和XP)在2006年开始广泛采用,可能有关于如何实施敏捷的教程或实践案例。 6. **编程语言**:C#和.NET平台在这一年也得到快速发展,可能有关于这两个主题的文章,同时,...
描述中的"哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈"虽然看起来像是一串无意义的笑声,但在这里我们可以将其理解为你在实习过程中感受到的轻松氛围或者完成项目后的喜悦心情。实习项目不仅提供了学习机会,还可能带给...
8. **软件工程与项目管理**:敏捷开发方法(如Scrum和XP)可能刚刚兴起,杂志可能介绍了这些方法的优势和实施步骤,以及如何提高团队效率和产品质量。 9. **软件测试与质量保证**:自动化测试工具和策略、缺陷管理...
2. 项目管理工具和方法论:介绍不同的项目管理工具,例如敏捷管理、Scrum、Kanban等,以及它们在项目管理中的应用。 3. 领导力与团队管理:项目经理在领导和管理团队方面需要具备的能力,如何激励团队成员,如何...
2. **软件开发方法论**:敏捷开发理念可能正在崭露头角,杂志可能包含对Scrum或XP等敏捷方法的介绍。 3. **操作系统与平台**:Windows 2000的深入应用和Linux的开源热潮可能会有专题讨论。 4. **数据库技术**:...
书中可能介绍了音频编辑软件的使用,如Audacity或Pro Tools,以及如何创造背景音乐、音效和对话,让玩家在游戏中感受到听觉的盛宴。 项目管理部分会讲述如何有效地组织和协调团队,运用敏捷开发方法,如Scrum或...
4. **考虑用户体验**:设计流程时,需兼顾用户的使用感受,确保流程简单易懂,减少用户的操作负担。 5. **风险评估**:在设计阶段就要预见可能的风险和问题,预先设定应对策略,以增强流程的稳健性。 二、流程优化...
这首诗描绘了夏日里难得的一丝凉意,以及诗人在幽静小院中的体验和感受。 由于这些信息中没有直接提及IT相关知识点,但考虑到可能存在的误解,我会从标题、描述和部分内容中尽可能提取出与IT相关的元素。然而,基于...
例如,通过用户调研、满意度调查等方式获取用户的真实感受,以此为基础调整产品设计或服务流程,确保最终成果能够更好地满足用户需求。 综上所述,虽然这份自查报告并非直接与IT行业相关,但其提出的整改原则和措施...
Bob Jiang,中国北方第一位CST(Certified Scrum Trainer),现任京东敏捷教练、创新教练及金牌讲师。他不仅在敏捷领域拥有深厚的专业背景,还致力于通过自己的努力帮助企业改进工作方法,以实现更高的商业价值。...
《Jiya_v1.0.0.zip:一个个人娱乐项目的编程之旅》 “Jiya_v1.0.0.zip”这个文件名...通过深入探究这个项目,我们可以学习到各种编程语言、开发工具和技术策略,同时也能感受到开发者对编程的热爱和追求乐趣的决心。