项目完成时

事情的起源于昨天的一次对话。昨天有人问我,一个中等难度的手机网络游戏,支持大约2万人同时在线,项目周期需要多长时间?人员配置暂时可以按我预想的一样。我的回答是4个程序(客户端1主程1副程,服务器端一样),程序大概在一年完成,整个项目在两年之内运营。他说这个周期比较长了,业内大约是在8到10个月(我记得应该是这个时间)。

是的,周期是比较长。我想有一个核心的问题是,这个项目准备以一个什么样的目标和规模来做的。如果仅仅以完成契约为目标的话,完全不用这么长的周期,顶多两个主程,一个副程,即使这样,从零开始,6个月左右也可以完成。而我还知道有另外一个更快的途径,我知道网上有开源的服务器端的半成品,在此基础上进行定制的话,我想以我的能力的话,一个月即可完成服务器端,剩下两个月处理客户端也绰绰有余了,至于平台的扩展,我会在写代码中自动进行平台扩展,就像我的那个网游项目一样,公开的客户端代码其实是程序生成的。这样一个项目,一个程序在三个月之内完成了。

问题在于,这样的项目方式是一次性的,就像避孕套一样。对于大的公司来说,这样的方式可以作为对某个新的小行业的一个测试,但对于一个新成立,想要长远发展的公司来说,这样做的危险性几乎相当于自杀了。因此,我按照正常的方式做了一个非常安全的预估。

项目的起始以完成客户要求为第一准则,但实际的客户要求在项目刚开始时往往都非常简单的,而在项目进行中,会进行经常性的变更,甚至是反复式的,根据我的经验,这些后期的更改要求经常超过起始要求一倍之多,因此这个是必须考虑的要点。

项目组人员的配合度,一个合作项目,离不开团队内成员的支持和协作。对于游戏项目来说,几个团队的合作是经常的事情,比如程序,音效,美术,策划的互相配合,即使每个人都非常想完全与别的组合进行完美的配合,但在实际情况中,往往会出现一些意外,举个例子,比如程序进行到某个阶段的时候,突然发现某些美术资源是必须,而这些资源在前期的安排中并没有考虑优先,美术这边就必须进行临时的流程调整,策划甚至模块测试部分也可能要调整。还有就是一些辅助工具的制作,这些工具是一次性使用还是作为一个公共的资产反复使用,其难度和规模也是不一样的。因此,这些也必须要考虑的。

项目进行中还需要考虑的一个因素是人的因素,毕竟这些内容不是机器在做的事情。我们要考虑人为的错误,理解的错误,知识的欠缺,由于某件突发事件而导致人员不到位的情况。比如主程和副程,甚至极端到所有人集体离开的情况。这便是项目进行中的风险评估,而所进行的项目是否是项目进行人员所中意的项目,他们的心理因素也会影响项目的顺利进展的。

项目在上述磕磕碰碰的状况中,进行到后期,必须要考虑测试的影响,测试安排的时间,强度,周期,问题的发现,解决,调整这些都必须要考虑进去。而有些严重的问题,在测试的过程中发现了,而有些问题可能会严重到让制作人员欲哭无泪的感觉。比如预期安排是2万人在线,而制作过程中进行的测试是500人在线,同时,依据游戏逻辑的运算能力和硬件的预估支付价格等因素,考虑到1年之后硬件价格下降,运算能力提高,可以达到每台2万人在线的要求,而在测试的时候,发现并没有预估的那么理想,然后,服务器必须更改成模块化,分布式的,服务器程序员将会害怕这样的调整。

终于,项目可以运营了,这个项目运营的规模或许不如人意,或许非常的美满。毕竟,我们都是在做预测,我想,俄罗斯方块的初始作者也不会想到俄罗斯方块能如此流行。这个时候才是真正的挑战架构师水平了,虽然架构师的工作在刚开始进行,但挑战却是在最后出来,及项目扩展的灵活度和难易度。一个不好的架构,即使添加一个小的功能模块也可能导致整个项目完蛋,而好的架构,可以方便的进行模块话的测试,扩展。运营时还必须要考虑一些周边的元素,比如管理问题,在项目运营之前,所有的人员可以简单的认为在一块工作,一块吃饭,一块睡觉,其思路也是一块的,但到运营阶段,运营人员可能完全不明白那些复杂的事情,你不能告诉他们,负载是如何计算的,延时是如何产生的,而他们,也只会告诉你某某出错了,就是出错了。因此,必须要考虑对服务器进行管理及监控的程序制作,而且这些必须直观,就像twitter,服务器的状态和管理都在web中完成,简单明了,一眼便可关注全局。而这些内容,却又必须在前期规划中考虑到。

当然,还有一个不是很严重的问题是看待周期时间的标准。我的理解是,项目周期是一个项目从开始到结束的时间,这个和工作量的衡量是不一样的,如果按照工作量人月的方法,这个项目在程序部分大概是在48人月,但真实的情况却不是这样子的,真实的工作人月应该在24–36人月之间。在游戏公司进行的项目中(尤其是手机游戏),很难想象几个项目人员完全扑在了一个项目中,比如上述的人员安排,两个副程如果完全在这个项目中的话,实在是浪费,他们在大部分时间都在打酱油,他们的最初安排是替补人员,而在公司的项目安排中,他们大约有3/5–4/5在其他项目中,当然,极端的情况是,主程在项目刚开始的时候就闪人了,留下副程完成几乎所有的内容了。我自己进行的那个网游项目周期目前是从4月初到10月底,但人月计算下来总共最多一个人月,这中间还包括研究我不熟悉的javascript架构类库以及使用等等。

从表面看来,这个项目的风险是比较大的,但正是因为有这样的庖丁解牛(自嘲式),项目才真正的从预想落到了实际操作,才真正的可以制作执行,从这个角度来说,项目进行的可行性提高了,风险反而降低了,项目可以正式开始了。

我坚持着好的开始是成功的一半,也坚持着只有坚强的耐力,才能跑到终点。而处于对初始公司和大公司制作的角度不同,目的不同,因此,我预估了安全的项目周期是程序一年制作,运营两年之内完成,当然并非人人都赞同这点。

发布者

rix

如果连自己都不爱自己,哪还有谁来爱你