2014-01-02 13:25:21 u013357325 阅读数 4834
  • 精通数据科学:从线性回归到深度学习

    数据科学是一门内涵很广的学科,它涉及到统计分析、机器学习以及计算机科学三方面的知识和技能。本课程将深入浅出、全面系统地介绍了这门学科的内容。通过这门课程,同学可以了解并熟悉如下的开源工具:scikit-learn、statsmodels、TensorFlow、Pyspark等。 本课程分为4个部分,18个章节。 ·             第一部分是最初的3章,主要介绍数据科学想要解决的问题、常用的IT工具Python以及这门学科所涉及的数学基础。 ·             第二部分是第4-7章,主要讨论数据模型,主要包含三方面的内容:一是统计中最经典的线性回归和逻辑回归模型;二是计算机估算模型参数的随机梯度下降法,这是模型工程实现的基础;三是来自计量经济学的启示,主要涉及特征提取的方法以及模型的稳定性。 ·             第三部分是接下来的8-15章,主要讨论算法模型,也就是机器学习领域比较经典的模型。这三章依次讨论了监督式学习、生成式模型以及非监督式学习。 ·             第四部分将覆盖目前数据科学最前沿的两个领域分别是大数据和人工智能。具体来说,第11章将介绍大数据中很重要的分布式机器学习,而最后两章将讨论人工智能领域的神经网络和深度学习。

    3969 人正在学习 去看看 唐亘

计划扑克介绍

所谓“计划扑克”(Planning Poker)是一种标有一系列数字的扑克牌。用于敏捷开发的Scrum开发团队估计故事(Story)的故事点(Story Point)。

计划扑克玩法

    1. 参加游戏的开发人每人各拿一叠扑克牌,牌上有不同的数字。
    2. 客户或者产品责任人为大家挑选 1 个 Story(Backlog),并简单解释其功能,以供大家讨论。
    3. 每个游戏参加者按自己的理解来估计完成这个 Story 所需的时间,从自己手中的牌里选 1 张合适数字的牌,并发展示给大家。
    4. 游戏参加者各自解释选择这个数字的原因,尤其是数字最大和最小的人。
    5. 根据每个游戏参加者的解释,重新估计时间并再次出牌,直到大家的估计值比较平均为止。

得意 在这个游戏中需要注意的是:首先,这不像普通的扑克游戏,不是轮流出牌,而是大家考虑好之后同时出牌,这样就可以避免后出牌的人被先出牌的人干扰;其次,要告诉团队成员,他们需要估计所有的 Story,而不仅仅是他们自己将要做的那些部分,比如测试人员不能只估计测试工作所需要的时间。

Unlimax的计划扑克  购买

(消息) 一副扑克有4种花色,可供4人同时使用,如果团队大于4人,可使用多付扑克组合使用。

敏捷计划估算扑克 - Tennille - 观点

(消息) 每种花色有13张牌。

敏捷计划估算扑克 - Tennille - 观点

(消息) 0表示认为所选Story非常简单,根本不需要精力就能完成;

     ?表示根据已知情况,无法评估Story需要多少故事点;

     咖啡杯用于提示团队成员该休息了,实在太累了(吐舌)

敏捷计划估算扑克 - Tennille - 观点

(消息) 大小王分别用中英文,告诉团队如何使用计划扑克估算故事点。

敏捷计划估算扑克 - Tennille - 观点

(消息) Unlimax的计划估算扑克可通过淘宝网店在线 购买

敏捷计划估算扑克 - Tennille - 观点


2012-10-08 16:27:03 desert3 阅读数 57
  • 精通数据科学:从线性回归到深度学习

    数据科学是一门内涵很广的学科,它涉及到统计分析、机器学习以及计算机科学三方面的知识和技能。本课程将深入浅出、全面系统地介绍了这门学科的内容。通过这门课程,同学可以了解并熟悉如下的开源工具:scikit-learn、statsmodels、TensorFlow、Pyspark等。 本课程分为4个部分,18个章节。 ·             第一部分是最初的3章,主要介绍数据科学想要解决的问题、常用的IT工具Python以及这门学科所涉及的数学基础。 ·             第二部分是第4-7章,主要讨论数据模型,主要包含三方面的内容:一是统计中最经典的线性回归和逻辑回归模型;二是计算机估算模型参数的随机梯度下降法,这是模型工程实现的基础;三是来自计量经济学的启示,主要涉及特征提取的方法以及模型的稳定性。 ·             第三部分是接下来的8-15章,主要讨论算法模型,也就是机器学习领域比较经典的模型。这三章依次讨论了监督式学习、生成式模型以及非监督式学习。 ·             第四部分将覆盖目前数据科学最前沿的两个领域分别是大数据和人工智能。具体来说,第11章将介绍大数据中很重要的分布式机器学习,而最后两章将讨论人工智能领域的神经网络和深度学习。

    3969 人正在学习 去看看 唐亘
