软件项目的成功,成于高品质的客户
本人从事软件开发将近20年了,见过太多的失败的软件项目,而软件项目的成功靠的是什么?我认为最重要的不是你的开发团队多牛逼,而是你的客户有多牛逼,选择好的客户,高品质的客户,是高品质软件项目成功的一般。
君不见一批批死在国企和政府部门的程序员,客户是完全高姿态,颐指气使的要求技术团队干这干那,但从来没有认真地思考流程,从不考虑需求的落地性,从不考虑某个功能实现的数据流上下游,只是鞭打笨牛一样要求技术部门加班加班,再加班,总是加班,无论项目成功与否,至少负责人在上级领导面前有了一个好的姿态。如果项目最后还是失败了,那自然有技术团队背锅,如果项目成功了,自然是负责人的领导有方。
呜呼、悲哀,程序员的悲哀莫大于此。
抛开商业和政治的因素,如果希望做好项目,首先,要选择好的客户,客户是平等姿态的,甚至是带着求教的心来与技术团队进行讨论的,客户给与技术团队足够的尊重,技术团队自然回馈足够的尊重。想拿牛眼冲天的大客户,在与技术团队交流的时候完全不把技术人放在眼里,结果,私下里技术团队也只得把客户的先人放在嘴边了。
优质的客户,会尊重技术团队给出的合理建议,技术团队给出的工期要求、人力要求、费用要求,优质客户会认真思考的。而缺乏智商的客户总以为人定胜天,总以为苦不苦看看长征两万五,只要功夫下的深,铁杵一天晚上磨成针,拍着大胖脑袋定下1个月再造一个淘宝的要求,那程序员只能仓促上阵,随便做几个页面糊弄客户。结果,这样的客户到处骂娘,说软件开发公司都是骗子,程序员全是笨蛋。而这个做软件,其实就是做工程,不给足够的原材料和时间、人力,怎么可能建造跨海大桥?我喜欢把软件项目比作行军打仗,所谓人马未动粮草先行,秦灭楚,必须给我60万大军,否则老将军王翦拼着杀脑袋的政治风险,也不赌上一世的英明。软件,亦然。
说到行军打仗,大家都能理解打仗前必须做好战术计划,如果没做到足够的战前准备,对敌方没有做到足够的了解,对交战地形没有了然于胸,则未战已知必败矣。如此浅显的道理,怎么在做软件的时候,这客户就从来不舍得时间和精力跟技术团队做好交流呢?客户怎么就总催促赶紧干,大干、快干、赶紧开发。怎么就认为技术团队在前期做需求分析,是在磨洋工,耽误工期,浪费时间呢?技术团队如果不投入三分之一的项目时间先做好需求分析和原型设计,是不可能做出好的软件产品的,如果需求分析三天,就开工拉架子写代码了,我基本可以断言这个项目必死无疑。
我其实并不是想吐槽那些失败的项目,因为对于技术团队来说,干一天活儿,给一天钱,损失不太大,真正损失大的是客户,花了钱了没买到好东西,甚至是买了完全没用的东西。
所以,我真正有感于写这篇文章,是连续遇到几个好客户,需求分析交流充分,项目做出来一个比一个漂亮,自己看着很爽,客户看着高兴,那钱给的痛快,咱钱拿的也踏实。在这里洋洋洒洒的抒发一下对这些客户的感激之情,也交与各位同行共勉。