周三下午拿到《Scrum敏捷软件开发》,周五晚上十一点看完最后一章,联想起自己的项目经历,不禁产生很多的感触,对于作者的观点大部分是深有体会而赞同,有些也是不以为然的。又想起前端时间陈皓翻译的那篇《为什么Scrum不行》,这里系统的说说自己对Scrum、敏捷的看法,也作为对这本书的书评,如无特殊说明,下面的例子都是自己的经历。
软件开发的四个维度:人、过程、产品和技术。
一、人
关于人,最著名的书就是《人件》,我们都对这么一句话不会陌生:具有不同深度和广度的开发人员的生产效率差异能够超过10:1。但另外一个统计同样不能忽视:具有相同水平经验的开发人员的生产效率差异同样能够达到10:1。
人的因素包括了人的激励、团队的组织结构、团队成员的选择、团队合作和培训等等。
很清楚,人件极大地影响着生产效率,它也应该排在过程、产品、技术之前进行考虑。但是,这只是表明个体能力、个体激励、团队能力和团队激励的作用大于其他因素,并不是说一个团队只要有了T恤衫、免费的碳酸饮料、有窗户的办公室、游戏机和漂亮的测试MM就能达到激励的目的,这只是必要而非充分条件。真正的激励来自于项目进行中。
二、过程
关于过程,包括了管理和技术两部分。包括了项目的计划(项目生命周期模型,迭代开发是其中一种)、跟踪、度量、质量保障、风险管理等方面。
有些人认为注重过程会让工作变得呆板和效率低下,存在这样的现象。但过程滥用最常见的现象是忽略过程。
三、产品
关于产品,包括了产品规模(需求范围)和产品特性(非功能性需求、性能、稳定性、可靠性)。
注意到对产品规模和产品特性的关注,意味着巨大的缩短开发时间的机会。合理消减产品功能,能够缩短产品的开发周期。这里面存在2/8原则。
四、技术
关于技术,其基本原则包括了需求管理、系统设计、系统构建和配置管理。具体内容则包括了实现技术栈的选择,开发语言的选择、开发平台的选择、框架的选择、开发工具的选择等等。
先来看人
一、人员角色
Scrum团队有两个重要的角色,分别是教练(迭代经理)和产品负责人,一个对内,一个即对内也对外。对于教练,他的职责是为团队提供一个好的不被过分打扰的工作环境,促进团队的持续改进。这谁都明白,最重要的是他的权力不能超过开发流程的范围,他不能跨过流程为团队做决定。
在我经历过的两个项目里,技术出身的迭代经理都有替程序员做决定的习惯。一个迭代经理审核每个程序员的设计,另外一个迭代经理每天站会结束后都会花上很多时间和程序员探讨故事实现的具体细节并提出自己的观点。
迭代经理做决定的行为实际上表达的是对团队的不信任,不可避免,他们的行为不管最初出于什么样的良好愿望,最后都会影响团队的积极性。在后一个项目里,甚至有程序员站起来递过键盘对迭代经理说,好吧,你来实现。
迭代经理不能越界并不是说他不能施加影响,他的影响应该是间接的。
至于产品负责人,他的存在除去产品需求,最重要的一点在于确保产品的方向、需求只能有一个人做决定。
在我曾经的一家公司里,有四个股东,所有事情都要集体讨论做决定。当我老婆第一次听说我们公司的组织结构时,她笑了,说,你们公司注定是小公司的命。
在我曾经的一个项目里,客户产品经理和客户运维团队为需求争论不休,没有一个一致和统一的产品发展方向,导致了大量的浪费。
二、团队规模
在经典的管理学书籍里,一个人能够直接有效管理的人不能超过5人,当然随着流程标准化的进行,这个数目已经大大扩张。在以非正式沟通为主的开发团队里,5人的标准依旧适用,一个5-7人的小团队是合适的,小团队的优点在于减少沟通协调,促进凝聚力。
在一个项目后期里,当人员由最初的8人扩展到14人后,每日站会的时间大大延长,每个人都不知道别人在说些什么,说话的人太多就失去焦点了。
但是正如1个人不能完成阿波罗登月一样,小团队的问题在于尽管生产率提高但总的产出不够。对很多项目来说,大团队不可避免,关键在于对大团队的拆分,将大团队拆分成很多的小团队,至于这些团队间的协调有多种方法,成本最低的莫过于对系统进行合适的分解,典型的如现在的新浪微博平台,第三方插件开发商和新浪微博团队是完全解耦的,系统分解的目的在于尽量减少小团队之间的交互沟通。管理上的方法则包括了组建系统集成团队,团队之间的人员流动等。
三、特性团队还是组件团队
Scrum提倡特性团队,而我感触最深的却是特性驱动开发。
在一个工作流产品的开发里,我采用的是分层开发,最开始团队的精力全部放在工作流引擎的开发上,管理控制台、集成组件、设计器的开发任务被放置在引擎完成之后。结果因为迟迟无法向公司提供可以演示的版本以反映进度再加上公司资金紧张,导致项目的取消。团队所有人都感到可惜,因为那是我们感到得意的引擎,它支持了全部的21种工作流模式。
只要有可能,就应该组建特性团队,而不是组件团队。这是书中的观点,我的观点和其有些不同,我的观点是,如果是项目级别,那么毫无疑问,应该组建特性团队,但是上升到公司级别,则必须做到组件沉淀和积累。
作为一个正面的例子,在曾经一家公司里,因为协同办公业务平台的存在,基本上所有协同办公项目的实施都控制在3个月左右。当然,这个平台是在公司很多项目基础上的抽象和积累,平台团队的人员同时也参与项目的开发。
作为一个反面的例子,另一家公司里,团队成员为一个个技术问题争论不休,甚至一个分页组件都要重写两遍,产生了很多的浪费。公司没有注意到技术公共部分的积累。精益里一个重要的原则-标准化被有意忽视了。
四、团队协作
五、全功能团队
六、不要分布式团队
过程
一、估算
二、计划
三、文档
四、迭代式项目生命周期
五、质量
六、风险
产品
一、简化项目是成功的唯一出路
二、多团队同一个任务列表
技术
一、测试驱动开发
二、重构
三、集体所有权
四、持续集成
五、结对
六、简单设计与过度设计
分享到:
相关推荐
1. **敏捷的核心价值观**:敏捷宣言提出了四个核心价值观,其中一个就是“个体与互动高于流程与工具”。题目中的正确答案B反映了这一价值观。 - **知识点扩展**:除了此价值观外,还包括“可工作的软件高于详尽的...
Scrum 教材总结 Scrum 是一种敏捷开发框架,对于软件开发和项目管理非常重要。本文将对 Scrum 的起源、Scrum 模型、Scrum 框架、现状和为什么会失败等方面进行详细的介绍。 一、Scrum 起源 Scrum 的 idea 来自于 ...
"Scrum专业Scrum Master II题库" Scrum是一种敏捷项目管理方法,旨在帮助团队更好地协作、更快速地交付价值。Scrum Master扮演着关键角色,是Scrum团队的 facilitator、 coach和servant leader。Scrum Master负责...
1. **Product Owner**(产品负责人):负责维护和优先级排序产品的Product Backlog,这是一个包含所有待处理工作项的列表,用于解决复杂问题。Product Owner确保Backlog反映了业务价值和需求,并与各方利益相关者...
scrum及常见问题 ,scrum及常见问题处理解决办法等等
1. **高效地处理变化的需求**:通过采用Scrum,企业可以更灵活地应对客户需求的变化,并保持产品的竞争力。 2. **增强设计师的动机**:Scrum鼓励团队成员之间的协作与沟通,从而提高成员的工作积极性和满意度。 ...
##### 1. 实施背景 - **当前状况**:企业内部可能存在一些部门或团队已经在使用 Scrum,并且这些团队相较于其他部门表现得更为高效。 - **目标**:希望通过在整个企业范围内推广 Scrum,使整个组织变得更加高效。 ...
1. Sprint(冲刺):是Scrum的基本工作单元,通常为1到4周,用于完成一定量的工作。 2. Sprint计划会议:在Sprint开始时举行,确定在该Sprint中将完成哪些工作项。 3. 每日Scrum站会:每天举行,团队成员相互同步...
1. **看板**:Scrum看板是Scrum的核心工具,用于可视化工作流程。Redmine的Scrum组件提供了看板视图,团队成员可以在这里拖放任务卡片,表示任务的状态(如“待办”、“进行中”、“已完成”)。 2. **冲刺(Sprint...
1. 一名 Product Owner 将解决复杂问题所需的工作整理成一份 Product Backlog。 2. Scrum Team 在 一个 Sprint 期间将选择的工作转化为价值的 Increment。 3. Scrum Team 和利益攸关者检视结果并为下一个 Sprint ...
1. **Scrum团队**: - **产品负责人(Product Owner)**:负责定义产品需求并确定优先级。 - **Scrum Master**:负责确保团队遵循Scrum的原则和实践,帮助解决障碍。 - **开发团队(Development Team)**:负责实际的...
### Scrum知识体系详解 #### 一、Scrum概述与必要性 Scrum是一种轻量级的敏捷项目管理框架,旨在帮助团队高效地管理和交付高质量的产品。它通过一系列明确的角色、活动和工件来实现这一目标。在传统项目管理方法中...
This book covers the nuts and bolts of scrum—its framework, roles, team structures, ceremonies, and artifacts—from the scrum master’s perspective.The Art of Scrum details the scum master’s ...
1. **角色**:Scrum团队包括产品负责人(Product Owner),负责管理产品待办事项列表(Product Backlog)并代表客户需求;ScrumMaster,确保Scrum规则得到遵循并帮助团队消除障碍;以及开发团队,自组织并负责构建...
1. **产品负责人(Product Owner)** - 负责项目的投资回报率(ROI),是产品愿景的持有者。 - 不断优先级排序产品待办事项列表(Product Backlog),并根据实际情况调整发布计划。 - 在Sprint评审会议中,决定哪些工作...
这意味着Scrum看起来简单,但在实践中需要不断地学习和调整,以达到最佳效果。Scrum框架的应用始于上世纪90年代初期,起初主要用于管理复杂产品的开发工作,但其适用范围远不止于此。 Scrum框架中的关键角色包括...
Scrum 讲座讲解如何应用scrum的流程, Scrum 讲座讲解如何应用scrum的流程