为什么越来越多的程序员不愿做做外包了
这里我说的“不做”,是指:不作为承包方,承接外包业务。不是作为员工不进外包公司工作,到外包公司打工,我一点意见都没有,只要工资给够就行,什么外包学不到技术之类的,我哈哈哈哈,仰天大笑……(以后有空再解释,其实我记得园子里和知乎的一些回答里都说过很多次了:学东西要靠自己。公司不是学校,给你工资是让你干活,不是让你学技术的)
做开发快十年了,有好几次朋友同事都问我想不想接点“私活”。我的答案始终如一:干不了,谢谢。
因为我觉得说“不想干”,太……太那个了点。别人给你介绍一个业务,总是好意,你一口回绝,有点不近人情的?所以就委屈点自己吧,技术不行、时间不够……总之找个不是理由的理由。
但总有些话,不吐不快,借着今天这个由头,一起说开了吧。
因为都知道我以前做个律师,所以“一起帮”上就有了这么个求助:一份软件研发合同。呵呵,不错啊,已经出现“多元化经营”的迹象了。
合同的问题和我预想的差不多:
涉及到需求,就是一些“不恰当的”“随意的”“过多的”“少量”……而这些词,就是以后纠纷的根源。什么叫“过多”,什么叫“少量”?什么时候是“恰当的”,什么时候是“随意的”?
说起来有些奇怪,我做过律师,但我最烦的就是“扯皮”。是不是和“卖味精的不吃味精”一个道理?差不多吧,因为长期在纠纷的漩涡中挣扎,就特别痛恨纠纷——尤其是这纠纷还是自己造成,或者需要自己承受的时候。
外行对律师有很多误解,以为律师贼眉鼠眼的一天到晚“想钻法律的空子”;就像外行对软件开发的误解一样:就这么改一下还要另外收钱?!
除了律师,我还做过装修:家装。在做软件开发之前,我以为家装的业主就是最“烦”的(原谅我说实话吧,不干这一行了,终于可以喷一下了)。有些业主,一天到晚的改啊改啊,在图纸上改还好一点,最坑的是做都做完了,才哇哇哇的叫:“唉呀!怎么是这个样子?!和我想的不一样/我觉得不好看啊……”每次听到这种话,我头都大了!全身的力气就好像被抽空了一样,无力吐槽,就酱紫的。
但做了软件开发,才发现……哈哈哈哈!
家装过程中的的那点改动,和软件开发中的改动比起来,简直就小巫见大巫了。
首先,改动的责任,或者说改动的费用由谁承担,家装工程中是比较清晰的。作为施工方,按图施工,图纸是业主签了字的,所以只要没有质量问题,你业主要改,责任肯定是你业主的。但软件开发呢?有图纸么?你说我有《需求文档》,你确认?你确认你能按这种需求文档干活?
说实话,我看到“参照”两个字腿就发软。什么叫参照?你说复制我都高兴一些。参照不是复制哟!参照就意味着我可以进行“局部”修改哟!但改哪些局部呢?这些改动是不是真的是“局部”的呢?鬼大爷才知道!
然后,你再看看这个《需求说明书》。我都不知道怎么评价它,简单,简陋?我真心觉得是惨不忍睹。都不能说是坑了,就是个崖,悬崖,万丈悬崖!
我记得我以前举过例子,用的是“注册/登录”,你看这需求也有意思:是否需要短信验证。可能刚想到的吧,但想全了么?里面的花样还多着了,比如:
能不能QQ登录,微信登录?
如果可以,登录时记录哪些信息?
登录后还需不需要在本站注册绑定?
注册时用户名有没有关键字限制,比如色情的反动的容易让人误解的(如:系统管理员)?
限制怎么处理,人工审核还是自动过滤?
怎么给错误提示?
……
整个合同金额才两万元,但如果说较真的话,可能这两万元就够做一个注册/登录,你信不信?
那到时候怎么收场?
其次,改动的费用怎么算?
我们假设,发包方比较讲道理(其实都不能算“讲道理”,只能说人家比较“豁达”,因为合同需求不明,人家不一定输道理的),承认加钱。但加多少呢?
很有可能,这增加的费用,就是一个“天价”。比如原合同总金额是两万,增加项的费用要二十万,两百万。
这非常正常的。
首先,原合同金额太低太低。因为承包方打的主意是套模板,修修改改应付完了事。就我们上面这个合同,开玩笑,两万块钱,做一个商城?!可能么?只能是找个开源代码,改头换面糊弄一下而已。
然后,一旦开始改动。如果说发包方上心,基本上就“收不住”。不是自己从头写的代码,甚至就算是自己的代码,耦合内聚这些没做好,牵一发而动全身,“没改还能用,一改就废了”才是常态。到最后,你改不动的。
怎么办?撂挑子呗,扯皮呗……
这些事,我见得太多了。
一些同学不忿了。你说得这么夸张,那外包公司怎么活?接私活的那些同学怎么办?他们不都好好的?!
这其实就是我一直憋着不说话的原因。
不说挣不挣钱,就“不扯皮”的外包,大致有以下几种:
1、以人天计价,据实结算的。
据我所知,很多大型外包公司,采用的就是这种模式。这种计价模式,你要怎么做就怎么做,要怎么改就怎么改,反正一个人干一天收你多少钱是定的。活多,费用也多,无所谓。这其实就不算是外包,而类似于“劳务派遣”的性质了。相当于发包方雇了几个人,按天发工资,主要的作用是规避《劳动法》。员工给发包方干活,但劳动关系在外包公司。
我个人很推崇这种方式。但这种方式,发包方会有一个担心:开发人员磨洋工怎么办?所以需要管理,管理就必须要懂行,但很多发包方其实是没有这种能力的。
2、发包方对功能/质量/细节没太大要求的。
典型的就是政府项目,做个网站,烂得稀里哗啦……但无所谓啊,反正又不怎么用!
马马虎虎的开发,稀里糊涂的上线,随随便便的假装维护一下,收钱走人,一切OK。这个就不用我多说了吧?懂的人自然就懂了。能接到这种项目,当然非常愉快了,躺着挣钱,问题的关键在于你能接得到。
3、发包方事先就能把需求全面考虑、清晰表达的。
理论上,应该有这种发包方。我也在网上看到过一篇帖子,开发人员写的,他对这个发包方就佩服得五体投地。无论是初始的需求,还是后面的改动,发包方的要求都非常细致,事先就考虑得非常详细。确实,和这样的发包方合作,是一种享受。
但很遗憾,我是从来没碰到了,周围的朋友也没有。通常的情况都是:被发包方各种花式虐,做完一个项目都像是虚脱了一样,呵呵。
一时兴起,写了这么多。有什么用呢?
第一,给创业者(发包方)提个醒,如果一定要选择“外包”的话,建议:要么仔细的规划好项目需求,要么选择按人天计费的模式。另外,如果需求没有足够的细,而是“参照某某某”的话,收集市场外包公司报价之后取平均值,再乘以十,作为软件开发费用预算,估计勉勉强强能够做一个“自定义”的demo出来。
第二,给想接私活的同学提个醒,在接单之前“挑”一下客户,学会拒绝一些比较“麻烦”的客户,会给你减少很多麻烦。见势不妙,要赶快止损。我没接过私活,但我以前做家装,从一开始老老实实的相信“顾客就是上帝”,到后来明白“上帝也有很多种”,血泪斑斑,不堪回首。把你的精力,用在能给你更多利润更多成就感的客户身上,好像有些势利,但却是行之有效的商道。