[url=http://community.techexcel.com.cn/010DevSuite/070Agile_Scrum/010Posts/010Agile_Poker]敏捷估算扑克[/url]
[b]关于扑克牌上的数字[/b]
估算扑克牌上的数字,有的牌是自然数排列,有些是斐波纳契数,有些则是不连续自然数。具体选用哪种扑克,要根据被估算的内容的跨度大小而定,如果估算值跨度在10倍以内,那么采用顺序自然数比较好,如果数值跨度较大,达到10倍以上,那么采用斐波纳契数比较好。一般而言,估算软件开发工时的话,自然数可能更好一些,毕竟数值都不大,跨度也不会很夸张。

[b]扑克估算的意义与价值[/b]:
是要获得一个相对较为准确的数字。
和其他估算方法比,使用扑克牌的方法,能够带来一个额外的好处:[color=red]促进团队成员间的交流,让大家共享、了解更多的信息[/color]。扑克牌估算中,有一条规则是:当估算值差距大于可接受范围内的时候,估算数值大的人和估算数值小的人,要各自陈述自己的意见,陈明是什么原因/根据促使自己做了相应的估算。通过这种方法,可以让所有人都有机会发言,分享自己所了解到的知识,而其他人则在这个过程中了解到了很多其他人的知识,这些知识在接下来的开发工作中,都是很有用的。
会不会有人从来不发言呢?答案是,不会的,不可能有人每次都能够估算出平均值,因此而避免发言。如果这有这么一个人的话,哈哈,那千万不要放跑这个人,也别打牌了,全由他一个人估算就好了,又快又准,哈哈~~(发白日梦中……)

[b][url=http://www.scrumcn.com/scrumptc/html/?210.html]估算扑克的使用方法[/url]:[/b]
[list]
[*]1. 每个团队成员拿到一组卡片,包括0,0.5,1,2,3,5,8,13,20,40,?,∞,共计12张。
[*]2. 产品负责人或者一名团队成员扮演阅读者的角色,他负责阅读需要估算产品Backlog的条目,并且询问大家是否有疑问。
[*]3. 团队讨论这个条目。
[*]4. 当团队理解了这个条目之后,每个团队成员按照自己的想法给出估算结果,并且选择对应的扑克出牌,估算结果不能告诉其他人,出牌时数字朝下扣在桌面上。
[*]5. 所有人都出牌之后,阅读者向大家确认是否都已经确定估算结果,确认后,数”1,2,3",大家同时展示估算结果。
[*]6.团队评估不同的估算结果.我们是否想法一致?我们是否存在分歧?有没有什么是我没有考虑到的?团队共同讨论估算的差异,最终达成一致。
[*]7. 回到第二步,开始估算下一个条目。
[/list]
[b]为什么要使用估算扑克来做估算[/b]
有人可能会问,在传统的做法中,我们一般是让一个专家或者项目经理来做估算,给出结果,然后团队照做就可以了,多个人都参与估算不是浪费时间吗?
使用估算扑克来做估算基于两个结论,
[list]
[*]第一:团队的智慧要高于某一个人的智慧。
[*]第二:真正参与工作的人做出的估计要高于其他人做出的估计。
[/list]
估算扑克有效还有如下几个方面的原因:
[list]
[*]1. 传统估算通常是一个人在思考,而使用估算扑克估算时,鼓励[color=red]跨职能团队的多个团队成员参与估算[/color],团队成员可以从不同的视角来思考和分析问题,估算的过程中考虑的更加全面、估算也更加准确。
[*]2. 在估算的过程中,团队对估算的结果进行[color=red]讨论和评判,在一个高度透明的环境下[/color],估算的结果更加真实和客观。这样也避免了很多时候过于武断,或是拍脑袋做出的决定。
[*]3. 估算的过程也是一个[color=red]知识分享和学习的过程[/color],对某一个条目不清楚的成员通过其他成员的阐述会增加对该条目涉及到的要点的认识。
[/list]
2019-02-18 21:15:54 hdfyhf 阅读数 54
  • 精通数据科学:从线性回归到深度学习

    数据科学是一门内涵很广的学科,它涉及到统计分析、机器学习以及计算机科学三方面的知识和技能。本课程将深入浅出、全面系统地介绍了这门学科的内容。通过这门课程,同学可以了解并熟悉如下的开源工具:scikit-learn、statsmodels、TensorFlow、Pyspark等。 本课程分为4个部分,18个章节。 ·             第一部分是最初的3章,主要介绍数据科学想要解决的问题、常用的IT工具Python以及这门学科所涉及的数学基础。 ·             第二部分是第4-7章,主要讨论数据模型,主要包含三方面的内容:一是统计中最经典的线性回归和逻辑回归模型;二是计算机估算模型参数的随机梯度下降法,这是模型工程实现的基础;三是来自计量经济学的启示,主要涉及特征提取的方法以及模型的稳定性。 ·             第三部分是接下来的8-15章,主要讨论算法模型,也就是机器学习领域比较经典的模型。这三章依次讨论了监督式学习、生成式模型以及非监督式学习。 ·             第四部分将覆盖目前数据科学最前沿的两个领域分别是大数据和人工智能。具体来说,第11章将介绍大数据中很重要的分布式机器学习,而最后两章将讨论人工智能领域的神经网络和深度学习。

    3969 人正在学习 去看看 唐亘
               

本文是“松结对编程”系列的第三篇。(之一之二之三之四之五之六之七之八,此系列之九及之后文章请见栏目总目录。)

估算是经久不衰的管理话题,大致分为两种流派。

第一种是领导指派,领导说这是10天的活,就必须当是10天的活来干,如果干不完,可以用加班、损失质量、功能缩水等各种方法曲线救场。另一个变种是大家自己估算,但是交给领导审批;领导审批其实就是砍一半的过程,还好大家之前就已经加了一倍,所以不怕。

第二种是自我管理派(偏敏捷),就是由具体开发的人员自己说开发工作量,领导和他人不干预。尽管“自组织”了,但是领导深以为这种方法留下了偷懒的种子,而队员也觉得某人的估算很不靠谱(太长或太短),到底怎么办呢?

共同估算吧。

--------------------------------------------

基本概念

假设现在是一个计划会上,PO(产品经理,策划组长,项目经理,某销售……)刚刚讲完需求,下一步不是交给某人做估算,而是交给某个潜在的组(师傅+1~3徒弟)。

由师傅带头打牌,对,在计划会上玩扑克:

1. 大家各自思考可能要花多久时间完成任务,扣一张牌出来;

2. 师傅喊开牌,大家亮牌,比较大小;

3. 一般最小和最大的两个人PK,说出自己的观点,大家一起讨论;

4. 差异无非来自于两个方面:做什么,怎么做;PO参与讨论回答做什么的问题,师傅和徒弟们讨论解决怎么做的问题;

5. 讨论过后再来几轮,直到大家觉得结果差不多了。

扑克牌估算的匿名性和开放性保证了大家不会人云亦云,也不会因为缺少沟通而难以达成一致。

笔者的经验是一局扑克牌估算大约持续1~5分钟,还是很快的。偶然有黄庄的,一般都是因为PO那里回答不了做成什么样子,某某附加功能是否也要做……等等问题时。

几个问题

1. 为什么分给组而不是个人?

不分个人就打牌使得每个人都不得不思考,因为怕出错了牌又说不出所以然。这样即使日后他不做这个功能,也对这个功能很了解。

2. 为什么不让最后领任务的人自己估算?

因为他很可能因为不知道某代码可用、不知道某软件不行、不懂template(我们因此扔过1个人月代码)……而选择了错误的实现方法。

3. 为什么不让师傅估算大家采纳,他不是最厉害吗?

师傅的想法常常是徒弟们理解不了的——比如为什么不留在女儿国而偏偏去西天取经之类的,呵呵——共同估算就是让大家在思考中对照自己的实现方法和师傅差异的过程。

4. PO怎么还参加?不是不让别人干预吗?

很多问题比如在游戏中“显示武林排行榜”,具体工作量可能不在于怎么做而在于做什么:凭什么排名?排多少名?实时排名还是每周排名?怎么显示排名?……因此PO不能写出一堆文档,然后以不便干预估算为名不参加敏捷计划会议。

PO可以挑战估算,比如:“这真的要这么久吗?我记得上次……”但要有理有据。其实实践中更容易看到的是,团队往往过于激进乐观,PO反而要让他们意识到完整的需求和要求,做出更现实的估算。估算不准确,PO也有责。

5. 一直无法达成一致怎么办?

其实估算不是为了最后那个数字,而是弄清楚做什么和怎么做的问题,如果这两件事情清楚了,但结果却是偏偏有人说4天有人说6天,随便取个数就可以了(事实是应该按墨菲定理取6天)。有师傅在,一般很少会就实现方法争执不下;有PO在,一般很少会就要实现什么争执不下。

不排除有特殊情况比如PO发现自己也没想过排行榜凭什么排行,那么就应该搁置此用户故事;又比如大家觉得如果数据库给力可能实时排名也行但又拿不准,可以暂时搁置到开发的时候再说,但把故事上标注一下“若需要每周自动排名+1天”。如果经常黄庄,Scrum Master要分析总结避免。

6. 四个人出牌不同,师傅先说还是徒弟先说?

想起个脑筋急转弯:科学家 医生 士兵 护士 ……等等一群人在飞机上,飞机结冰快坠落了需要有人(可能不止一个)跳下去,问谁跳?答案是从体重最重的人开始跳,因为可以少跳几个。

因此我们是出牌数字最小的先说,和师徒无关。因为他极有可能掌握最佳实现方法。如果后来发现不是如此,请参考下一条。

7. 都有什么理由可陈述?

按下面的顺序,越靠前的越接近真理,感觉自己接近真理的就一定要举手先说,马后炮招人嫌:

经验事实:我以前做过……咱们有个类库……那个方法我试过不可行……

蛛丝马迹:谁还记得上次……听说隔壁……与上回相比……你以前不是……

逻辑推理:理论上说……我觉得……

几个注意事项

1. 小组内不要有强分工,否则大家会缺省认为肯定是某人的工作。

2. 师傅不要太抢眼,要通过估算鼓励徒弟思考,同时也掌握徒弟的真实水平。

3. 师傅不要太较真,编程规范、易用性、易维护性这些纪律不能放松,但如果徒弟想尝试一种不同但工作量也差不多的方法,可以适当鼓励。

4. Scrum Master监控整个过程,防止太细/争执……等问题。

5. PO必须参加。

----------------------------------------------------------

共同估算依靠PO的参与解决了做什么的问题,依靠师傅的带动解决了怎么做的问题。

共同估算是“跨职能团队”的基础活动之一,之后他们之所以能在每日立会上分享当前进展与困难,就是因为当初是他们一起思考这一任务的,因此对这一任务后来的实际情况非常关心。在发生问题的时候,大家也更可以互相帮助,而不是毫不所知。

下一篇将会涉及日常工作/每日立会等迭代期内的工作。

 

点击下载免费的敏捷开发教材:《火星人敏捷开发手册

 

           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

2014-09-24 17:56:00 weixin_30586085 阅读数 7
  • 精通数据科学:从线性回归到深度学习

    数据科学是一门内涵很广的学科,它涉及到统计分析、机器学习以及计算机科学三方面的知识和技能。本课程将深入浅出、全面系统地介绍了这门学科的内容。通过这门课程,同学可以了解并熟悉如下的开源工具:scikit-learn、statsmodels、TensorFlow、Pyspark等。 本课程分为4个部分,18个章节。 ·             第一部分是最初的3章,主要介绍数据科学想要解决的问题、常用的IT工具Python以及这门学科所涉及的数学基础。 ·             第二部分是第4-7章,主要讨论数据模型,主要包含三方面的内容:一是统计中最经典的线性回归和逻辑回归模型;二是计算机估算模型参数的随机梯度下降法,这是模型工程实现的基础;三是来自计量经济学的启示,主要涉及特征提取的方法以及模型的稳定性。 ·             第三部分是接下来的8-15章,主要讨论算法模型,也就是机器学习领域比较经典的模型。这三章依次讨论了监督式学习、生成式模型以及非监督式学习。 ·             第四部分将覆盖目前数据科学最前沿的两个领域分别是大数据和人工智能。具体来说,第11章将介绍大数据中很重要的分布式机器学习,而最后两章将讨论人工智能领域的神经网络和深度学习。

    3969 人正在学习 去看看 唐亘

原文地址:http://www.uml.org.cn/SoftWareProcess/201108264.asp

敏捷扑克是什么?

其实应该叫“估算扑克”更准确一些,本质上是扑克牌,基于Delphi估算原理,可以快速估算出需要的数字。

关于扑克牌上的数字

估算扑克牌上的数字,有的牌是自然数排列,有些是斐波纳契数,有些则是不连续自然数。具体选用哪种扑克,要根据被估算的内容的跨度大小而定,如果估算值跨度在10倍以内,那么采用顺序自然数比较好,如果数值跨度较大,达到10倍以上,那么采用斐波纳契数比较好。一般而言,估算软件开发工时的话,自然数可能更好一些,毕竟数值都不大,跨度也不会很夸张。

扑克估算的意义与价值

第一点,自然是要获得一个相对较为准确的数字。

和其他估算方法比,使用扑克牌的方法,能够带来一个额外的好处:促进团队成员间的交流,让大家共享、了解更多的信息。扑克牌估算中,有一条规则是:当估算值差距大于可接受范围内的时候,估算数值大的人和估算数值小的人,要各自陈述自己的意见,陈明是什么原因/根据促使自己做了相应的估算。通过这种方法,可以让所有人都有机会发言,分享自己所了解到的知识,而其他人则在这个过程中了解到了很多其他人的知识,这些知识在接下来的开发工作中,都是很有用的。

会不会有人从来不发言呢?

答案是,不会的,不可能有人每次都能够估算出平均值,因此而避免发言。如果这有这么一个人的话,哈哈,那千万不要放跑这个人,也别打牌了,全由他一个人估算就好了,又快又准,哈哈~~(发白日梦中……)

在线免费申请敏捷扑克

点击此处,申请免费的敏捷扑克

如何使用敏捷扑克?

项目组成员

Scrum Master:Lily,后排左侧,QA出身,工作细心踏实。

Product Owner:勇哥,后排右侧,资深ITer,做软件无数。

成员共有四名:前排,从左至右:陈师傅,开发组的老大哥;小洁,新人,表现相当出色;阿典,开发组里的帅哥;Pan,真正的高手。

分牌

每名参与估算的成员分得相同花色的一组牌,两张Joker不参与估算

敏捷扑克和普通游戏扑克一样,也有54张牌,也拥有4种花色(每种各13张)和两张Joker。敏捷扑克的每种花色均是一组13张牌组成的估算扑克牌,牌正面上印刷有供估算用的数字与符号,数字分别是1/2,1~10和20,符号为“!”,代表一些未知情况,如无法提供准确估算值等。

一副估算扑克可供四人使用,如果参与估算的人员多于4人,可以使用多副扑克。关于参与估算的人数方面,一般我们推荐4到8人参与估算;人数太少,会使估算结果偏差很大,人数太多,会拉长估算时间,降低估算效率。

讲解Backlog

产品负责人勇哥从Backlog中选择一个条目,为大家详细讲解该条目

团队成员针对该条目进行讨论并提出问题,勇哥逐一解答大家的问题;阿典思路敏捷,总能想到很多大家意想不到的东西来。

这个步骤是团队和产品负责人之间的交互的环节,帮助团队和产品负责人共同加深对条目的理解。同时产品负责人也会根据大家的反馈,及时修改条目,完善条目。

在讲解条目过程中,千万不要制定该条目的负责人或明显的倾向于某些人来做这个条目,这样会大大降低不负责该条目的团队成员的积极性,甚至会扰乱估算的秩序与结果。

估算

当团队成员确认已经对该条目完全了解、无任何重大问题后,大家开始对该条目进行估算,同时选出代表自己估算值的纸牌,但不可立即亮牌。在估算过程中,为避免干扰估算结果,团队成员之间不可以互相商讨;

估算时,我们经常会估算相对值,而不是绝对值,如一个功能的开发难度或者代码规模,估算单位经常使用点,而不是绝对的时间或者数量,这时我们需要选择一个估算的标准。最简单的方法就是我们选择一个规模中等,大家都比较容易理解的条目,将其设定为一个标准值,比如5,然后再将其他条目和他进行比较,得出其他条目的相对点数。每次估算时,最好使用相同的标准条目,这样对于整个项目的统计有很大帮助。使用相对值进行估算,可以有效的监控团队的生产能力。

选择牌时,牌中央的数字和符号代表了你的估算值,受到纸牌数量的限制,牌面数字不可能包含了全部的可能性,遇到特殊的数字时,我们可以采取组合牌的形式,比如您的估算值为3.5,那么我们可以使用一张3,再加上一张1/2来表示3.5。

+=3.5

当所有成员选牌完毕,大家可以同时亮牌

大家估算的结果是:陈师傅,7;小洁,9;阿典和Pan,3。

同时亮牌的好处是,不会有人跟风出牌,每个人的估算都有其独立思考,这也是扑克估算的精华所在。

争议与讨论

对比每张牌估算值之间的大小,若估算值差距明显,代表大家对该条目的价值没有获得共识,团队需要对该条目价值评估结果进行讨论;

VS

第一轮出牌的结果分别是3,3,7,9;这四个数字差别很大了,两个个偏小,两个偏大,4个数字的平均值是5.5。这时我们需要让估算值是3的阿典说明为什么他认为只有3点,为何会如此简单;之后我们需要选择9的小洁说明为何她认为数值会比较大;选择7的陈师傅最接近平均值,可以选择发言或者不发言均可。

之后大家可以针对每人的发言进行简单的讨论,讨论过程中,随时可以向产品负责人提问,产品负责人需要回答相应的问题,同时向团队成员的估算发出质疑。在讨论过程中,Scrum Master要维护活动秩序,不要让大家讨论跑题了,也不要深入研究代码编写细节,这些是实际开发是再去解决的问题;还有一点很重要,那就是鼓励所有人都发言,千万不要让老手们或强势的人控制了局势。

共识

重复步骤3、4、5,对该条目重新进行估算,直到团队对于该条目的评估数值达成一致。

一般情况下,最多3轮就可以得出一个比较统一的意见。

第二轮,大家出牌的结果是6,7,5,5,虽然有人很不情愿,但是毕竟大家达到了一个不错的共识:估算结果是6~~

如果3轮之后依然没有得到一个统一的意见,比如第四轮出牌结果依然是2,5,5,8;那么Scrum Muster应当立即中断该条目的估算,取平均值或其他大家比较能接受的值作为估算结果。没有任何一种估算是高可靠度的,扑克也不例外,扑克估算的目的就是为了能够在一个尽可能短的时间内,让团队成员更加多的了解需要做的工作,同时顺带得到一个可接受的估算结果。

转载于:https://www.cnblogs.com/AloneSword/p/3991263.html

2019-12-23 10:15:51 u012068483 阅读数 14
  • 精通数据科学:从线性回归到深度学习

    数据科学是一门内涵很广的学科,它涉及到统计分析、机器学习以及计算机科学三方面的知识和技能。本课程将深入浅出、全面系统地介绍了这门学科的内容。通过这门课程,同学可以了解并熟悉如下的开源工具:scikit-learn、statsmodels、TensorFlow、Pyspark等。 本课程分为4个部分,18个章节。 ·             第一部分是最初的3章,主要介绍数据科学想要解决的问题、常用的IT工具Python以及这门学科所涉及的数学基础。 ·             第二部分是第4-7章,主要讨论数据模型,主要包含三方面的内容:一是统计中最经典的线性回归和逻辑回归模型;二是计算机估算模型参数的随机梯度下降法,这是模型工程实现的基础;三是来自计量经济学的启示,主要涉及特征提取的方法以及模型的稳定性。 ·             第三部分是接下来的8-15章,主要讨论算法模型,也就是机器学习领域比较经典的模型。这三章依次讨论了监督式学习、生成式模型以及非监督式学习。 ·             第四部分将覆盖目前数据科学最前沿的两个领域分别是大数据和人工智能。具体来说,第11章将介绍大数据中很重要的分布式机器学习,而最后两章将讨论人工智能领域的神经网络和深度学习。

    3969 人正在学习 去看看 唐亘

目录

一、使用故事点估算大小

1、故事点是相对的

2、速度

3、小结

二、使用理想人天进行估算

1、理想时间和软件开发

2、以理想人天作为对大小的度量

3、给出一个而不是多个估算值

4、小结

三、估算方法

1、共同估算

2、估算的尺度

3、得到估算值的方法

3.1、专家意见

3.2、类比

3.3、分解

4、计划扑克

5、为什么计划扑克会有效

6、小结

四、重估

五、在故事点和理想人天之间进行选择

1、有利于故事点的考虑因素

2、有利于理想人天的考虑因素

3、建议

4、小结


最近阅读了《敏捷软件开发实践——估算与计划》这本书,总的来说,是一本非常好的书籍。先前只是采用敏捷研发的流程,对于敏捷研发的关键环节理论理解不深,通过阅读本书,解开了很多疑惑。以下整理了第二部分的内容。

敏捷团队把对大小的估算与对时长的估算独立区分出来。

一、使用故事点估算大小

1、故事点是相对的

故事点是用于表达用户故事、特性或其他工作的总体大小的度量单位。当我们使用故事点进行估算的时候,我们给每个对象分配一个点值。我们分配的原始点值本身并不重要,重要的是点值的相对大小。

用户故事的故事点数反映了这个用户故事的总体大小。定义用户故事的大小并没有固定的公式,。更确切地说,对故事点的估算需要综合开发该功能所需的工作量、开发工作的复杂性以及蕴藏的风险等方面。

2、速度

为了理解为什么没有单位的故事点是有效的,就必须介绍一个新概念:速度。速度是对开发小组的进度生产率的度量。速度可以通过计算小组在一次迭代中完成的用户故事所分配的故事点数的总和来得到。如果小组完成了3个估算值都是5点的用户故事,他们的速度就是15,。如果他们完成了2个5点的用户故事,速度就是10.

下图的模型被用于显示对大小的估算如何被转换成对持续时间的估算和进度表。

如果把所有必须特性的故事点加在一起,就会得到对项目总体大小的估算。

如果知道团队的速度,就可以通过用大小除以速度来估算出迭代的次数。再把这个持续时间映射到日历上,就可以得到进度表。

速度修正估算误差

随着团队在项目的用户故事上取得进展,他们的速度在最初几次迭代中就会显示出来。基于故事点的估算方法的美妙之处就在于对速度的使用是的计划的误差可以自我修正。

3、小结

故事点是对用户故事大小的度量。估算为10个故事点的用户故事的大小、复杂度或风险应该大致是估算为5个故事点的用户故事的两倍。10个故事点的用户故事点的大小、复杂度或者风险同样应该大致是20个用户故事的一半。有意义的知识给不同用户故事分配的点数的相对大小。

速度是对团队每次迭代的进度生产率的度量,在每次迭代结束的时候,团队可以看看他们完成了哪些用户故事,通过计算已完成用户故事的估算值之和来得到小苏的速度。

故事点知识对将要进行的工作大小的估算。与其说一个项目的持续时间好来得到小组的速度。

二、使用理想人天进行估算

1、理想时间和软件开发

在软件项目中,理想时间与耗用时间之间存在的差异并不是由于暂停、未完成的传球或者受伤造成的,而是由于我们在每天都会遇到的自然的额外开销。

理想时间为什么与耗用时间不相等的更多原因包括:

  • 为当前的发布提供支持
  • 休病假
  • 开会
  • 演示
  • 个人问题
  • 打电话
  • 特殊项目
  • 培训
  • 电子邮件
  • 回顾和预排
  • 面试候选人
  • 任务切换
  • 修复当前发布中的bug
  • 管理性检查

在软件项目中,多任务处理进一步扩大了理想时间和耗用时间之间的差距。被要求同时处理多个任务的软件开发人员在两个(或者更多)任务之间进行切换时会损失大量的效率。

在软件项目中,我们可以选择使用理想人天(idea day)对用户故事或者其他工作进行估算。使用理想人天进行估算时,你需要假定:

  • 所估算的用户故事是你将处理的唯一工作
  • 你所需要的所有东西在你开始工作时都会准备好
  • 不会被打断

2、以理想人天作为对大小的度量

当我们估算开发、测试和验收一个用户故事所需要的理想人天数时,并不需求考虑团队的工作环境所带来的的额外开销。

当不考虑组织性开销时,理想人天可以被看成另一种对大小进行估算的方法,就像故事点一样。然后,像故事点方法一样,我们可以利用速度把理想日的数量表示的大小估算转换成对持续时间的估算。

3、给出一个而不是多个估算值

如果选择使用理想人天进行估算,就应该为每个用户故事分配一个整体性的估算值。

4、小结

理想时间和耗用时间是不同的,一场美式橄榄球的理想时间是60分钟(4节,每节15分钟)。但是,在一场60分钟的比赛结束时,时钟上通常可能已经过了3个小时或者3个小时以上。导致这一差异的原因是比赛过程中可能出现的各种干扰。

使用理想人天而不是耗用人天,更容易估算开发一个用户故事所需的时间量。按照耗用人天进行估算要求我们考虑在处理这个用户故事时所有可能出现的干扰。而如果我们以理想人天进行估算,就只需要考虑完成这个用户故事所需要的时间。这时,理想人天是对大小的估算,虽然它没有故事点那么严格。

采用理想人天进行估算时,最好只为每个用户故事分配单一的估算值。应该把所有需要的时间加在一起,说某个用户故事需要9个理想人天,而不是说他需要4个程序员人天、2个测试人员人天和3个产品负责者人天。

三、估算方法

1、共同估算

估算值并不是由团队中的单个人建立的。敏捷团队并不是依靠某一位专家来进行估算。除了众所周知的原因——将要做此工作的人对工作做出的估算比其他人做出的更准确以外,最佳的估算是由团队——包括将要做此工作的人在内——协作做出的。

2、估算的尺度

研究显示我们在对同一数量级内的东西进行估算时做得最好。

如果我们要在一个数量级内估算所有的用户故事,就意味着要在一个同样细致的程度上编写所有的用户故事。对于还不确定是否需要的特性或者最近不会实现的特性,写一个更大粒度的用户故事往往可能更为恰当。这样大粒度的用户故事有时被称为史诗(epic)。

一组相关的用户故事可能会被整合在一起(如果使用记录卡片,通常用回形针订在一起),并在估算和发布计划中都被当做单一的实体。这样的一组用户故事通常被称为一个主题(theme)。仅仅从大小来说,一个史诗往往本身就是一个主题。

通过使用主题来聚合一些用户故事和将某些用户故事写成史诗,团队可以减少估算所需的工作量。但是,他们需要认识到,对于主题和史诗进行估算的不确定性,比对更明确、更小的用户故事进行估算时更高。

3、得到估算值的方法

3种最常用的估算方法:

  • 专家意见
  • 类比
  • 分解

每种方法 都可以单独使用,但要得到最佳结果,应综合使用这3种方法。

3.1、专家意见

在基于专家意见的估算方法中,专家被问到某件事情需要多长时间或者它会有多大,专家根据他自己的直接给出估算。

根据专家意见进行评估的一个好处在于它通常不需要太长时间。

3.2、类比

在使用类比进行估算时,估算者将估算中的用户故事与一个或者多个其他故事进行比较。

3.3、分解

分解是指将一个用户故事或者特性分解为更小、更容易估算的部分。

4、计划扑克

敏捷团队最佳的规划方法是打计划扑克。计划扑克把专家意见、类比和分解结合到一种令人愉快的估算方法中,可以产生快速而可靠地估算。

计划扑克的参与者包括团队所有的开发人员(开发人员包括所以的程序员、测试人员、数据库工程师、分析师、用户交互设计师等)。

团队需要在两个不同的时间玩计划扑克

  1. 在项目启动之前或者在项目的第一次迭代中,通常会有大量的对象需要估算。对用户故事的初始集合进行估算时,需要团队进行两到三次1~3小时的会议。这自然取决于有多少对象需要估算、团队的大小以及产品负责人能否简洁地阐明所有需求的能力。
  2. 在迭代的开发过程中,团队需要对新发现的用户故事进行估算。

5、为什么计划扑克会有效

(1)计划扑克把多个转件的意见放到了一起来做估算;

(2)在计划扑克期间会进行活跃的对话,估算者会被同事要求证明自己的估算的正确性;

(3)研究显示,对每个人估算值的平均可以带来更好的结果,对估算进行团队讨论也同样如此。

6、小结

花更多的时间和精力来得到一个估算值,并不一定会提高它的准确性。应该根据估算的目的来决定在估算中投入多少工作量。虽然众所周知,将要做某项工作的人才能给出最好的估算,但在一个敏捷团队中,我们无法提前知道谁将负责这项工作。因此,估算应该是一项团队协作完成的活动。

估算应该基于一个预先定义的尺度。将会在近期处理的功能以及需要非常可靠估算的功能应该足够小,因此他们可以使用一个1~10之间的非线性尺度来进行估算,例如1、2、3、5和8。在最近的几次迭代中不太可能需要实现的大功能可以不分解,用大的单位,如13、20、40和100来估算。

要得到一个估算值,可以依赖专家意见、类比和分解。计划扑克是一个有趣而有效的方法,它结合了上述3种办法。在计划扑克中,每个估算者有一叠写着有效估算值的卡片。没讨论一个功能,每个估算者就选择一张代表他的估算值的卡片。所有的卡片都会同时展示出来。团队对估算值进行讨论,重复这个过程直到团队的估算达成一致。

四、重估

在使用故事点或者理想人天进行估算时最常见的问题之一就是“我们何时进行重估?”要得到答案,至关重要的是记住故事点或者理想人天是对要实现的功能的总体规模和复杂度的估算。故事点尤其不是对实现一个功能所需时间的估算,实现一个功能所需的时间是一个关于功能的大小(以故事点或者理想人天表示的估算)和小组的进度率(以小组的速度来表示)的函数。

始终牢记故事点和理想人天是对大小的估算,只要在我们确信一个用户故事的相对大小发生了变化时,才需要重新估算。使用故事点或者理想人天的时候,我们不会只因为某个用户故事的实现时间比我们预想的时间长就进行重估。

无法学习才是真正的失败。从每一个重估的用户故事中学习,然后把取得的经验转化为成功的推动力。

记住故事点和理想人天是对功能规模的估算,可以帮助你知道何时应进行重估。只有在你对一个或者多个故事的相对大小的看法发生变化时,才应该进行重估。不要只因为进度没有你预期的那么快而进行重估。可以让速度这个很好地均衡器来解决大多数估算中的不准确性。

五、在故事点和理想人天之间进行选择

作为对大小的度量,故事点和理想人天分别有自己的优势。本章介绍了分别有利于两种方法的主要考虑因素。

1、有利于故事点的考虑因素

倾向于采用故事点进行估算的要点,如下:

  • 故事点有助于驱动跨功能的行为
  • 故事点估算不会过期
  • 故事点是纯粹对大小的度量
  • 故事点估算通常更快
  • 我的理想人天不等于你的理想人天

2、有利于理想人天的考虑因素

有利于采用理想人天进行估算的要点如下:

  • 理想人天在团队以外更容易理解;
  • 理想人天估算更容易开始
  • 理想人天便于预测速度

3、建议

作者建议使用故事点。发现把他们作为对大小的纯粹度量所带来的好处更有说服力。故事点对团队跨功能行为的促进是一个巨大的有利之处。

4、小结

团队可以选择使用故事点或者理想人天进行估算。两者都是具有一定优点的可行方法。

故事点的优势是可以帮助促进团队的跨功能行为。此外,由于故事点是更为纯粹的对大小的估算,因此即使团队在技术上或者领域知识上取得了进步,也并不需要重估他们。用故事点进行估算往往比用理想人天估算要快。最后,与理想人天不同,可以在团队成员之间对故事点进行比较。如果一个团队成员认为某件事需要4个理想人天,而另一个成员认为只需要1个理想人天,也许他们都是对的,但是他们缺乏讨论的共同基础,无法建立一个单一的估算值。

理想人天的优势在于更容易向团队之外的人进行解释,以及更容易开始。

倾向使用故事点,使用故事点进行估算的优点更有说服力。如果团队对单纯的大小进行估算存在困难,我会让他们用理想人天开始估算,然后再让他们转化到故事点上。我会更多的问“这个功能的大小与我们刚才估算的那个相比怎么样?”而不是“他会需要多少个理想人天?”大部分团队几乎不会注意到这种渐进式的转变,而当他们意识到的时候,他们已经是在用故事点而不是理想人天进行思考了。

没有更多推荐了,返回首页