数据加载中……
Scrum在互联网开发中的一些体会
互联网开发的特点是什么,用一句很有名的话来说,就是always beta,什么是always beta,直白的翻译,永远的测试版,为什么会这样,因为用户的需求总是在不断的变化,唯一不变的就是变化本身。这种特点的开发特别适合敏捷开发,而强调自组织特点的Scrum又是其中一个值得尝试的开发模式。点评在最近一段时间内做了一些这方面的尝试,在实践的过程中得到了一些粗浅的认识。
1.为什么要选择Scrum
让我们来看这样一个方程,决定一个项目成败的元素有哪些?工作量,期限,质量还有功能需求,由于需求是不断变化的,所以期限也无法确定,一个四元方程中有两元是无法确定的,那质量当然也无法确定。而Scrum就是先把期限定下来(冲刺周期),然后再把功能需求定下来(冻结需求),而工作量是已知的,这样质量就可以得到很好的控制。
2.如何划分冲刺周期
按照Scrum的定义,一个冲刺周期一般为30天,而对于互联网开发来说,这个周期显然太长,对于一家运营模式比较清晰的垂直网站来说,开发项目的复杂度一般不会达到几个月的程度,所以把冲刺周期划分为1-2周会更加合适,而这个周期也应该去适应网站的发布周期,个人认为2周是一个比较合适的冲刺周期,当然,目前在点评这个周期一般为1周。
3.每日站立会议
Scrum里面有一个很有价值的概念就是每日站立会议,很多开始实行Scrum的公司都会先纳入这个概念,而实际的效果如何呢?根据我们的实践,包括一些网上的资料,发现每日站立会议往往会变成一个每日报告会议,项目成员将每天的工作进度报告给项目经理,项目成员之间根本没有交流,这个根本不符合Scrum的自组织特性。Ken Schwaber在《Scrum敏捷项目管理》一书中针对这种情况提出应该鼓励成员在每日站立会议中多做眼神的交流,我觉得这个措施值得尝试,让每个人都去关心Story中的每一个任务的情况,让其更有参与的意识,提出自己的意见和建议。
4.Scrum头号杀手
好像很恐怖的样子,什么是Scrum的头号杀手,那就是在冲刺周期内作出需求的改变,Scrum严格要求冲刺周期内冻结需求,但是在执行上,相信很难做到这点,应该讲,做不到这点就不能算真正在实行Scrum模式,这个时候就需要Scrum的执行者能够有坚韧的决心,敏锐的判断力以及出色的说服力。所谓坚韧的决心,是因为需求的变更可能来自上级甚至高层,不能被这些因素影响你的判断力。所谓敏锐的判断力,一方面是指在制定冲刺的时候要能够判断出隐性需求,往往之后需求的变更是由这些因素引起的。另外一方面,是指需求方在提出需求变更的时候,需要判断出其需求的本质是什么,到底什么才是他想要的结果,这些并不一定通过其文档或者讲述能够看到的。所谓出色的说服力,是指在作出正确的判断后,如何用清晰简单准确的语言去说服对方放弃在当前的冲刺周期内作出需求的变更,当然,并不是要把对方的路给堵死,而是给他开辟另外一条路。
Scrum并不是万能药,照搬照抄的结果必然是失败,希望能够有更多的从事互联网开发的朋友来一起学习一起交流。

posted on 2009-02-28 21:33 Dylan Tang 阅读(1166) 评论(8) 编辑 收藏

评论

#1楼 2009-02-28 21:38 FFFTT[未注册用户]

经常都只有一,两个星期进行一个项目, 根本谈不上iteration,呵呵.
   回复 引用   

#2楼 2009-03-01 01:33 xxxx1[未注册用户]

always beta的本质意义就是推卸责任,把最终用户当作测试者来用,作为开发者我无所为,能忽悠到钱自然最好;作为使用者我只能说,去**的always beta
   回复 引用   

#3楼 2009-03-01 12:12 shawnliu      

不错 了解过一点scrum 如果变成每日汇报那对开发人员是种负担 对团队凝聚力有影响 让人感到不被信任
   回复 引用 查看   

#4楼 2009-03-01 13:24 冰绿茶      

希望楼主多分享些这方面的经验。
   回复 引用 查看   

#5楼[楼主2009-03-01 22:03 Dylan Tang      

--引用--------------------------------------------------
FFFTT: 经常都只有一,两个星期进行一个项目, 根本谈不上iteration,呵呵.
--------------------------------------------------------
确实如你所说,我们的绝大部分需求都是很琐碎的,不大有超过两个星期的项目,但是1年当中,也会有好几个项目时间跨度会比较长,这个时候就会用到Scrum模式,我们将我们的需求分为4个等级,最高一个等级的才会用到Scrum模式。
   回复 引用 查看   

#6楼[楼主2009-03-01 22:05 Dylan Tang      

--引用--------------------------------------------------
xxxx1: always beta的本质意义就是推卸责任,把最终用户当作测试者来用,作为开发者我无所为,能忽悠到钱自然最好;作为使用者我只能说,去**的always beta
--------------------------------------------------------
我觉得你对这句话的理解片面了,互联网开发的一个特点就是你无法跟真正的用户做直接的交流,而且这些用户的数量非常大,跟传统的软件用户差几个数量级,在这种情况下,需求都是由产品经理经过调研以后确定的,一旦这个产品上线,真正的用户开始使用,根据用户的反馈意见,根据各种数据跟踪分析,需求就会随时产生变化,这个才是always beta的含义。
   回复 引用 查看   

#7楼[楼主2009-03-01 22:08 Dylan Tang      

--引用--------------------------------------------------
shawnliu: 不错 了解过一点scrum 如果变成每日汇报那对开发人员是种负担 对团队凝聚力有影响 让人感到不被信任
--------------------------------------------------------

shawn总是很捧场啊:),每日站立会议我们已经开过很多次,倒没有人有过这样的反馈,其实即使是每日汇报,也是为了防止整个项目的进度出现偏差,以及一旦出现偏差,可以及时的采取措施。不过你说的这点也提醒了我,可能需要消除大家在这方面的顾虑。
   回复 引用 查看   

#8楼[楼主] 2009-03-01 22:09 Dylan Tang      

--引用--------------------------------------------------
冰绿茶: 希望楼主多分享些这方面的经验。
--------------------------------------------------------
欢迎访问我们的技术博客http://it.dianping.com
   回复 引用 查看