程序员如何承接软件外包项目
May 15th, 2009 in Freelancer 经验分享
现在外包的软件项目不断增长,但随之而来的,承接外包的软件公司、软件团队
也越来越多,包括很多个人 SOHO 一族也加入到承接软件的竞争行列中来了,
因此现在对于软件项目的争夺也很激烈。有很多人不知道上哪里去争取项目,总
是抱怨没有项目做;也有的人虽然编程技术不错,但是对于与客户谈项目却是一
窍不通,结果应该拿到的项目也拿不到手;也有的虽然已经接到了项目,却发现
在实施开发的时候遇到好多从来没有遇到过的问题。作为一个多年从事外包项目
接单的软件开发人士,我想从以下几方面谈谈我的经验,希望对大家会有所帮助。
第一点, 到哪里接项目
软件团队或 SOHO 最为关心的一点是在哪里可以找到项目做,也就是到哪里可
以找到有外包需求的客户。对于一般人来说,广交朋友然后通过熟人介绍还是接
项目的第一途径,但这要求你的朋友或熟人要在企业或公司里有比效重要的管理
位置,对于像那些每天只能是埋头写代码的程序员这显然是不太现实的。所以大
家不能等着项目来找你,而是要主动的出击去找项目。
现在网上有很多软件外包网站,在这里你可以找到不少的软件外包信息。比如
GAF (即 Get A Freelancer – 是目前国外最流行的外包站点)上就有大量的软件外
包信息。不过这里每天外包的项目虽然很多,但竞争也很激烈。一般一个外包信
息发出后一天内就会有无数个竞争者(很多印度阿三在和你拼报价),所以能第
一时间与客户取得联系是非常关键的。因为客户一般都是先入为主的,一般来说,
如果第一个谈项目的人他觉得满意了,就会对其他的竞争者不再予以考虑,所以
你要经常上网站上看看有什么最新的项目,并立即与项目的发包方取得直接的联
系。其他比如 Elance、GetACoder、ScriptLance 上也有很多外包的信息,大家可
以自己上去看看。
是不是第一个联系了客户就高枕无忧了呢?也不完全是这样的。前面说过了,一
个项目总是有很多人去竞争,就算是你抢先联系了客户,但可能后来又有不少人
也同样联系了他,而客户在这种情况下一般是处在比较犹豫的情形之中,这时,
你就要经常不断地联系客户,不断地征询客户的意见,询问客户的项目需求,把
你对项目的理解也经常与客户交流。这样,客户会觉得你比较有诚意来接这个项
目,就会比较倾向于把项目交给你来完成。有时,与客户拉拉家常,也会拉近你
与客户之间的距离。说不定你会意外发现客户原来还是你的老乡,那就更好谈了。
总之,如果你想要想争取到项目,就要经常不断地与客户保持联系,直到最终达
成意向。
第二点, 如何与客户谈需求
接项目最重要的一步是与客户谈需求。客户对软件的需求是项目规划和实施的根
本,所以在与客户谈需求时,一定要让用户将所有的想法尽可能的阐述清楚,并
把所有的要求罗列出来。这时候不应该害怕“勾引”起客户的潜在需求而增加设计
开发的工作量。而应该直接明白地要客户把项目的要求一条条地列出来。这时先
把条理、归纳、分析先都扔到一边去,用纸笔将用户最原始、最完整的要求准确
地记录下来。假如项目在你对客户的需求没有完全了解清楚的情况下就匆匆上马,
那么就会随时发生意想不到的变更,轻则使项目延期或超出预算,重则使得原来
已经做好的软件要彻底推倒重来。
所以我们在实施项目之前应该深入了解和挖掘客户需求,对某些不明确的需求要
与发包方反复进行讨论,对于项目实施过程中的需求变更要规定处理办法,并形
成项目的最终需求。在需求分析阶段,接包方首先对发包方的需求认真分析,然
后通过业务建模、会谈、问卷、需求会议等方式收集客户完整需求,形成文档,
然后经过客户讨论、客户审查、文档修订等多次反复的过程。有一点需要注意,
即使双方谈的很投缘,在讨论需求时也一定要详细周到,精确到每一条不能再划
分的软件功能为止。
小提示:要消除客户的疑虑 – 作为客户,他对于项目的承接者总是存在各种疑
虑。比如,这个项目究竟承接方有没有能力开发啊?项目组人员是否有这方面的
经验?是否作过类似的产品,是否有这方面的技术能力?会不会只是骗了预付款
就开溜啊?最后完成的项目能不能达到自己的要求啊?我们作为承接者,就是要
千方百计打消客户的这种疑虑。比如,你要经常准备好一些成功的案例和以前的
项目的 DEMO,就是把你以前成功完成过的项目,做成一个 DEMO 给客户看,
让他觉得你是有能力完成类似的项目的。俗话说,事实胜于雄辩,把你以前做过
的类似的项目 DEMO 给他看,好过你一遍遍空口的承诺。因为软件开发的过程
中谁也不能保证一点问题不出,相比较而言,一个有经验的开发人员会更容易得
到客户的信任。因为你已经有和客户的项目功能接近的案例,无疑会缩短开发周
期,技术上有更好的保障,因此客户也更乐于把项目交给你。所以,程序员平常
必须多花点时间和精力,搜集整理以前自己做过的项目案例,并把它们分门别类
地整理出来,遇到同类项目的客户,就可以给客户进行演示,这样客户就会放心
把项目交给你了。另外,把团队组成人员、技术能力、经验等客户看重的东西整
理出来并给客户看,也能够对争取到项目起很大的作用。
第三点, 如何合理地报价
在完全了解客户的需求后,下一步就是要确定一个合理的报价。接包方要从跟客
户的交谈中尽量地了解出客户的准确意思,思考客户想要的是怎样的一个软件,
项目复杂的程度多大,客户的要求有多高,客户的性格如何,能够接受的价格范
围等等,这些因素对于软件项目的报价都是密切相关的。如果客户要的是一个小
型的软件系统,不太苛求有多全面的功能,只要满足某一方面的需要,并且客户
又是一个比较随和的人,那么项目可以报一个接近成本的价格;相反如果客户要
求的是一个面面俱到的管理系统,需要有各方面的功能,缺一不可,并且客户又
是那种对项目要求严格苛刻,绝不变通的人,那就要充分考虑各种不稳定的因素,
报一个比较高的价格。
在很多的情况下,客户在跟接包方谈项目之前,心理都已经有一个价格底线。如
果要投入的费用超过了客户的预算范围,客户将不再与你谈该项目,他会转而找
其它软件团队商谈。所以跟客户谈项目的过程中要迅速地思考客户需求的真正含
义,能够通过某种转换和变通,把客户对于技术的要求与自己团队的技术力量可
以接受的价格相对比,从而得出一个双方都能接受的报价。在与客户的谈判当中,
灵活变通是成功的关键之一。当然并不是所有的客户都可以通过变通而满足,遇
到客户不认同项目费用的情况一定要处之泰然,真诚地为客户解释,把客户的需
求细化为技术上的要求给他分析,让他同意你的报价的合理性。即使客户对编程
技术不是很了解,但经过你的细致的分析后也会对你的报价表示认同的。
相关文章:软件外包如何正确定价
随着行业竞争激烈,越来越多的公司对信息化存在很大的需求,因而软件外包业
务近年来始终保持了较快增长速度。从这几年的统计数据来看,软件技术服务始
终以高于行业平均增长速度增长,软件外包的市场也相应地在不断地扩大。但现
实中很多人却感叹软件外包难做,其中最难的就是外包的定价,这也是由于软件
商品的特殊性所决定的。软件不同于其他有形的物质产品,比如电脑,由于制造
电脑需要原材料,还需要加工。把这两部分的成本加起来再加上利润就可以得出
一台电脑的销售价格。而软件不需要有形的物质,完全是程序员的脑力劳动的结
果,因而在很多普通人看来,似乎是不需要任何成本的。软件业者常感叹,企业
客户都愿意花钱购买昂贵的经营设备,却在软件上斤斤计较,同样是生财工具,
为什么花钱的意愿相差这么大?这样的想法也反映在个人客户身上,大多数的人
愿意花钱购买价格昂贵的 CPU 和显卡,但对于软件,只想到如何省钱,甚至使
用盗版。
本人在软件外包领域工作了很长的时间,经常接触到软件外包的双方,因此经常
听到项目双方的心声。外包方经常抱怨接包方漫天要价,价格贵得离谱;而接包
方同样怨声载道,认为自己的收入还不如一个民工来的多,感慨现在的软件比白
菜卖得还便宜。这其实就是因为双方对软件外包如何计价没有一个统一的标准,
因而造成双方在软件外包的价格上争执不下,甚至导致项目的谈判完全破裂。反
映在现实外包中,项目的发包方和承接方在价格这个问题上经常存在巨大的差距。
我就见过一个客户外包一个类似 QQ 这样的及时通讯软件,外包方认为正常的费
用只要 5 千元,而承接方却咬定要 5 万元才能完成。
那么对于外包的价格有没有一个统一的标准呢?当然有的。学过经济学的都知道,
商品的价格由商品的价值来决定,而商品的价值又由生产商品的社会必要劳动时
间决定。有形的物质产品是这样定价,无形的软件产品也同样是这样来定价的。
软件外包也有一个统一的计价标准,具体来说,外包费用=每位程序员每天的工
资×项目所需要的工期(天数)×人数。这里的每位程序员每天的工资是由当地
的程序员的工资水平来决定的,比如在上海,程序员的平均工资是 6000 元/月,
那么每天就是 200 元。项目所需要的工期是指按正常的每天八小时工作制估算,
该项目所需要的平均一般工作时间。注意,有些兼职者只能用业余时间来做项目,
因而工期就长,但真正的计算工期是以平均的社会必要劳动时间来决定的,所以
计算工期只能以正常的每天八小时工作制所需的时间为准。至于人数,因为有的
项目不是一个人就可以完成的,比如一个网站项目,就需要有后台程序员、前台
设计师以及美工共同配合完成。所以需要的人数至少是 3 人。举例来说吧,比如
一个软件项目,要求设计方在 1 个月内完成,大概需要 4 人的协作,地点是在上
海,那么项目的费用就是:200(元/天)x 30(天)x 4=24000 元。所以该项
目的合理定价应该是 2 万 4 千元。
实际外包时,外包的定价应该是在需求确定之后。接项目最重要的一步是外包的
双方在一起谈需求,客户在谈需求时应该把对软件的所有要求都提出来,而接包
方就依据客户的需求来确定项目所需要的工期以及人数,再套用前面的公式就可
以得出外包的费用是多少。接包方应该把计算出的价格详细解释给客户听,如果
双方有争议还可以进一步讨论。这样订出来的价格双方都会觉得满意,也有利于
项目的顺利实施。
当然在实际的软件外包中,实际的价格还要受到供求关系的影响。因为商品价格
虽然是以其价值为基础,但在供求关系的影响下会围绕价值上下波动。建议外包
方在发布项目时,选择那些软件外包公司和团队比较集中的网站,比如 Elance、
GetACoder 等,由于在这些网站的软件外包公司和团队比较多,发布项目后一是
可以马上得到回复,因而可以尽快找到项目接包方;二是由于竞争者众多,可以
货比三家,选择一个相对比较便宜的价格来外包项目。当然从承接方来说,也要
尽量避免恶性竞争,以免搞乱软件外包市场的正常价格秩序,否则到头来受害的
还是你自己。
总之,软件作为特殊的商品,虽然定价相对比起有形的商品来说要复杂一些,但
只要掌握了统一的价格标准,还是可以得出一个比较准确的报价来的。只要外包
的双方能心平气和地坐在一起认真计算一番,就能得出一个双方都能满意的价格,
外包的意向才能真正达成。也只有外包的双方按照按照统一的计价标准,遵循公
平交易的原则,软件外包这个市场才能不断发展壮大。
第四点, 如何组织团队
由于客户的需求是不同的,因而项目也是各种各样的。有网站设计项目、也有软
件设计项目,要求使用的编程语言也是多种多样的。即使是在一个项目中,比如
说网站制作的项目中,也有着前台的美工设计和后台程序的编写的分工。这些工
作如果全部交给一个人去作那是绝对完成不了的。即使是一个小的团队,也不能
保证所有的人才都齐备。因此最好就是自己把项目初步设计好,然后找合作伙伴
共同开发,自己总体掌握整个项目的全部进度。如果在身边没有好的合作伙伴的
话,网上也能找到不少可以合作的伙伴。
第五点, 如何能收到项目款
这是整个项目中最后也是最难的一个环节。即使你的项目做得再好,如果没有收
到款,那你前面的一切努力都等于是零。要想项目能顺利地收到款项,那么从项
目未开始之前的谈判阶段就要对这一点加以注意。首先要判断对方是否是真心外
包项目。这里有几点经验拿来给大家分享一下:如果你看到项目中说 “请提供完
整的解决方案和成功案例发到某某邮箱”,这应该只是想套取设计方案而已,发
几张你们公司或团队的推介广告和报价单给他即可。还有的客户张口就要源码要
设计文档设计方案的,这种人目的性太强了,如果你真给了他就再也不理你啦。
还有的外包方死活不肯介绍自己,不肯告诉自己是谁、怎么称呼、怎么联系、是
什么公司、做什么业务的,与这种连最基本的诚信都没有的客户就根本没有必要
谈下去。其次是判断对方是否有充足的资金和实力,项目要求是否合理(技术、
周期等各方面)。这个可以在需求的谈判中可以有意识地来加以探明,如果对方
的项目很大却老是强调项目非常简单,这应该是不想付足项目款;有的发包方坚
持不肯给预付款,老是要求项目完成后再交全部款项,这应该是没有诚心付款。
还有的项目要 30 天才能完成却只给几天的开发时间,这种项目外包方也是很值
得怀疑的。
对于软件团队或个人 SOHO 族来说,由于不是公司,对方对于我们的信任度不
会很高,所以对于大的项目一定要采用合同方式,这样出现问题才好解决。在合
同中,最好订清楚分阶段来付款,这样有利于分散风险。比如,一般要求合同订
好后先交 30%的定金,项目进行到一半后待客户验证后交 50%的项目款,全部
项目完成并交付后再交清全部款项。这样做对于客户来说也比较好控制项目的进
度,因此对方也比较容易认同并接受。
以上谈了软件团队或个人在承接软件项目时应该注意的几个关键问题,其实还有
很多问题由于文章的篇幅所限没有涉及。比如对于项目的选择,有的人大的项目
做不来,小的项目又不愿做。结果到头来什么项目都承接不到。因此一开始要把
自己的期望值放低一些,先从一些几百元的小项目做起,有了一定经验后再接一
些大项目,这样循序见进才能不断进步。