« 软件项目需要很多人一起完成可能是一个骗局 | 返回首页 | 电子书平台及英文阅读 »

扯两句电厂经理

不知道我的读者里有多少桌游玩家。昨天我写那篇软件项目需要很多人一起完成可能是一个骗局 莫明其妙的就想到了 Power Grid: Factory Manager 这款游戏。

这是款我个人比较喜欢的偏计算类的游戏。玩家需要安排 5 个回合的工厂生产计划。购买机器、扩建仓库、发电。玩家需要支付电力成本,如果人手不够,需要雇佣临时工。偶尔,会因为场地不够扩建厂房。但是游戏只有固定 5 个回合。结束后,看谁赚到的钱多。当然,固定资产是不折现的。

初学者往往会一味的扩大生产规模。希望每个回合能比上个回合生产更多的产品。但是,玩过一两盘之后,就会发现,其实大多数情况下,到最后一个回合,扩大生产规模经常是入不敷出的。到第 5 回合开始采购的时候,一开始定下收益最大的采购方案,却发现利润是负的。然后削减经费,发现收支平衡;再削减,发现有的赚。最终发现如果什么都不采购,甚至关掉上回合采购的机器有正收入。

这个时候就该反思,上个回合雇佣的用来这回合采购的临时工其实是浪费了钱,上回合或许就应该减少开支,反正机器这次都停工了……

当软件开发遇到瓶颈时,我们很自然的想到,加几个人就好了。当然要加能干的人,属于领域知识的人,能干活的人。OK ,一切妥当后,团队磨合了,项目最终完成了,虽然比预期时间多了几个月,但最终完成了。

上一篇 blog ,在 reader 上有人反馈说,对于有时间限制的软件项目,个人精力有限是大敌,不得不增加人手,容不得时间你一两个人折腾。我其实想说的正是这点。表面上看,经过周密的组织,慢慢的增加合适的人手,项目终于做完了。表面上看起来,如果不增加人手是做不完那些浩如烟海,枯燥无味的工作的。但实际上还有一种可能,如果当初你决定不增加人手,一个人慢慢来,其实也能按期完成这看起来不可能完成的任务。

就好比,我玩了一盘电厂经理,完成了 5 个回合后,反过来发现,在第 3 个回合开始我就不应该扩大厂房,购买新机器,一样可以赢得游戏一样。增加的那些机器产能,让我不得不扩建厂房、优化人力、支付成本,最后也没多赚到钱。

Comments

初期就要建团队,我觉得

团队是很重要,深有同感

应该在初期就要把团队组建好吧,不然后期很玛法

感觉两者之间的类比不是很恰当

一个情况是资产被损耗了(交流障碍、怠工等),也就是整个过程的总资产没有按照预期增长

另一个情况是结束时资产还没收回,也就是结束的时候不是预期的结束点

我无恶意,但1人作为绝大多数软件的最佳人员配置方案,不赞同。这个边界与具体工程有关,不可一刀切。

我无恶意,但1人作为绝大多数软件的最佳人员配置方案,不赞同。这个边界与具体工程有关,不可一刀切。

振聋发聩呀!

要想到,增加人手意味着增加了社会就业,创造了社会和谐

一个人可以做伟大的作品,十个人就只能做平庸的作品

根据项目的情况与人的情况,决定一个团队应该要有多大,这是很有学问的一件事,你举的例子,其实正好在说明你没有在本质上完全了解这一点。这个牌的玩法,说明的正好是边际效应理论,过多的东西是灾难性的,但过少,就肯定是失败的。什么东西都应该有个合适的规模。而这个规模的合适,与项目及人直接相关。

张五常说过,一个人建一个房子要一百年的化,十个人要十年,一百个人要一年,一千个人一个月就可以完成。但十万人的化,一万年也建不起来。大概是这个意思,具体不记得了。你这两篇博客讨论的是边际效应的问题,经济学上的理论。

对一个MMO,一个人开始要很久,十个人可能有个质变,但一百个人,也许是个灾难。可惜,老板不懂得这个道理,你也不懂。老板以为人越多越好,你以为人越少越好。

云风老大,写一篇游戏服务器架构设计方面的文吧(各个层设计,概述性质的)Orz

一个人开发一个软件,至少有一个用户;五十个人开发软件,可能会浪费一些精力在沟通上,但是至少有五十个用户;如果全人类一起来做一个项目,完了之后就够全世界用了^_^当然这个沟通成本估计是非常非常恐怖,以至于实际无法完成。
想到这里,突然想起《圣经》里面的巴别塔……

其实是一样的。一个人做一个项目肯定不会有沟通上面的浪费。但是当你要把两个人分别做的东西集成起来的时候,前面节省出来的沟通成本就体现出来了。
我们之前考察过一些开源软件,发现要在我们的产品里面用起来,都要花很大的经历去改造,极端情况甚至还不如自己再开发一个。
所以集团军开发相当于一开始就把沟通成本算进来了,一样一样的^_^

最有效率的方式肯定是让一个人做一个项目。但是很累嘛!有个人陪着做就好一点。记得有个曲线就是说效率和人数的比例。貌似两个人是最佳的组合,再多就会让责任分散效率降低……然则这和电力公司有什么联系 = =

顺便……云风对LCG类的桌游有兴趣么么么么么么

补充一点,成本有资金成本和时间成本;有时为了节省资金可以让几个人慢慢做;有时为了节省时间可能需要让一个队伍来做(队伍规模根据项目规模权衡)。

人多了有沟通和协调的成本,而且成本随着队伍规模成倍增加,但是加入一个人手的好处是线性增加的(这里不考虑新人拖后腿的情况),所以需要一个权衡。

我厌倦了辩论,我只想指出某种可能性:

可能世界上不存在几个真正的大项目。它们只是看起来大而已。或者是因为我们认为它应该大,增加了人手以后它果真就大起来了。也不可能再小回去。

如果游戏有10个回合,你也在第3个回合中停止扩张吗?还有游戏中的规则未必贴合项目实际情况,比如说增加机器对当前回合来说是负收益,软件开发中并没有类似的情况吧? 培训,磨合是个开销, 但很少是在最后临近交付的时候才想到加人吧?

如果大于5回合呢?也往往是时间周期很长的软件项目需要加人手。风云有兴趣可以算算到底多少人月的项目适合一个人干。我感觉一个人和团队在软件项目中并不冲突,但是应该有个边界值来确认更适合哪种模式。

你的比喻应该是不恰当的。
《人月神话》里有一段是关于这个的,我记得好像是说小而精的团队是不错,但是对于真正巨大的工程来说,是无法完成的。

就如同你所开发的网游,没有大量的人员,只靠最初的那些人,应该是肯定无法做到现在这个地步的吧?

Post a comment

非这个主题相关的留言请到:留言本