真的是最后期限吗?

来源:互联网 发布:兴趣部落发帖软件 编辑:程序博客网 时间:2024/04/27 20:28

在项目制软件开发中,工程师和项目主管的主要压力来自于最后期限(deadline)。

有人或许说主要压力是来自于技术难点,但是事实上没有解决不了的问题,要么将技术难点攻克,要么绕过技术难点用其他的解决方案。问题在于解决技术难点需要时间,而这会让本不太多的项目时间更进一步逼近最后期限,而“按时交付”是评价一个项目成败的关键因素,所以压力由此而生。

不过,最后期限有时候是可以主动把握的。下面看我们的案例:

项目性质:技术外包

项目背景:长期外包合作

项目收款方式:按人头按天算酬

其中项目收款方式非常重要,直接决定商业开发应该如何进行。

1. 项目一次性付款

即一个项目一次性谈好需要多少钱,需要多少时间。那么这样最后期限已经基本板上钉钉,除非需求变更或者其他情况那么最后期限不会改变。

客户这么想:反正钱总是那么多,只要在合同规定期限内保证质量地完成就可以了。但是如果项目超过期限,那我们就要讨价还价了,找机会还找开发商捞点什么过来。

开发商这么想:只要钱到手了,在规定期限内保证主要功能完成就行,细枝末节的以及一些合同上没写明的灰色地带可以留在以后“维护阶段”进行。当然“维护阶段”是另外收费的。

项目经理这么想:只要安排好进度有条不紊地进行就可以了。技术难点得先通过demo的形式好好研究,只要解决方案可行就OK。。等等,怎么销售签的合同里面项目时长这么短?(销售想:不然拿不到订单啊)那我只能多安排员工加班加点了。

工程师这么想:这个项目时间这么紧,还有这么多技术难点(issue)没有解决,要在最后期限之前完成,压力还真大啊。。。得,谁叫我们是“责任制”呢,周末主动来加班吧。

2. 按人头按天算酬

这样的计酬方式外国外包经常使用,前提是乙方是专业的外包公司,在保证效率的情况下,甲方宁愿按天和人头付钱,这样避免因为项目复杂而难于估计进度。

客户这么想:外包就是保证了人力成本降低了很多,相当于我又多了几个员工。那么我保证每天不会让他们闲着,每天跟踪(track)进度,偶尔也可以用“责任制”来占点便宜,让他们每天加点班,不过合同写着我一天只出8小时的钱。就好像买了个服务器一样,不让使用率达到90%以上就是浪费资源,于是周末也可以让他们来上班,甭管有没有项目最后期限的压力,就算给两倍工资也比自己的员工要便宜,那么在相同时间多干点活有什么不好呢。

开发商这么想:尽量在不影响我利益的大原则下,让客户满意,过一天是一天的钱。周末加班也有好处,可以忽悠那个外国客户多给点钱,但是还要一些成本(或者不用成本)出来安抚人心。只要保证所有的加班回款要到位就可以了。至于客户用“责任制”来压榨我们,偶尔这样可以,就当是维护客户的关系(因为和客户时间越长钱越多,钱不是一次到位),但是频率高了就得马上给客户发email打电话开会了,要求是不是应该多加点人头资源保证“项目的高质量”。

项目经理这么想:现在和客户已经是长期合作关系了。那么来了一个项目,就由我们来估计进度,然后发过去给客户瞧瞧,只要不太离谱一般客户都可以接受。让工程师估计进度的时候多留点空闲(buffer)吧,这样可以减少最后期限(deadline)带给我的压力和风险,而且因为按天算钱,所以我们在本项目中拿到的钱也会多一点,一举两得吧。

工程师这么想:既然客户让我们估计进度发给他看,那么不妨在保证质量的基础上给自己留点空闲(buffer),一来项目做到中间谁知道有没有什么阻碍进度(block)的问题(issue);二来以前“责任制”也让他们占了不少便宜,得要回来一点,我可不想自己那么累;三来站在公司的层面项目时间长那么一点对公司也有好处,因为按天算钱。

于是,客户,开发商,项目经理,工程师,上上下下,不论采用什么的付款方式,都热火朝天快快乐乐地干着活。

但有时候又会出现一些灰色的东西,比如客户说这个项目必须在下周五之前完成,或者这周末必须加班2天“保证我们的进度”。然后过了下周五之后,工程师赫然发现居然项目还在每天更新,于是知道自己被当服务器使唤了。这个时候客户依然会发过来一些不大不小的需求变更或者任务,但是因为不是一个项目级别的任务,所以没有规定最后期限。这个时候,工程师或者项目经理有两种选择:

1. 主动询问该需求变更的最后期限

工程师项目经理想:这是一个专业(Professional)的表现。

客户想:其实这个需求变更也不是那么急啊,不过既然他们那么问了,那还是用“责任制”的方法让他们早点交吧,好做下面的工作。毕竟我们是按天算钱的,我可不想在这个上面花费太多的时间,时间就是金钱。

2. 故意不问最后期限

工程师项目经理想:这个问题既然他们没有提,而且根据email和电话会议的语气也不是那么急,那么我们干脆不提出来算了。提了之后他们肯定把不急的事情当作紧急的事情处理了,那么我们又变成服务器一样了,而且自己累不说,公司也少赚不少钱。就按每天8小时给他们干吧,如果他们不满意进度,可以在适当时候提出“加人头资源”的谈判。

客户想:。。。。。(没什么想的,没有人提问还想什么呢)

如果这两种情况摆在面前,你选择哪种情况?