果冻:超总,听说你要讲MSF,我就先预习了一下,但是MSF的名词太多了,我真是头大,能不能解释一下这两句: “MSF的一个基础原理是学习所有的经验。这一原理在MSF过程模型里的关键里程碑上得到了充分的应用,在过程模型里愿意学习这一关键概念成功应用这一原理所需要的。愿意学习这一概念通过后里程碑回顾的经过检验的做法在项目里得到体现。在大型的和复杂的项目里,Microsoft建议是利用客观的外部服务商来确保有一个无过错的环境,并把学习最大化。”
阿超:你从×××到的绕口令?
果冻:MSDN中文官方网站呀。
果然,阿超在网上找到了这一段话(如图2-1所示)。
图2-1
他和果冻一起读了两遍,最后叹了一口气。
阿超:本来MSF挺简单明了的,这样一搞,反而很神秘晦涩了。
二柱:是不是有意搞得如此晦涩,以延缓我等的进步,阻碍我国软件大业的发展?
大栓:我以前听过MSF的讲座,觉得这玩意儿好像对大企业才有用处。而且MSF容易被人用来忽悠,我相信,一帮庸人,在MSF的大旗下还是庸人,只不过红旗飘飘,可以忽悠客户。
荔荔:我在网上看到IT企业有三大忽悠,大栓哥说的好像是第二种:
● 程序员用UML忽悠;
● 项目经理用Process忽悠;
● 老板用企业文化忽悠。
隔壁的小飞探过头来。
小飞:果冻,听到你还预习,我差点晕倒。
阿超:你说应该怎么学习呢?
小飞:好不容易出了学校,我现在对“学”好像兴趣不大,什么东西过耳就忘,要用的时候现学就可以了。
果冻:好像流行歌曲你经常学习,那些歌词你记得很牢嘛。
小飞:如果是载歌载舞,那倒印象深刻。可惜呀,MSF 好像不能载歌载舞,能不能在×××学MSF?×××、MSF都是3个单词的英语缩写,应该是兼容的吧。
阿超:果冻,你不用预习了,我会搞一个“白话MSF”,你一听就懂。为了让大家记忆深刻,MSF 的每个基本原则,都用一首流行歌曲来代表,小飞,你看怎么样?
小飞:好啊!如果你能带着阶级感情讲MSF,我就能声情并茂地唱×××。
阿超,好,那就听好了……
MSF,即Microsoft Solution Framework,也就是微软推荐的做软件的方法。
MSF简史:约摸在1994年,微软在总结了自己产品团队的开发经验和教训,以及微软咨询服务部门的业务经验后,推出了Microsoft 解决方案框架Microsoft Solution Framework(MSF)。当时的MSF只是这些经验和教训的松散集合。在以后的几年中,MSF进一步吸收了微软各个部门和微软的合作伙伴在实际项目中的经验。在2002年,随着Visual Studio .Net的发布,微软发布了一系列关于MSF 3.0的白皮书,针对MSF 3.0的大规模培训也在中国开始举办。当时有一个“Architect 2000”的全国巡回演讲,很多IT企业都参加了。
2006年,MSF 4.0随着Visual Studio Team Foundation 2005发布。它增加了不少敏捷开发的内容,并且明确描述了团队协作的典型流程和在新的团队协作软件包VSTS中的应用。
2008年,MSF 4.2随着Visual Studio Team Foundation 2008发布, 它在文字和表达上有一些变化,但实质精神和MSF 4.0是非常一致的。
果冻:哪一年出的2.0呢?
阿超:我们需要关心么?
荔荔:果冻是怕考试时会考到这一题吧。
阿超:我们可以不用管MSF演化的细节,要记住所有模式都不是一成不变的,关键是要掌握变化的原因。
MSF有8个基本原则,我把它们都翻译成中文,并加上了我的理解。下面来分别讨论:
(1)推动信息共享与沟通(Foster open communications)
(2)为共同的远景而工作(Work toward a shared vision)
(3)充分授权和信任(Empower team members)
(4)各司其职,对项目共同负责(Establish clear accountability and shared responsibility)
(5)重视商业价值(Focus on delivering business value)
(6)保持敏捷,预期变化(Stay agile, expect change)
(7)投资质量(Invest in quality)
(8)学习所有的经验(Learn from all experiences)
第一个原则,用大白话来说,就是所有信息都保留,并公开,讨论要包括所有涉及的角色,决定要公开,并告知所有人。当然,对牵涉到技术机密、安全性等信息要采取必要的保护措施。
二柱:我们以前都是“老板让你知道,你就会知道,别多问。”看起来比较好控制吧?
阿超:以前两三个哥们一起捣鼓软件,大家都知根知底,好像没有意识到“沟通”的重要性,但是随着项目复杂度和团队规模的增加,没有信息共享与沟通是万万不行的。
二柱:如果有一些事情,我个人也没拿准是不是要通知某一方面的人员,怎么办?
阿超:在这种情况下,宁可过分沟通。
小飞:这是不是很烦?我得不断地告诉别人——我刚做了某事,我刚做了某事,好像网上有不少关于 “修改了文档的一个文字错误,就要发邮件告知天下” 这样的事儿 ……
阿超:对,人不能被规则累死,最好是让这些通知能随着事件的发生而自然地传递给关心这些事情的人。例如,在TFS 中,你可以设置提醒(Alert),让TFS自动通知你你所关心的事。另外,在TFS中,所有和项目有关的信息都会保存起来。例如:所有工作项及其历史;所有源代码的修改记录。
TFS用户经常问的一个问题是:在TFS中,我为什么不能删除工作项?
答案很简单,MSF的第一原则:所有的信息都保留,并公开。TFS的记录就像银行账户里的资金流动记录,是不可以删除的。
大牛:有人犯了一些比较愚蠢的错误(比如一个很低级的Bug),TFS把它们都记录下来了,从个人角度来看,有人会说:“我知道我做错了,已经改正,那最好把原来的记录删除了吧”,这样做,不是有利于打造和谐的团队么?
阿超:和谐的“谐”,是一个“言”和一个“皆”字,说的就是大家都可以发言,所有的事情都要记录。记录留下来,可以做事后分析,给后来的同事,或者别的项目的同事学习。如果删除,那也就违反了第8条原则“学习所有的经验”。如果历史是一笔糊涂账,某些事件被删除了,或者不能提,哪来的和谐?!我们公司要建立“对事不对人”的文化,好像有一句古话,把人的错误比做日食……
果冻:“君子之过也,如日月之食焉:过也,人皆见之;更也,人皆仰之。”还有,“人谁无过?过而能改,善莫大焉。”
大牛:我们以前关于项目的好多事,都装在几个头头的肚子里,最开放的,也不过是把一些问题列在Excel文件,或者是MS Project文件中,但是也没有历史记录。
阿超:看不到所有的信息,那么项目进度以及项目中存在的各种问题就不能及时让所有人知道,这样MSF中其他的原则也就不能实行了。没有开放的信息,也就谈不上“授权”,或者“建立清晰的责任和共同的职责”,以及“保持敏捷,预测变化”。这也是为什么“推动信息共享与沟通”是第一个基本原则。
MSF团队模型和MSF过程模型也是建立在“信息共享与沟通”原则上的。
小飞:对于这一个原则,我要推荐庾澄庆的 “请开窗”——
如果相爱能轻易推测出结果
谁还需要用真心来沟通
……
阿超:“为共同的远景而工作”,对于这句话,大家是怎么理解的?
杂曰:这就是所谓同心同德。兄弟同心,其利断金。我们当然是同心的啦,大家都是哥们,都为了移山公司的兴旺才来的。
阿超:好,但是这里面提到一个“共同的远景”,这是什么玩意?
杂曰:就是我们移山公司以后要发!
阿超:发是肯定的,大家注意这个“共同的远景”是指产品的远景。我们做一个产品,不管是应用软件、行业软件,还是通用软件,要明确项目的目标是什么。
(1)这个目标必须是明确的,没有二义性;
(2)这个目标不是当前就能达到,必须是通过努力才能达到的;
(3)这个目标不是空泛的,它应该对项目成员每天的工作都有指导作用。每天你来上班,如果发现你做的事情对项目的远景没有帮助,你应该跟老板提出来。
荔荔:我们有些项目好像没法订出来这样的目标耶,或者老板也不清楚我们到底要干什么。
阿超:那么,很显然这些项目的带头人没有及格,这些项目最后没有达到预期的目标,也就不奇怪了,因为我们连预期的目标是什么都没有搞清楚。
大牛:能举例说明么?
阿超:比如我们村里曾经有个体育新闻网站,当时它的远景号称是——
“移山体育网提供即时、准确的体育新闻,它提供论坛,体育用品购物网络,使得体育爱好者能共享一个公平、健康、安全的交流环境。”
刚开始做得不错,我也经常光顾访问,但是后来好像新闻和论坛的质量都下降了,购物网页没有下文,几次改版之后,占据头条的经常是关于体育明星的小道消息,和他们传说中的女友传说中的三围尺寸,还有河曲村中上层人士争喝某种饮料的消息等。我一直想问谁是主编。
大牛:(举起手)我就是移山体育网的总编,刚开始,我每天做的事还是和我们最初的远景相吻合的,人气也不错,后来我们觉得什么能吸引眼球就上什么,慢慢搞成了四不像,名声也搞坏了。我们的内部远景已经改为——
“移山体育网要吸引眼球和广告,直到找到买家为止。”
大栓:大牛,你们啥时候改的远景?我怎么不知道?
大牛:这个要问阿超。
阿超:这样的远景也不见得错,但是不要忘了我们讲的是“共同的远景”,即团队的领导人要让全体成员都同意项目的远景,并为之奋斗。如果一部分人还为远景1.0而奋斗,但是另一半人却在为远景2.0而努力,那是要出乱子的。
如果没有“共同的远景”,即使团队发布了产品,不同的成员对项目是否成功,以后如何发展,也会有不同的看法,因为他们心里的远景(参照物)是不一样的。
小飞:对了,后来河曲村中上层人士争喝的饮料咋样了?
大牛:别提了,他们以货抵广告费,放在办公室的几箱饮料后来都被我爹扛回去喂猪了。
阿超:另外,在项目到了关键的时刻,我们再和大家统一思想,向往远景,已经晚了。
大牛:我想起以前国家足球队在某次世界杯的表现,预选赛到一多半的时候,足协的领导叫全体队员向国旗宣誓,我就觉得很搞笑,如果大家平时都目标一致,搞这种宣誓只是形式,如果大家平时没有这样的目标,突然间宣誓并不会让队员们突然更爱国,脚上功夫更好一些。
阿亨:另一个事例,说明远景也和实际工作有密切关系。大松博文在中国女排搞“魔鬼训练”的时候,如果大家的远景不是世界冠军,干嘛费那么大的劲?每天随便练练,早点洗洗睡得了。
阿超:对,如果我们移山公司的目标只是业余玩玩网站,大家干嘛费劲学什么MSF?
小飞:远景是由领导决定,还是自下而上形成的?
阿超:一般是由“有远见的人”提出,然后公开讨论,在讨论的过程中,可以消除误解,凝聚共识。这是一个项目的关键,是项目第一阶段要达到的主要目标。
二柱:这是不是俗话说的“统一思想”,或者另一个俗话说的“洗脑”?不是说国外不兴洗脑的么?
阿超:可以这样看,但是我们下面要说另一个基本原则,需要你的大脑有原创精神。
小飞:洗脑归洗脑,我要用这首歌曲表达洗脑后的心情——“嘻唰唰”:
闪闪红星里面的记载
变成此时对白
嘻唰唰嘻唰唰嘻唰唰嘻唰唰
……
这一点的关键是“授权”这个词,英语是Empower,是什么意思呢?
授权(Empower)有两个意思:一是给某人权力和权威(Give authority to somebody:to give somebody power or authority);二是给予某人更多自信和自尊(Inspire somebody with confidence:to give somebody a sense of confidence or self-esteem)。
在一个高效的团队中,所有的成员都应该能得到充分的授权,他们有权力在自己的职权范围内按照他们自己的承诺完成任务,同时,他们也充分信任其他同事也能实现各自的承诺。类似地,团队的顾客(包括内部和外部的顾客)也认为团队能兑现承诺,并进行相应的规划。
二柱:这样做好像很危险哪!
阿超:那应该怎么办?采用“命令”的方式?!
充分授权的管理方式是MSF的核心观念之一。MSF团队模型就是建立在以下两个原则上的:
(1)平等协作——成员之间、团队之间是平等协作的关系;
(2)充分授权给团队和成员。
这就是为什么MSF团队模型是网状,而不是层次结构。
这样做有什么好处?好处有两点:
(1)被授权的人会承担起自己对项目的责任,同时也期望同事们也同样对项目负责;
(2)MSF提倡自下而上的计划,每个人有充分的权力估计并决定自己的任务需要多长时间,而不是上级交给的时间,这意味着让真正做这件事的人按照自己的估计去完成任务。这样做的结果是啥?是人人都会支持项目的计划和时间表,因为这个时间表是每个人自下而上订出来的!