zoukankan      html  css  js  c++  java
  • 项目经理到底关心项目的什么?——有关外包项目成本的计算

      在描述项目的规模时,特别是在软件外包公司中,我们最常听到项目经理说的,应该就是类似“这个项目投入了XX人月”这样的话了吧。

      这样的描述方法,虽然直观,但是却隐藏掉了很多特别的内容。比如说,30人月的项目,到底是10个人做了3个月?还是5个人做了6个月?布鲁克斯在他的《人月神话》(一本有关软件项目管理的书)很明确的指出,人和月之前是不可互换的。也就是说,“10个人花3个月”和“5个人花6个月”之间有非常的不同。考虑一下极端的情况:依然是30人月的项目,是否可能投入30个人在1个月内完成?

      除了项目完成的可能性外,还有一个更大的不同,那就是做项目的支出,也就是成本。

      项目的成本从客户看来,或许的确仅仅就是人月数。客户可以用最简单的方法计算出他们的成本(也就是项目款):

    【每个人月的价格 × 人月数】

      或者直接给出价格以及期限,无需关心人月。除此之外,他们能做的,可能也就是想方设法去询到最低价,以及讨价还价——因为他们并不知道,也不需要去知道,实际来做这个项目的程序员有多少,以及他们的工资是多少。

      而从外包公司来看,情况就有所不同了。首先在期限内完成项目肯定是毫无疑问的,期间投入的人数,以及人员的配置,会有很大的不同。在外包公司看来,他们做项目的成本,即所有参与此项目的员工的工资(简单起见,其他开支暂且不考虑)。那么,由于每一个员工的工资并不相同,所以不可能以客户计算成本的方式计算它自己的成本。而在和客户商讨的时候,虽然也会用人月来和客户对话。但这主要还是用于预估,和实际的开销并无多大关系。

      几乎每一家公司都会有定岗定职定薪的做法。比如,把员工分为初级程序员,高级程序员,软件架构师,项目经理等。其作用一方面是为了内部的管理。另一方面,也为项目的成本计算提供了一定的依据。——毕竟,要罗列每一个员工的实际工资是一件比较麻烦的事情。同时,也要避免员工之间互相得知彼此的工资。

      考虑某A公司的职位的成本:

    #     职位         成本    
    1 初级程序员 3500
    2 高级程序员 6000
    3 系统架构师 8000
    4 项目经理 12000

      回过头重新考虑一下上面30个人月的项目:

      如果按10个人做3个月来计算,假设人员配置如下:

    #     职位         成本       人数     合计  
    1 初级程序员 3500 6 21000
    2 高级程序员 6000 2 12000
    3 系统架构师 8000 1 8000
    4 项目经理 12000 1 12000
    合计 - - 10 53000

      那么,整个项目的成本就是

    【53,000元/月 × 3个月 = 159,000元】

     

      如果按5个人做6个月来计算,情况又如何呢?(假设在项目中,每个职位都至少需要有1个人担任)

    #     职位         成本       人数     合计  
    1 初级程序员 3500 2 7000
    2 高级程序员 6000 1 6000
    3 系统架构师 8000 1 8000
    4 项目经理 12000 1 12000
    合计 - - 5 33000

      那么,整个项目的成本就是

    【33,000元/月 × 6个月 = 198,000元】

      可见,按第二种配置,整个项目的成本增加近25%。

     

      又或者,同样是5个人做6个月,撤销高级程序员和系统架构师,仅由一名项目经理带4名初级程序员来完成的话:

    #     职位         成本       人数     合计  
    1 初级程序员 3500 4 14000
    2 项目经理 12000 1 12000
    合计 - - 5 26000

      这时,整个项目的成本就下来了:

    【26,000元/月 × 6个月 = 156,000元】

      这样的配置虽然成本降低了,但仅仅降低了大约2%。同时,还不得不面对一个问题:项目经理由于需要负责很多管理方面的事务,不可能有太多时间去指导其他人如何去写代码,整个软件的制作,仅仅由初级程序员来完成,品质无法得到足够的保证。

      就上面的这个项目来说,假设项目款是200,000,那么第一种方法则大概获利25%;而第二种方法项目虽然同样也做成功了,但没赚到钱,去掉其他费用很可能还亏了;第三种方法则有面临项目失败的风险。可见,在相同人月的项目中,人和月的分配不同,甚至仅仅是人的分配不同,都会让项目有着根本上的不同。这不仅影响到项目成功与否,就算做成功了,利润是否达标,满足公司利益,也会有决定性影响。当然,以上的几个假设的例子,都有一个大前提,就是所有参与项目的人至始至终都在项目中,而没有去考虑人员的流动。

      在实际的项目中,人员流动是一个非常常见的现象:

      在项目刚刚启动的时候,一般只有项目经理,软件架构师和少数几名程序员参与到项目。作为先头兵对项目做整体的规划,理解业务逻辑,以及制定一些规则等。这个阶段参与者通常都比较少,一是减少开支。二是人少便于管理,在项目的大部分事情还未决定的时候,也可以减少由于规则改变而导致的无用功。

      到项目中期,不断得有人新加入到项目中来。这个阶段,项目的大部分规则,流程应当已经确定,并不会随意更改。新加入的大批人员会统一开会,熟悉这些规则和流程。然后各自负责各自所担当的模块,作业大范围铺开。

      而到了项目中后期,对已经编写好的代码进行测试也提上日程,一些专职测试的人员也会加入进来,编码和测试都在进行。这个时候项目进入高峰期,人数最多,加班也最多。同时也是最容易暴露问题的阶段。由于人数多,一些工作流程上的不合理会导致混乱。规则的不合理导致的问题,很可能直到测试时才发现。

      到了项目后期以及收尾阶段,绝大部分代码都已经完成并交付给了客户,测试也完成了大部分。这时,已无需维持臃肿庞大的体制。人员也被大量撤走,加入其他的项目。最后,可能仅仅留下项目刚刚启动时的那几个人。

      通过这种人员调配流动,一般都能减少成本。这也就是为什么,很多人会经常被拉去别的项目组。没做多长时间,又被撤走。有人或许会认为,自己被撤走,或者总是没人叫去帮忙,是因为自己做得不好。但事实上大多数情况下并非如此,也可能是因为项目成本过大。而有的人被拉去帮忙,也并不意味着他一定就是非常的能干,也可能仅仅是因为他的成本低而已。对,项目经理关注的不是你,而是成本。

      

      另外,也会有一些项目经常延期,拖延1年多,就是做不完。项目组里的人个个都想吐,但是项目经理却对此轻描淡写,完全不在意。更奇怪的是,部长对此竟然也无动于衷,甚至还觉得项目经理干的不错!究其原因,不外乎“做项目”这件事本身的性质。

      生意上的经典公式:

    【项目款 - 成本 = 利润】

      所谓“项目”,总是先有了需求才给予供给。所以,项目经理除了项目能否完成外,首要考虑的就是如何通过控制成本来提高利润。假如某个项目的成本控制得很好,而客户又同意一再拖延,这就意味着源源不断的利润。项目经理和部长的一大收入来源便是项目利润,何乐而不为呢?反倒是其他的项目经理,由于找不到有空的人,自己的项目无法启动,只能瞪眼吹胡子了。至于部长,他所要做的,就是让所有项目的利润总和最大化。只要能达到他的目的,一整年做一个项目和每个月做一个项目又有什么区别呢?

     

    /*
     * Yiling Zhou
     * Shanghai, China
     * -.-- .. .-.. .. -. --. / --.. .... --- ..-
     * ... .... .- -. --. .... .- .. --..-- / -.-. .... .. -. .-
     */
    
  • 相关阅读:
    1691: [Usaco2007 Dec]挑剔的美食家
    poj2892 Tunnel Warfare
    P3369 【模板】普通平衡树 Treap
    Splay的用法
    P3165 [CQOI2014]排序机械臂
    P2286 [HNOI2004]宠物收养场
    P3391 【模板】文艺平衡树(Splay)新板子
    3224: Tyvj 1728 普通平衡树(新板子)
    P2515 [HAOI2010]软件安装
    CF 219 D:Choosing Capital for Treeland(树形dp)
  • 原文地址:https://www.cnblogs.com/pastgift/p/2531274.html
Copyright © 2011-2022 走看看