敏捷开发有 4 种价值 和 12个原则
---------------价值-----------------------------
自然之路的原则: 尽早提供价值,经常提供价值(必须以创造价值为中心,而且价值必须是可见的)
一种观察软件开发过程的方法
价值就是那些我们想要的东西.
当软件发布时,它的价值才能体现cuiyaonan2000@163.com
价值实现后,要确保价值的正确性,就会验证价值.
最大价值(项目整体),最小价值(最小可市场功能特性)
一个软件产品应用的20/80 法则.(在计划时间里不可能得到所有想要的功能特性.)
每个人想要的功能特性都不同,但肯定没有人想要所有的功能特性
根据功能特性划分价值(假设功能特性,高度代表价值,宽度代表成本.能够很好的展示出功能的重要性)
价值最大化就是频繁交付小的,以价值为中心的功能特性
---------------价值-----------------------------
-------------------------根据功能特性 ----- 指导------------------
我们所得到的肯定要少于我们想要的.毕竟,我们想要实现所有的功能.
事实上,我们并不能实现所有的功能特性,我们需要正视这一事实,并进行相应的管理.而不是直至不理.同时需要对项目进行引导,而不
任由它发展.
我们想要的超出了我们的能力范围.这也是目标的本质.
我们以全有,或者全无来制定项目计划,视图去设计所有的功能特性,这使我们处于不利的境地.遇到问题后我们没有时间去改变,问题的暴露也只能在项目后期才能体现,前期毫无预警.且在后期的开发过程中,不能灵活调整.cuiyaonan2000@163.com
根据功能特性交付,使项目更具有可预见性(对比原始开发模式的图,和根据功能特性交付的图.可一眼看出差距)
-------------------------根据功能特性 ----- 指导------------------
---------------------------根据功能特性----组织-------------------
功能特性团队中,需要有一个 负责构建产品推动人
在构建功能特性团队过程中,肯定会有很多问题,比如不同功能特性团队之间的相互协调.可能会让开发进度变慢.这是一个过程,前期是个磨合的过程.但是只要功能特性团队在朝着好的方向发展,最终一个团队是能构建好的.(组建兴趣小组&实践社区 我很怀疑)cuiyaonan2000@163.com
关于我们并没有足够多的有经验的人(后端,前端,测试,ui交互):根据功能特优先级分配(组建兴趣小组&实践社区 我很怀疑)
组建实践社区:将原属于不同 功能构建团队的 开发 测试 交互,按照职责类型组成一个小组,由高级开发负责带领.
---------------------------根据功能特性----组织-------------------
---------------------------根据功能特性----计划-------------------
产品的愿景总是以伟大的想法开始,虽然朦胧却很诱人.愿景是产品的大思路,而不是小的功能特性.
计划本身是无用的,但做计划是必要的
(的确需要做计划,但并不需要详细列出一张什么时候发生事情的清单.我们可以在事情发生后在去做计划.太细的计划只能浪费时间)
尽早确定哪些核心功能特性必须尽快有,哪些功能特性不能没有
做计划能在仔细考虑了很多不好的想法后,我们才能得到几个不错的想法.
计划内容: A确定项目的时间期限和开支预算 B优先开发最有价值的功能特性 C确保产品能够随时发布,并在结束时间停止
A确定项目总体预算与截至日期 B找到一位产品推动人来决定功能特性的开发顺序, C组建一个能随时交付的团队
迭代/冲刺 大故事>小故事>任务(大产品>小产品)
团队工作量根据方法"昨日天气(yesterday's weather)"
将功能特性一直拆分到具有独立测试价值的故事.cuiyaonan2000@163.com
无论从商业角度还是管理角度,要获得最好的结果,需要明确各项工作是按时完成还是推迟进行.
每个迭代 不能吃的太多
在不进行估算的情况下进行估算:一般来说估算结果很可能是错误的.如果想认真的估算,一般来说都会很保守.且我们会把注意力集中在成本上,而忽略了价值.cuiyaonan2000@163.com
---------------------------根据功能特性----计划-------------------
---------------------------根据功能特性----构建产品-------------------
在一个短周期内,完整的构建一个小的产品
(在每个周期内,确定需要完成哪些功能特性,并清楚地说明如何测试它们,每一个迭代都是一个学习,
学习如何估算工作量,学习如何检查任务是否完成了.还能学习代码设计的能力)
细化产品愿望: 我们需要相信业务团队能够弄清楚他们到底需要什么.
总是将价值可能最大的任务列为下一个目标
每个迭代必须修复所有的缺陷
---------------------------根据功能特性----构建产品-------------------
---------------------------同时构建功能特性与基础-------------------
理想状态是在 交付的时候我们能够完成所有的功能特性
A: 基础优先意味着能够进入市场的功能特性减少(延缓项目进展的同时,减少产品价值)
B: 在构建功能特性的同时构建相关的基础还是(将功能特性做到极致是错误的.可能并满足需求,切回浪费时间)
C: 首先构建简单而使用的版本,在多次迭代中不断完善每个功能特性(最小可行产品)cuiyaonan2000@163.com
如何选择功能特性的最佳组合需要考验 产品推动人的能力.以期满足随时都能够发布一个可用的产品.
---------------------------同时构建功能特性与基础-------------------
---------------------------零缺陷与良好的设计---------------------------
产品构建是在不断发展和变化的设计基础上,由数量不断增长,能够正确运行的功能特性组成.
需要及时了解 哪些功能特性已经完成,且完成的质量怎么样.
因为功能特性是逐渐增加和完善的,同时设计也是逐渐改进的.
若不能保持设计处于良好的状态,轻则影响项目进度,重则导致项目失败.(如果放任设计退化,项目进度肯定会变慢)
2个层面的测试:业务测试,开发测试
测试不但会减慢开发速度,发而使其变得更快.(减少错误,同时使错误更快地被发现)
好的设计,就是对相应的扩展更容易.
软件开发的本质就是要求我们进行测试和重构.
---------------------------零缺陷与良好的设计---------------------------
--------------------------如何衡量价值-----------------------
敏捷要求我们基于价值决定做事情的先后顺序.
选择价值就是选择对我们重要的东西,所谓价值就是我们想要的东西.
价值是 对客户有用 或者 在商业上有用 等角度考虑我们看重的东西.
为什么不要根据数据进行决策:
A首先我们并非真的知道数据
B其次,大的差别很重要,小的差别不重要 cuiyaonan2000@163.com
C最后不同类型的价值不具可比性(不同时期的价值取向不一样)
--------------------------如何衡量价值-----------------------
--------------------------如何让软件真正运行-------------------
如何尽快的开发一个软件:
A专注于我们看中的东西
B不时地开发出真正的软件
C逐步构建我们想要的产品
D学习需要的计划,管理以及技术方面的能力
--------------------------如何让软件真正运行-------------------
--------------------------组建强大的团队------------------------
请求管理人员确保团队成员知道要做什么,然后让他们自己去搞清楚怎么做.
自主,专精,目的 为提高员工满意度和工作效率的三大驱动力.
--------------------------组建强大的团队------------------------
-----------------------------使用五卡法进行初步的预测--------------------
第一步:列出三到五个最重要的 "史诗级" 组成部分.用一句话描述
第二步:将第一步的卡片模块细化到三至五张更小的卡片上.使每一张片的内容更具体,更明确,范围更小
第三步:重复第二步知道确定最后的卡片,团队成员能在一周内完成.
-----------------------------使用五卡法进行初步的预测--------------------
------------------------------管理的五大要素----------------------
计划,组织,人员配备,领导,控制(传统的的,敏捷全靠自主~~~~~高效的团队才行)
敏捷: 授权 的重要性(自主,专精,目的)
以结果为导向评价工作的好坏.
不要以培训,监督等手段 促使员工更加努力的工作(自主,专精,目的)
------------------------------管理的五大要素----------------------