zoukankan      html  css  js  c++  java
  • 神马是敏捷?(2)——敏捷流程框架及敏捷实践一览

    摘要:

    我代表全国人民祝福你…… 代表什么!这星球上谁都代表不了谁!!敏捷流派这么多,我想通过一篇文章说清楚还真有难度,所以请允许我选一个代表吧,那就是近年来最火的SCRUM!对于敏捷的其他流派,我只能说:谁叫你不如人家火呢!本文将以SCRUM为代表,让你通过一篇短文大致了解敏捷流程框架、团队角色及各种敏捷最佳实践。

    大纲:

    1.神马是SCRUM?
    2.SCRUM 的流程框架
    3.SCRUM 的团队角色
    4.敏捷最佳实践一览

    本文是系列文章的第2篇,如果还没有看过第1篇,建议先看看!

    第一篇:敏捷的“官方”定义

    链接:http://www.cnblogs.com/umlonline/p/3450032.html

    1.神马是SCRUM?

    问:“SCRUM”是什么意思?

    答:橄榄球呗!

    继续问:老兄,我问的是敏捷的SCRUM!

    答:哦!嗯……(停顿几秒)这是因为这种敏捷方法论和橄榄球比赛的特点有点类似,所以才叫SCRUM。

    橄榄球比赛双方对攻,每一次进攻叫做SPRINT(冲刺),橄榄球比赛也非常注重团队合作,这些都符合这种敏捷方法的特点,所以引用了“SCRUM”这个名称来命名这个敏捷的方法论。另外“SCRUM”这个名字很形象、响亮、容易记忆,有噱头利于宣传。那天你也可以独创一种神秘的敏捷方法论,然后配上一个很酷的名称,说不定会把SCRUM的风头盖过去呢!SCRUM可能是近年来最火的一种敏捷,适用于大中小型项目,也适用于分布式的团队。

    美国有敏捷SCRUM联盟,可以认为这就是SCRUM官方机构,搞了一个SCRUM认证培训。中国有一家SCRUM中文网网站,她是中国领先的Scrum认证及敏捷培训授权服务机构,我还是SCRUM中文网的顾问呢!在中国如果你想搞一个SCRUM相关的认证证书,你需要参加官方授权老师讲授的相关课程,例如:SCRUM Master的课程,好像是7000大元(人民币)/人(最近不知道涨价木有),国外的老师来中国授课,配上中文助教。这个课程相当贵,其中一个原因是因为这是官方授权的课程,需要颁授官方认可的证书,官方其实是要收取费用的,所以价钱就上去了。

    SCRUM这么火其实可能并不是因为她真的比其他敏捷方法优秀很多,而是一种商业操作模式,有利益驱动,背后自然就有很多推手。这个国外的SCRUM联盟很会赚钱,设立标准,然后授权给不同的敏捷培训及服务机构,只要你做官方发证的培训,我就会赚到钱。SCRUM越火,认知度越高,越容易赚到钱。这道理和PMP证书、CMMI认证、ISO认证等的商业模式是一致的。证书在我们中国,你懂滴,总会有人前赴后继地去花钱搞证!

    上面一段话说了SCRUM的商业模式,我并不是为了说明SCRUM商业模式很浓,纯粹为了赚钱,而是让你知道是怎么一回事。其实SCRUM还是不错滴,很多最佳实践相当有用,不过需要结合中国国情来处理。如果你能让公司报销,或者你是土豪,那么花7000大元去参加培训得到一个证书,这也是相当不错的事情。如果你和我一样是土鳖,没有这么多银两,也没有关系,证书什么滴其实是浮云,因为你还可以通过很多途径和实践来学习和体会SCRUM。

    另外需要说明,不要尽信敏捷,也不要尽信SCRUM,无论是什么知识,我们都需要用“拿来主义”的心态来处理。

     

    2.SCRUM 的流程框架

    SCRUM的内涵到底是怎样的?一个图就可以搞定!

    SCRUM一张图搞定

    图2.1 SCRUM一张图搞定

    这张图展示了SCRUM的流程框架及团队架构,我们先看流程框架部分,下小节才说团队架构部分。

    你可以由左到右看这张图:

    1)左边部分是需要完成的工作,由左到右分别是:产品代办列表(Product Backlog)、冲刺代办列表(Sprint Backlog)、工作项分解。

    通常通过“用户故事”的方式来表示产品代办列表、冲刺代办列表,产品代办列表的用户故事可能比较大,需要进一步细分为比较细的用户故事,然后放入不同的Sprint中,作为不同Sprint的代办事项,而Sprint中的用户故事,还可以继续拆分成更细的工作项分解。这段内容先大致这样理解就可以后,以后再会为大家详细分享需求拆解方面的文章。

    2)右边部分说明了:这些需要完成的工作,需要通过大小迭代来完成。

    大迭代是指:Sprint(冲刺,也就是小版本),通常是30天的时间,每30天增量式的交付“可运行的软件”。“可运行的软件”这个说法还不太好,应该是“可工作的软件”,否则你可能认为编译通过程序能跑就是“可运行”了,而“可工作”才是重要指标,不仅仅能运行,还能为客户带来实在价值,才叫“可工作”。

    小迭代是指:每天的项目会议,通常是15分钟内。其实“站立”开会不是必须的,你可以“坐”着开,甚至“躺”着开。开会时间可以是早上、中午或下班前。形式和时间都不是关键,关键是要有效,要领会24小时开一次会议的核心思路!我们都知道问题越早发现越早处理,处理成本越低,24小时开会让问题被发现时间不会超过24小时,将问题消灭萌杀状态,同时每天修正项目的方向,保证我们一直在做正确的事情。

     

    3.SCRUM 的团队角色

    图2.1右下方有三种角色:产品负责人、Scrum Master、开发团队,下面分别介绍。

    产品负责人(Product Owner)

    这个角色负责的事情主要是:

    1)提供远景;
    2)提供边界;
    3)提供用户故事的优先级。

    该角色和产品经理是不是类似甚至一样呢?

    某些公司的产品经理很强势(特别是互联网公司),开发团队经常会这样抱怨产品经理:

    1)上午提要求,下午就要交付。
    2)需求经常变!
    3)需求解释不清楚,想找你澄清需求的时候,找不到你!
    4)人仰马翻好不容易做出来了,但这些功能基本没有人用。

    SCRUM中的产品负责人还需要注意做到以下两点:

    1)要和开发团队沟通需求。
    2)要尊重开发团队的研发能力。

    也就是说如果产品负责人不能让开发团队理解好需求,这是某种失职;如果开发团队总是疲于奔命经常加班来完成工作,那就是不尊重开发团队的研发能力,不尊重软件研发工作的客观规律。

    Scrum Master

    这个中文不知道怎样翻译好,翻译成“橄榄球教练”,这不太好吧?于是有人翻译成:SCRUM教练、敏捷教练。

    这个角色要做的主要事情:

    1)训练团队用正确的方法做事,遵循SCRUM的流程和做事原则。
    2)
    不代替团队做决定。

    这其实是一个很爽很舒服的角色,因为他只需要讲道理,不需要做决定!他主要职责是训练大家做事情,而不是亲自负责这个事情,这跟项目经理是很不一样的。

    我们的项目经理需要安排很多事情,做很多决定,还需要监督大家。项目经理就是一个大坑,什么都可以放进去!但SM(Scrum Master)就舒服多了……

    Scrum Master这个角色,还需要注意以下几点:

    1)你没有行政权力。例如:你不能决定项目团队某成员薪金或奖金,你无权说:你被解雇了。
    2)你要忍住帮团队做决定的冲动,让团队学会自我成长。
    3)不建议你同时兼任产品负责人。产品负责人需要做不少重要的决定,这其实与Scrum Master角色冲突,一个人同时做两种角色的事情,容易搞混了角色,当然你是超人能分得很清楚的话例外。

    Scrum Master 这种角色理想很丰满,现实很骨感,实践中会遇到很多问题,后续文章再为大家详细分享。

    开发团队

    这个词前面还需要加上一个词才比较合适,应该叫:“自组织”的开发团队。

    这种角色在现实工作中更加“不可思议”,甚至是不可能存在,不过我们还是先看看这个开发团队包含什么角色吧:

    1)业务分析师
    2)程序员
    3)测试人员
    4)软件架构师
    5)数据库设计师
    6)用户体验设计师
    ……

    开发团队虽然有“开发”两个字,不是说仅包含“开发角色”,而不包括“非开发角色”,通常我们所说的“开发角色”就是指程序员,好像测试、实施、配置管理、QA等角色就不是在做开发工作。这个开发团队是指:除了产品负责人和Scrum Master以外的,所有对项目有贡献的角色,这些角色的名字也不是固定的,各公司情况不一样,上面仅是一个例子。

    这一波人如果能自我管理、主动沟通、相互协调地完成工作,这样才能叫“自组织的开发团队”,这样才能敏捷。可惜的是我们的开发团队如果没有项目经理这样的角色来协调和指挥,很可能会成为“乌合之众”,无法谈得上敏捷。

    如何才能打造“自组织”的团队呢?后面再为你深入分享。

     

    4.敏捷最佳实践一览

    敏捷最佳实践相当多,我们先来个一览,先让你有个大概认识吧,后续再为你逐一分享。

    这里列出来的敏捷实践并不限于SCRUM范围内的,我尽量将所有流派的敏捷实践来了一个小小的总结。 

    需求方面最佳实践:
    1)User Story(客户故事)
    2)客户全程参与

    设计方面的最佳实践:
    3)简单设计

    测试方面最佳实践:
    4)测试驱动开发(TDD)
    5)自动化测试

    编码方面最佳实践:
    6)重构
    7)结对编程
    8)代码共有
    9)强调编码规范
    10)持续集成(每日构建)

    项目管理方面最佳实践:
    11)Sprint(冲刺)、小版本发布
    12)每日站立会议、每日晨会
    13)每周工作40小时
    14)Burn Down Chart(燃尽图)
    15)Lesson Learned
    16)隐喻

     

    请看下一文!

    下一篇将为你分享:神马是敏捷?(3)——敏捷在中国的水土不服

    摘要:中国软件项目的“两大限死,两不确定”,中国软件研发人员的“可爱”特点……

    作者:张传波

    创新工场创业课堂(敏捷课程)讲师

    软件研发管理资深顾问

    CMMI首席专家

    《火球——UML大战需求分析》作者

    软件知识原创基地创办人

  • 相关阅读:
    std thread
    windows更新包发布地址
    How to set up logging level for Spark application in IntelliJ IDEA?
    spark 错误 How to set heap size in spark within the Eclipse environment?
    hadoop 常用命令
    windows 安装hadoop 3.2.1
    windows JAVA_HOME 路径有空格,执行软连接
    day01MyBatisPlus条件构造器(04)
    day01MyBatisPlus的CRUD 接口(03)
    day01MyBatisPlus入门(02)
  • 原文地址:https://www.cnblogs.com/umlonline/p/3450428.html
Copyright © 2011-2022 走看看