为什么Scrum不行?
这篇文章的原文在这里(原文链接)(下文不是全译,也不是部分译,我只是把其总结,有我自己的发挥,但是原意大致不变),这篇文章完全是在调侃Scrum的,作者第一段就是一个免费声明,其说他是Scrum和其它敏捷方法的big fan, 他也认为Scrum 100% 对 软件开发可行。作者使用Scrum 5年了,也公开作过几次敏捷的分享会。他觉得写这篇文章只是为了好玩,因为他们戴上Edward de Bono 的 black hat (黑礼帽 – 是6个思考之帽中的一种——负面思考,思考事物的负面因素,这样才知道:它会起作用吗?缺点是什么?它有什么问题?为什么不能做。)
因为本人经常站在Agile的风口浪尖,所以我有必要也来一个“免责声明”。Shit!其实我想来的是“不免责声明” ——下文中的九大原因是对中国的各种Agile实践者咨询师不注重实际只重方法论的批判,本人必然要和那种只以流程方法论为中心的软件开发斗争到底。其实我没有那么嚣张,我只是想说,下面的这些东西相当的现实。希望各种Scrum的实践者们认识到这些问题,从而可以让你们明白软件开发中的人的重要性。
Reason 1: Scrum 的基石是相信人。创造一个安全的环境,这样每个人都能相互学习,相互直言。但是,这是不行的,这世上有很多人并不关心这些,而且政治和竞争到处都是,办公室里无小事,你和别人交心,你相信他们,最终受伤的你自己。你真的以为那里有空间让你可以去犯错,去冒险吗?别天真了!你啊,too young, too simple, sometimes naive!
Reason 2: Scrum 认为只要给员工足够多的自由员工就能做得最好。这该死是理论是基于什么玩意?不可能,人的天性是懒惰的,他们才不会把事做好的,他们只会做相应报酬的工作量,还可能基本还达不到其相应的报酬,大多数人都在混日子啊。尤其是和经理比起来,谁不想能尽快地成为经理或Team leader啊,因为那样他们就可以即不干活,又挣得多。另外,你给他们自由,你就会发现,他们会只会做他们感兴趣的事,要么聊QQ,要么打游戏,看闲书,反正不干正事。直到你催了,他们才动一动。
Reason 3: 因为前面的原因,所以,我们仍然要把一个PM放在Scrum团队的上面做管理,这样才会有产出。于是,PM给团队分配任何,管得细枝末节,事无巨细,天天让你做进度汇报,等等。直至把团队拖垮。
Reason 4: Scrum 只不过是一个流程。这世上有太多的流程,尤其是那那些操CMMi的公司。几乎所有玩CMMi流程的公司,你都能看到的是员工都是那一副副苦逼的脸。所以,Scrum的流程同样会这样。因为这些都不是开发团队自发出来的,而是上面管你喜欢不喜欢按给你的。 Scrum 根本不可能增进你的软件质量和技术,只能是优秀的人才才可能!使用Scrum的公司都是些吝啬鬼,他们不愿花大钱招优秀的人,他们妄图使用Scrum这种东西让现有的这些廉价劳动力发挥更大的生产效率,Scrum成了push程序员最有用的工具。
Reason 5: Scrum delivers ‘business value’。不是这样的,实际上,Scrum不可能。这有很多原因。真正了解业务的那帮人根本不可能加入项目团队,那些人谁TMD愿意和苦逼的技术人员加班啊。 那些人喜欢和我们的用户吃吃喝喝,花天酒地的,根本不会和你们那些奇怪的东西(如:backlog)或是那堆ugly的内向古怪的技术人员打交道,更别说什么技术了。所以,你的团队就像一个客服团队或救火队一样疲于奔命。
Reason 6: 一个敏捷的团队应该是持续进步的。这就是为什么Scrum总是在问什么干得好,什么需要改进,并定义行动方案。你真的以为员工想进步吗?让他们不得不去想想自己和团队怎么进步,然后他们还不得不去执行行动方案。别天真了,人的天性是不喜欢改变的,人的天性是习惯于一些按部就般的事的,也许那样做令人讨厌,但是人家还是能干点东西出来。如果你逼着人家改变,你就是在压迫人家,人家自然会反抗。
Reason 7: Product Owner 专注于 ‘what’ 和 ‘why’ 的问题,开发团队决定 ‘how’。很不错的分工,于是可以造就一个即高速有重质量的团队。然而,这根本不行。你的Product Owner马上就想要这个功能,他才不管你的软件开发的技术难题,人家只要快,要你meet deadline,要你给我们重要的客户做出承诺。另外,你千万不要以为你们可以哄走这个初级的product owner,因为他的后台是直接汇报到高层管理。你作为一个程序员可能只是其个小部门的一个小喽啰,或者只是外包公司,你觉得可能吗?你觉得建立信任可能吗?
Reason 8: 软件质量和生产率成正比。也就是说,质量越高,生产率越高。如果质量不高,你开发效率就会低下,但是谁管呢?我们朝九晚五的上班,质量好了也是做8小时,质量差了也是做8小时,无所为嘛。另外,我们的 project manager (或者是Scrum master!) 总是会批评我们没有按计划完成。所以,这根本 不可能。
Reason 9: “是的,如果我们只做需要的功能,那么我们就会最低的成本,对吗?”,为什么这世上总是会有这些幼稚的人?这种事怎么可能啊。很多很多的银行或保险公司的项目在你还没有启动项目前就谈好了一个价格(可能还会有回扣),为了打单子,销售什么都干得出来,让你去做项目是因为你是廉价劳动力,而且,他们会不断地加需求,因为软件合同谈好的价格时候,连需求都没有,你去做了才有,还是模糊和不确定或根本就是错的,然后需求是越来越多,越改越多。等你精疲力尽的时候,你才意识到,销售早就把你卖了。
爽啊,戴着黑礼帽思考问题比我想像中的要有趣得多,现在我必需要把它摘下来了。
看完这篇文章,你觉得是人的问题还是软件开发方法的问题?
(全文完)
(转载本站文章请注明作者和出处 酷 壳 – CoolShell ,请勿用于任何商业用途)
《为什么Scrum不行?》的相关评论
抢沙发, 公司尝试过几次Agile的方式,结果总是半途而废。。。。。。
呵呵,你又一次站在了风口浪尖。
btw: 能不能把文字的行距调整一下,感觉太密了。
哈哈, 上面提到的9个reason, 在我最近的项目开发中差不多都遇到了..
哈哈,这么思考问题咋看一下发笑,之后就是深思了
你这样砸某公司某些人的饭碗是不行的。。。
我没有砸某公司某些人的饭碗,我只是在告诉他们,一定要考虑实际情况,不然就会朝鲜人民那样的乌托邦了。
此文错别字太多。
我刚才改了很多,深夜+五笔,sorry
Scrum的基石也是人,不过却是理想化的人,如果不能结合实际,只想照搬Scrum方法论必然会遇到挫折,也违背Agile精神的初衷。
说的很实在
好的process都是简单明了的。Agile光名词,角色就定义了一大堆。老子虽然是玩C++的,但你TMD这个搞得比C++还模糊,一团酱紫,怎么玩?
我也不喜欢各种流程。对于软件行业,尤其行不通。
嗯,深有感触,老外的人际关系相对简单,比较能够公私分明,所以推行Agile有一定的现实基础。而景德镇人民的人际关系就太复杂了,搞技术的人玩不起。
错别字有点多哦,我真的非常讨厌销售,他们根本并不了解实际情况就把你吹得非常牛逼,无所不能,接好了项目你就乖乖加班去吧
我们公司也用Scrum,感觉效率并不高。
而我的体会是,Scrum适用于一帮资深程序员组成的team,每个人都是牛人,每个人都有激情干活,这样才work。在国内大家只是干活拿工资,没什么激情,很不适合Scrum。
我听一个人说process, “一个标准: just enough”
对于第九点,体会太深刻了,基本上签合同的时候连需求都没有。
微软当年也是这样,所这功能能做不?能做。给客户就蓝屏,然后补上一句,补丁马上就到。
不过话说回来,虽然我不喜欢各种流程,但是又有什么更好的方式来组织调和程序员们呢?
别字有点多啊,呵呵
恶性循环和良性循环
只是国情下,恶性环境的概率更高,但也不等于说没有良性的环境,作为底层管理者,应该尽量为团队撑起一个尽量良性的环境
吼吼,太符合偶们公司现状了
Agile的基石是和人的天性相违背的,但和人对于成功的渴望是一致的!
我们team也在搞scrum, 对scrum的感觉,从一年多前的激动,相信它是一个能帮助我们更好,更快deliver product的好东西,到现在对scrum的失望。 我觉得scrum完全不适合我们现在的项目,现在的team。一直觉得想找个地方宣泄一下,可是,满世界都是讲scrum如何如何适合,如何如何好,难得听到一个不同的声音。甚至我有时候怀疑,到底是我自己不行,还是scrum的问题。曾经私下和其他team member交流。原来不是我一个人觉得不好。可惜,team里的pm一意独行,大家就算不满意,不喜欢,也不大敢提出反驳意见,或者干脆怕麻烦,pm想搞什么流程就搞什么流程。反正我们公司的产品能不能deliver和大家的工资又没有关系,performance是pm决定的。
我觉得我们不适用scrum,是由下面几个原因决定的:
1.大家对技术不熟悉,因为目前主要的工作量在前端。大家以前都是做java后台的,对js不熟悉,把js当作java来面向对象。而且没有一个成熟的控件库使用,结果代码写的那个乱阿,一堆callback能把人绕晕了。
2.没有在项目开始前作足够的技术调研。本来,应该有个architector来做这些事情。我觉得什么TDD,就是胡扯。没有前期调研,什么都是假设我们能做到,然后就去break down,然后就是估时间,只能是瞎估。估完了,真正implement的时候才发现,一堆东西stand in my way。
3.人的本性就是利己。如果一个team的performance,不和salary挂钩,大家凭什么会齐心协力,deliver更快,更好。目前情况下,scrum只是pm push developers的工具。现在,大家都想到偷懒的方法,就是尽量多估一些时间,或者implement的时候粗一些,反正都是一个个task领的,谁知道bug是谁的code导致的。以前如果一个人responsible for one module,就很容易知道谁的代码质量不高。
4.user story 拆分的不好,容易漏掉很多东西。大家现在都关注task,只想着做完就拉倒,根本不会想着各个task之间的边界和交叉影响。而且,大家现在就习惯看看task就做了,根本不会去看case,所以有些重要的flow全都漏掉了。
5.pm就是scrum master,整个team就是在一个不平等的环境下,scrum只不过是pm试验的工具,能在她的简历上添砖加瓦。我们只不过是小白鼠。
也许scrum是个好东西,但是我觉得要先看看是不适合自己。
@蒟蒻,谢谢你的分享。无论现实怎么样,我们都保持经常性的反思。
好名字,“够弱”的。
他们就是正要加需求… 搞得我们计划总是完成不了, 还要挨骂, 恨死他们了
@陈皓
问题是你再怎么告诉他们,某些人就只会靠概念、眼球、事实而非的东西来忽悠人,你这不是砸别人饭碗吗
感觉要实施这个,肯定需要一种环境,需要一种工程师的氛围才行。国外这样的公司还是有的。而国内,大公司的开发都是鸭梨很大,如果和工资挂钩的不紧密,能偷懒就偷懒那种,作为一个不太称职的pm,我也没办法。而创业公司就可以这么做,团队小,利益没有冲突,有激情,但是前提是大家得有一定的能力,而镇内就难说了~!
@xjb
用Safri浏览器。Mac产品区别于微软字体渲染哲学的的渲染效果绝对是浏览Blog的最佳选择。
@大家帮助大家
这两个字读jǔ ruò
开个玩笑。其实叫“够弱”也挺好的。就跟叫狗剩一样。
互联网就是一帮动物+下半身写作的。
古狗,雅虎,搜狐 …
QQ,360…
互联网就是一帮动物+下半身写作的(确切将是右下角)。
古狗,雅虎,搜狐 …
QQ,360…
有一种东西叫目标,目标就是说你不一定可以达得到,但应该去争取的东西,怨事疾俗不是解决问题的根本方法,要达到一个良性的环境那是要做很多努力和牺牲的。妄想通过scrum来拯救一个根基都腐烂了的团队那叫扯蛋,如果大家 都不安于现状为什么不积极一点呢。TM的整个社会都在剥削劳动者,难道连自己都要把自己绞烂吗,那不是SB吗
@蒟蒻 其实我感觉,Scrum的目的是在与持续改进,重点在与每个周期结束时候的回顾会议,再搓的团队只要能够持续进化最后都能晋级(稳定的团队)。Scrum的基石在于开放的心态,能够坦然承认“哦,这是我的问题”的成员更适合这样的团队。Scrum的信任在于平等的沟通。
很认同,我们公司的一个团队用了这个流程,是一个有野心的PM搞的,结果,把自己搞的人不人,鬼不鬼,团队成员天天混日子,混加班,质量是越来越差.
很奇怪的是一些大公司招人还都强调Agile。
@陈皓 Amaron是不是也是这样呀?
有人的地方就有江湖,就有人事,很多事都是差不多的,要么是这样,要么是那样,表现形式虽然不一样,但本质上都差不多。人性使然啊。
我们的问题,就是没有平等的沟通阿,PM是个很强势的人,同时又是scrum master, 每次retrospective都是形式,大家的performance 都取决于pm的感觉,谁愿意去触他的霉头啊,久而久之,都没激情了。而且,连product owner都觉得pm在干涉需求,PO觉得重要的功能因为没有前期调研,基础东西没选好,根本做不出来,或者要花公司不能接受的代价才能做出来,一个连PO都失望的东西,让devs怎么能有激情。
不能一下子打死agile阿,agile有些东西也是很好啊,持续基层,有效地ut对提高产品质量的确是有好处的阿。我只是觉得,scrum要按照不同的team,不同的project,来觉得要不要用。scrum不是灵丹妙药,也不是非用不可。不能为了用scrum而scrum.
哥为他总结一下,Scrum不合适的原因大抵如下:
1. 办公室政治和竞争
2.大多数人都在混日子
3.要放一个PM把团队拖垮
4.使用Scrum的公司都是些吝啬鬼,不愿花大价钱,让廉价的劳力发挥更大的效力
5.了解业务的人不会愿意跟团队一起工作
6.人的天性是不喜欢改变的, 员工其实不想进步
7.Product Owner权力凌驾于团队之上
8.软件质量提高不可能带来生产率提升
9.需求肯定不明确,肯定越来越多,因而项目肯定是赚不到钱的.
1、3、5、7、9 的问题更大些
@xjbean_xiong
总结的很好
早就发现人是最重要的因素了, 如果team里全是开朗上进无心机的牛掰程序员, 不用你推动也会自发形成scrum团队.
说到最后,原来是领导(PM、PO)的问题了,不要赖普通成员懒,更不要赖scrum
本来就希望领导能撑起一片天空的,他带头黑,底下的人自然只能要么离开要么混、应付了
你们团队有做回顾会议吗?你的这些意见都可以在回顾会议上分享给团队,依靠团队的智慧来解决。Scrum并非一个流程,只要依葫芦画瓢就可以的。@蒟蒻
尽管你和原作者的内容基本不离谱,但是出发点好像非常不同。原来的作者更多是为了实践黑帽子而来的戏言。而从你的红字来看,你更多把这个当真了。并且希望以此为依据,“友情”提醒,顺道批批scurm的传道者。我以前常常听说“具体问题具体分析”这句话太对了,以至于毫无沟通的价值,你的重视人,人是核心的资源的想法也是太对了,但是我希望看到你对此本身的论述,而不是说有人简单的推行scurm,不多多的提到人的因素而不爽,因此就假途灭虢。文章提到的原因几条其实是司空见惯的,过去会有,现在会有,未来依然会有,而我们要做的是,如何把这样的状况一点点的变成更加坦诚,高效的沟通环境。相信经过漫长的博弈,很多优秀的人会发现坦诚一点和隐藏内心的真实想法而让自己受伤来的更好。
关于reason1,。连杰克韦尔奇也说,缺乏坦诚是商业社会的最卑劣的秘密。可见曾经号称世界第一ceo对此也非常痛苦,而他把坦诚作为高效企业的第一条法则也就不为过了。创造安全的环境,让大家自由的表达,是创新的核心。创新第一,并且包容失败必须领导人有足够的胸襟和气度。这个不容易。但是竞争激烈的环境,必然让他们一点点的发现,坦诚是最简单的方法。面对各种各样的办公室政治,坦诚是最直接的解决问题的诀窍。坦诚不等于交心,而是谈事。和人的沟通的挫败常常会有,克服或者说与恐惧同在,比起玩弄或者鄙视办公室政治来的简单、痛快、大气。如果这次不行,还有下次,如果今年不行,还有明年,一旦有机会,常常的历练就会让你更加容易把握这样的机会,帮助公司和同事腾飞。
关于原作者的出发点,http://maurits.wordpress.com/2011/07/13/why-scrum-will-never-work/ 的第一个回复就是“作者不过是为了带上思考帽”而来的的戏言,这一点和我看法一致。我觉得看看别人的评论,然后再对比下我们当前这篇文章的评论,就会觉得前者要成熟的多,后者则充满了受伤者的调调。不要鄙视’办公室政治’了,作为一个技术人员,花费时间去鄙视不值得。
关于 Reason 2:
我觉得假设人是“足够多的自由员工就能做得最好”并不是什么科学,而是经验,一个相比之下更优的选择;你相信这个能行,这个就倾向于能行。你相信他不行,他就会倾向于不行。不管怎样,我倾向于这个假设是更优的。至于“人的天性是懒惰的”这个可能是对的,也有人说”人的后天是追求虚荣“的,这就是说人性本恶。也有人说人性本善,到现在为止,这些哲学东西还并无定论。但是人的行为是要受到观察的影响的。相比之下,我宁愿相信人性本善,就是说,人为了更好的懒惰而勤奋,为了更好的虚荣而追求荣誉,比起相信人性本恶让人更好接受。也更加容易导出良好的结果。至于和报酬挂钩,不然就会混日子,我觉得大可不必——你要知道混日子其实对自己而言是很难受的。你要混日子只是对自己不负责而已。你想借此惩罚公司,其实只是惩罚了自己而已。真的要和报酬挂钩,更好的办法是做好工作,多多研究,或者换个工作,然后做好,然后研究。和混日子相比,前者更加容易有机会拿到更好的报酬。至于成为Teamleader ,我知道不少技术人员其实就是想做技术,觉得做tL很麻烦的。
About Reason 3:
PM进来管理,就必须“管得细枝末节,事无巨细”?这是什么逻辑?“天天让你做进度汇报,等等。直至把团队拖垮”,scrum的进度沟通(不少汇报,我不喜欢这样的词汇),不过是15分钟,大部分情况下,沟通好只要几分钟,哪里会被拖垮呢?确实是相当的blackhat。没有这样的每日例会,项目关系人总是看不到进展,程序员纯按自己的想法去做,这个项目非常容易走偏,多做无用功,这样的做法反而容易把团队拖垮。
About Reason 4:
是的,” Scrum 只不过是一个流程”。这样的调门,我见的太多了。“c#不过是一门语言”,everything 不过是一门工具,”你这样做不过是一种编码方式“。你总是站的那么高,然后俯视这个世界,殊不知你就在这个世界里。你就在每天编码,每天查找文件。这就是大家每天的工作,为何要轻视它。轻视这些工具,这些方法,就是在轻视自己的工作。
”这世上有太多的流程,尤其是那那些操CMMi的公司。几乎所有玩CMMi流程的公司,你都能看到的是员工都是那一副副苦逼的脸。所以,Scrum的流程同样会这样“。我傻,这是什么逻辑?就因为cmm苦逼,scrum是流程,因此也该苦逼?
”因为这些都不是开发团队自发出来的,而是上面管你喜欢不喜欢按给你的“。
我见过几个公司就是这样的看法,你试试后,如果你发现有用,就用。至少我们是这样的。
”Scrum 根本不可能增进你的软件质量和技术,只能是优秀的人才才可能“!
优秀的人才到了一起,如何分工,如何沟通,如何更好的协作?一将愚蠢,累死千军,”这个共同认可的流程就是将“。就是Doom的开发者和创始人卡马克都不排斥管理。他说,找一个项目经理把管理的事情做了,我不想弄这些事情。我觉得按你的说法,美国只要有Washionton,Paine,杰斐逊就行了,写什么”独立宣言“,弄什么宪法。bullshit。
不想继续评论其他reason了,都是差不多的逻辑混乱。至少在总结下,不要鄙视”办公室政治“,不需要指望销售人员做什么业务,不要鄙视”流程“,因为不值;不要轻视你的工作,你的code,你的工具,你都不重视,其他人会重视吗?——有这个时间,不如把技术变成你的核心竞争力。我和我的团队花费了8年的时间,逐步的做出各种各样的平台,技术,成果,终于让公司的”不懂得技术“的领导相信,技术是核心的竞争力,并且争取到更多的资源。我宁愿相信人性本善,相信人的进步,相信环境和轻量的,被接受的流程对人的进步、产品的进步的持续影响。而不是花费时间去疗伤;
scrum这个模式,搞得开发人员太少了,80%的人都在管理流程啥的。10个人,估计写代码的就只有2个。