[美]Ron Jeffries
价值
80/20 法则:每个人想要的功能特性可能都不相同,但是没有人想要所有的功能特性.
首先推出能够产生价值的功能特性.
引导团队构建不仅对我们有意义,同时对用户也有意义的特性,即, 最小可市场化功能特性
与最小可市场化功能特性相比,在更细的粒度上提供商业方向更能使我们受益.
价值的最大化在于频繁交付小的\以价值为中心的功能特性.
价值是什么
简单地说,价值就是”我们想要的东西”.
所以,在不同的情境下,价值的侧重不同.
如何衡量价值
价值的衡量具有一定的主观性,纯粹以数据衡量价值是不可取的.
- 我们知道的并非真正的数据
- 大的差别很重要,小的差别则并不重要
- 不同类型的价值不具备可比性
你的想法? <==> 数据?
团队协商,达成共识?
Ron 认为,通过数值来表示价值可能会是我们滑入深渊.因为数值往往将多个衡量指标无序地混杂在一起.
同时,他指出 大多数与金钱相关的衡量指标在时间上都落后 .
所有的衡量指标的真正作用都是帮助产品推动人\项目干系人\以及团队成员理解什么是真正的价值.
功能特性
传统软件开发:分析-设计-编码-测试
根据功能特性开发:更加地灵活,更加地高效
这有点类似于敏捷开发,不过以前跟某人交流的时候,他指出国内大部分的公司目前所谓的敏捷开发都只是有形而无实.
组建强大的团队
确保其团队成员知道要做什么,然后让他们自己去搞清楚怎么做
- 目的来源于具体的业务:填鸭式地直接告知解决方法,而不是通过主动思考,整个团队将需要更长的时间获得明确的目标感.
- 自主能够给整个团队带来责任感
- 专精源自迭代过程
一言以蔽之,在自主的专精团队中,每个人都清楚团队的目的.
团队成员的能力波动值太大的话,是灾难性的.
自然开发的管理之道
跨职能团队拥有交付软件的每一个增量版本所需的全部技术与能力,团队成员能够自己进行测试,自己编写文档,所有与软件开发直接相关的事情都可以有他们去做.越是接近这样的理想状态,所需的协作配合就越少.
五大管理要素:
- 计划
- 组织
- 人员配备
- 领导
- 控制
制定计划:
无论是长期计划还是短期计划,核心都是从高价值的功能特性到低价值的功能特性.
管理人员要随时关注计划的进展,同时,高层计划者和管理者要十分清楚项目有哪些功能特性,同时要求产品推动人通过演示实际可用的软件来展现这些功能特性.
计划的根本目的是为了取得更好地结果.so,随时关注价值的变化,并适当地对计划进行调整
自然软件开发的方法倡导将权力授予实际完成工作的人.
放权是一个很艰难的抉择,这需要建立在有足够的信任,或者自己有绝对的权利之上,即,相信他们能够做好,当然,如果最不好,我能有权利把你们开除了.缺一不可.
根据功能特性组织团队
没有足够多的专家? -> 组建实践社区,用现有的专家去培养专家
功能特性团队使得”规模扩展”很容易
很明显再就是暑假时的项目管理模式,将培训与项目结合,并行工作,不过当时的我也不是什么专家,所以组织安排大家学习的结果差强人意.也许收获最大的反而是我?
做计划是必要的
- 项目的时间期限和开始预算
- 优先开发那些最优价值的功能特性
- 确保产品能够随时发布,并在时间结束时立刻停止
详细的计划是无用的
持续计划:分解功能特性
- 团队应该以固定的节奏工作
- 这样的工作周期通常称为”迭代”或”冲刺”,一般为几周
- 每个功能特性最好在两-三天完成
- 承担多少工作?
- 每个迭代周期的工作量根据上个周期来划分
- 重要的不是准确地估计工作量,而是能够以一贯的节奏来完成工作
- 根据”挑战性的目标”制定计划,危害性很大
- 赶工会客整个项目带来更多的缺陷
- 压力具有破坏性,避免向团队施压
- 团队应该以固定的节奏工作
五卡法
这一点暑假就做得很不好,或者说,这是我和涛哥双核驱动模式下的一个必然的恶果.
根据功能特性构建产品
- 在每一个短周期内,完整地构建一个小的产品
- 细化产品愿景
- 总是将价值可能最大的任务列位下一个目标
- 确定真实的进展
- 淘汰测试再修复式的收尾方式
- 随着项目进行,进一步扩展和优化设计
- 设计得太多或者太少都会导致开发缓慢
为了加快开发速度,我们能做的最有价值的事情就是提高团队成员的技能.这一投入很快就能带来以下回报:浪费在修复缺陷上的时间会更少,开发过程会更加流畅.不要将迅猛当作高效.速度最快的团队总是平稳\优雅地前进.
重构
我们需要稳步前进.为此,需要时刻爆出设计的清晰和整洁.为了做到这一点,必须进行重构.
构建一个功能特性所需的时间大致来自以下两个主要方面:
- 它本身固有的难度
- 将它加入现有代码时可能的难度
露营地规则:在离开露营地时,要让它比你来的时候更好.
价值的完整循环
- 我们最终想要的是价值,提供价值的则是功能特性.功能特性发布得越早,我们就能越早提供价值.
- 基于价值的管理比基于时间或工件等不提供价值的事物更胜一筹.
- 根据功能特性做计划很简单,只有正在必要时才进行估算.根据以往完成的工作量来安排下一阶段的工作,效果会更好.
- 采用逐渐增加功能特性的增量式开发方法,要求我们每隔几周就能够开发出小而完整的产品.所开发的产品必须总是能够正常运行,而且其设计也是良好的.
- 开发工作必须要交付真正可用的功能特性.产品必须经过严格的测试,业务人员和开发人员都需要参与其中.同时,产品还必须拥有良好的设计,而且开发人员需要保持产品的设计一直处于良好状态.
后记
梦里不知天在水,满船清梦压星河。