最近正在看《大教堂与集市》这本书,书中所提倡的集市模式令我深有感触。
集市模式的概念有很多方面,其中一点就是强调“齐心协力”,一般一个开源项目,就像一个自由市场,大家依靠兴趣集结在一起,这个时候“命令模式”是行不通的,系统中每个个体都追求自身效用的最大化,在其共生的过程中,能够自然建立一种具备自我纠错能力的秩序,这个所谓的“共识原则”达成的秩序往往比集中式规划都要精妙和高效。
从半年前开始,我就尝试在项目中使用敏捷开发,期望能够达到集市模式类似的高效。敏捷开发强调沟通的及时,成员的自主能动性。为了能够实现这样的效果,我尝试在团队中营造自由的氛围,分享的氛围,给予自由度让每个组员都能找到自己合适的工作节奏,能够保证目标的完成,同时又不会使得自己过度劳累。不强制加班,但是如果碰到未预料的问题或者未预见的工作会减慢进程,期望团队会通过加班来完成预期目标。如果任务分配的不饱和,且有富余时间,期望组员会主动take一些无主的任务。
坦言说,外部环境差不多都有了,我们使用Trac进行任务单的管理和跟踪,使用wiki和blog分享项目经验和知识,不定期公司有各种类型的培训。组员也有完成任务的自由度,我们每两周做一次任务规划,所有任务都会被登记如trac中进行跟踪,有些任务会指定责任人,有些任务则等待组员在完成计划任务后主动认领。
但是从半年的实践来看,我们的尝试并不成功,并没有达到敏捷开发或者集市模式这样的高效。每当一个周期接近结束时,无论之前计划是否饱和,总会有任务尚未完成,几乎每次都需要我来催促组员去完成计划任务。有些时候任务无法在规定时间内完成,组员也不愿意加班完成。
为什么会这样,为什么始终无法齐心协力?下面是我最近归纳的:
开源项目的参与者大多都是自愿的,依靠兴趣爱好团结在一起的,大家有做事情的主动性,不用发布命令,也会自主的去做事情,如果给他们发布命令,让他们做不喜欢做的功能,反而打击积极性。但是公司内部的项目却不一样,大家并不都是靠兴趣或者热爱项目而坐在一起的,更多的是工作需要而已,对所做的游戏没有多少热爱,就不能指望组员会主动的去完成更多的事情,让自己的游戏变得更好。
开源项目对所有人开放,这就意味着所有感兴趣的开发都能参与,能力强的能够做多一些,能力弱的可以参与少一些,时间多的可以做多一些,时间少的可以做少一些。但是公司内的项目却没有这样的条件,没有这么多的人力资源可以支配,也无法保证每个组员能力都很出众,却需要每个组员都深入参与其中。一般能力出众的人能够同时处理很多事情,比如说一个周期分配了10个任务,他能够根据优先级,合理分配时间,完成所有任务。但是不是所有的人都可以做到这样,曾经有个组员跟我抱怨过,他身上有太多的任务,他期望做一件任务然后再分配其他任务。
集市模式虽好,但并不是所有情况下都能发挥高效。或许Linux作者林纳斯的亲身经历能给一点佐证。在林纳斯的自传《只是为了好玩》中有段话:虽然我对Linux项目的管理风格赢得了媒体的赞许,但我再全美达的那段短暂的管理工作,却是无可推诿的失败。当时他们认定我该带领一个开发者团队,我搞砸了。要是有谁冒险进入我那个垃圾堆似的办公室,他就会知道,我在这方面毫无头绪。每周的进度例会、工作回顾、工作规划,我都没办法驾驭。三个月之后,我对Linux项目的管理风格除了得到记者们的赞誉之外,显然对全美达没有带来任何好处。