Sunday, March 21, 2010

What is a successful project 何为成功的项目

When a client receives what he's been expecting, on time and for the estimated amount of money.

Project managers define this as: On Time, On scope and On budget.

"A successful project is where everyone involved is happy with the final outcome."

以上讲的是对成功项目的定义,说白了就是客户满意,觉得钱花的值。那有些什么事情会让客户觉得不爽呢? 没有按时,按量,按价把项目做出来,客户自然就不爽了。而速度、质量、价格三者本来就很难都保证,保证俩项,第三项势必就要有折扣,所以在谈项目的时候,应该充分考虑到三个基本要素,来报价。

The promise of a successful project is something we all work harder to achieve, but working harder is not the answer. Software companies need to work smarter before, during, and after development, to ensure that the client gets not only what they want, but what they need.

是不是死磕就能把项目搞好呢? 死磕能加大成功的概率,但是大家都是聪明人,从小比咱们死磕的人多的去了,但大多没咱们屌,一个原因就是用的方法不对。事半功倍这个道理在软件开发中一样通行。 给客户做项目,不是你做的自己觉得多屌就好的,也许技术屌,但客户用不上;或者东西做的复杂,但客户希望简单明了。多和客户沟通,而不是一味闷头干,也许成功概率更大。

讲回正题。没有规矩不能成方圆,开发软件也是一样。那么除了开发上的规矩,还有一些做项目上的规矩,大家又知道多少呢,等我一一道来。

1. Do you understand the value of consistency?

一致性,就是说做事情不要没事就换个花样。咱们如果今天开发用MFC,明天突然就改.Net了,后台就非要再玩玩Java,就过了。 一致性能保证产出,且每次质量不断提高。 从小一点的角度来看,程序里面也需要一致性。今天造个轮子,明天用一个库,都是不好的。不仅要自己的产品一致,公司内部一致,更要和高质量主流产品一致。例子我以后都拿.net说了。Microsoft Application Block,里面的轮子咱们如果常用,就可以提高效率,保持软件质量一致性。

2. Do you know that Rules are made for the guidance of wise men and the obedience of fools?

规矩是给聪明人用的,如果你觉得规矩不对,可以提出更好的改进。

3. Do you manage clients expectations?

客户的期望是需要我们提前打预防针的。 有几点需要注意的

  • 谈价钱的时候不要给区间。 你跟我说20-30w,也许客户的期望就奔着20w去了,30w就变耳边风了。而我们自己是啥意思呢,也许20w压根就没戏。
  • 软件是会有bug的,所以见下一条
  • 不要签固定价格的合同。 固定价格,保证没有bug?没可能嘛。所以得有个事后维护的费用,比如小时收费。开始额外收费钱,得让客户签收已有的成果。
  • 早点开始谈钱。谈完了客户就有预期了。收钱也得勤快。阶段性的收,阶段可以小一点。客户给钱总归都是不爽快的,收的勤快一点,客户还知道你在干活,达到了一个里程碑。不然突然一次收一大笔,让人肉痛。

4. Do you pursue short or long-term relationships with clients?

文中的建议是短期为妙。 对待客户,可以像对待一个长期的合作伙伴一样,但是做生意的时候,还是要步步为营。不要一次跟人说:“这个项目我们100w搞定”, 而是说:“你可以花5k,我们给你安排3个程序员一周时间来调查,给你做一个报告”。给客户以选择,也是给自己更大的机会。

5. Management - Is your client clear on how you manage projects?

这里讲的是和客户沟通项目管理方法。 以敏捷开发为例子,就需要客户的积极参与。这里面,由于管理方法的不同,会导致报价,合同方面的不同。 比如说客户想要一个软件,而我们告诉客户,我们用的是敏捷开发方式,所以你那边会派出人来参与项目,需求也可能会经常改变,我们可以估价一个到某一个阶段的价,然后后面根据进度来调整。 IT开发里面fix price的这种在鬼子这里真的很少见,除非合同额巨大,10M,20M,狮子大开口,不然都必然是会由于项目调整而进度资源调整。如果能尽量减少自身风险,同时让客户得到他们需要的软件,鬼子的这种分阶段报价方式可以值得参考。