前天写了一篇《软件工程搞了50年,作坊式软件开发的出路在哪里?》(点击可阅读),反响还不错,大家有兴趣的可以读读,看看一个外行是怎么看软件开发的。现在继续写我的这个软件开发系列,欢迎扔砖头,欢迎私聊交流。
写软件外包这个话题之前,先聊聊我和这个话题的纠葛。
本人读的经济和商业管理专业,在政府机关里工作了十多年,其中有大半的时间从事信息化工作,之后搞了2年软件开发平台,之后又搞了7年的商业地产和文旅古镇,从来没写过一段完整的代码,为什么这段时间执着的钻研软件开发呢?源于我的一个好哥们老曾,苦心十年,搞了个“猿开开”云开发平台,说总算有点可以商业化的成果了。
故事还要从2011年我刚从政府辞职说起,被老曾忽悠一起干了两年开发平台,我帮着起了个名字叫云开发平台,用这个云开发平台协助合作伙伴开发了8、9个项目,那过程太过酸爽,艰难又有希望,希望又艰难,软件的坑太大,说起来都是泪。后来觉得开发平台这条路走不通,开发平台成为应用软件的底座,责任分不清,技术再牛叉,一两个人的创业公司是做不起来的,信誉不够,别人根本不敢用。当年普元的构件平台做的不错,人家坚持有结果,去年底上了科创板了。
老曾绝对是个传奇,我们高中一起考到北京,他进了清华,青春年华都献给了“创造更加美好的软件开发新世界”,2013年我开始了商业地产和文旅古镇的职业生涯,日子过得还算有滋有味,他一直在坚持着软件理想的追求,一直在煎熬着。一年我们见两三次面,谈点研发的进展,很神奇的是偶尔我还能贡献点思想。
就这么着一直到了去年年初,他兴奋地告诉我:“我可能摸到一颗银弹了!”我花了大半年的时间交流,大体才基本明白了他做的事情的技术价值和可能的商业实现途径,代码思维的人确实牛逼,聊起来是很有挑战的。去年年底,他用“云技术部”的方式,其实就是云端团队,用刚刚在网络上招募的4个程序员通过远程在线的方式开发,完成了一个项目的开发工作,既验证了技术,也验证了商业价值。一下子,我又被忽悠了,准确的讲是我自己忽悠了自己,我们能不能做一个“十年时间、百亿营收、千亿市值”的大梦呢?一说到“十百千”我就来劲,说其它的现在我好像都没什么感觉,也就只能被这个忽悠了。
前几天我决定写个系列,谈谈我对软件开发的理解。希望借助头条的智能推荐找到那些愿意拍砖的兄弟,找到那些对现实理解深刻的兄弟,找到那些对趋势有着独到见解的兄弟,找到那些有着类似梦想愿意撞墙的兄弟,也请大家帮我判断一下,是不是要二次下水,连人带钱再次跳进软件这个大坑呢?
下面进入正题,软件外包为什么总是陷入算计扯皮的烂泥坑?
本来想细细的写一下软件外包的各种现象,再假模假式地分析一下,刚想了想,其实这是挺简单的一个问题。“无知的用户”普遍存在,承受不了软件工程化开发的高昂成本,说白了,就是没有那么多钱,还想要一个自己都不太清楚的好东西;从开发方来说,在这个市场上,除了大企业、大项目,只能是作坊式的开发,必定问题多多,问题越多越发害怕收不到钱、害怕赔钱,一定处处设防,毕竟比甲方专业嘛;特别有趣的是,双方把本来应该根据项目实际人力投入来计费的服务合作变成了双方讨价还价的不是吃亏就是占便宜的买卖行为,能顺利和谐那才叫活见鬼了;除了大项目因为钱给的足、双方的专业素养相对都好些以外,我见到听到的软件外包合作清爽的极少,反目成仇的不少,不愉快的极多。
下面先分享一下草木兄弟去年下半年接的一个20万的外包项目,后来做到项目终止,差点反目成仇,说亏了10多万,不过听说刚刚采取了猿开开的新模式又重新签了合同。草木兄弟也算搞了20多年开发的老江湖,按道理不应该出现这样的事故,我们先来看看他这个掉坑里的故事吧:
一、大坑从只有1页的需求开始
做过软件外包项目的大体都有这样的体验,客户提出一个很简单的需求,然后让你报个价。而这个时候大部分软件外包公司都会报一个相对高一点的价格,防止后期需求有变化而能维持利润。这个项目同样如此,需求就是一个简单的说明,是要做一个电商的商城,只不过是多了经销商的功能,而且附了经销商的分成方式。乍一看需求不复杂,加上有现成的商城模版,草木兄弟认为即使做成APP+H5的模式,如果报20万,应该是有得赚的。而恰恰是这种需求模糊的预估报价模式,为整个项目的失败埋下了巨大的祸根,而这也是传统外包模式的最大弊病之一,对于开发公司及甲方客户都是极不公平的事情,这样的方式会纵容甲方能省事就省事,所有的锅由乙方开发公司来背。
二、4个月的需求确定,让项目一步一步迈入深渊
9月份签的合同,乙方就派产品经理跟踪服务客户的需求原型确认。一般的需求原型有一个礼拜都差不多完成了,但是这个项目需求整整做了4个月,甲方以各种理由要求草木兄弟修改需求原型,不断往里加东西,美其名曰细化需求,直到12月底才算终于确定一版。而这个时候出来的需求原型,跟原来已经丰富了相当多的内容。但是,由于前面已经签了合同,跟甲方客户讨论增加费用的时候,已经没有可能了。这个时候有两个选择,乙方可以终止合同,或者要求增加工期和费用,但乙方并没有采取措施(除了不够专业外,更多是由于侥幸地认为客户是熟人介绍的),结果引来了后面巨大的麻烦。传统的外包模式弊病之二,签合同之前需求模糊,签合同之后需求大量细化和增加,然后以合同要挟,不让增加费用。
三、极低的预付,然后分阶段付款模式,亏损从此开始
还是侥幸心理吧,按传统的外包模式,低于60%的预付都是不能接的,但是这次由于侥幸,正式开发之前只收了35%的钱,也就是7万元。4个月的需求分析及UI设计,刚好就花了这么多成本。意味着开发之后的钱都得乙方垫,这是非常危险的,从开发正式开始的时候就已经在亏钱了。正常的商业逻辑是,这个时候应该再次叫暂停,但是还想侥幸。传统外包模式弊病之三,预付60%乙方肯定不会亏本和吃亏,较低的预付乙方100%是亏本和吃亏的,因为甲方没付多少钱则会处于谈判的强势位置,有各种理由延期支付剩下的款项。
四、开发过程中极其苛刻的阶段付款要求和需求变更,项目陷入泥潭
2020年2月份,正式开发开始了,乙方投入了8个人,在基本功能做得差不多,同时进入基本功能测试时,甲方要求主流程跑通才能付钱,但测试的时候可是玩命的在测试,测得那叫一个细。这个时候,草木兄弟觉察到了不对劲,主流程跑通,不就是大部分功能都做完了嘛,也就是甲方变着法要把所有做完了才能给钱,而不是分阶段给钱。交涉中,甲方明确表示:“我只要结果,至于你们付出的劳动和成本,我们不关注”,想到需求细化就曾拖了4个月之久,草木兄弟痛下决心停止开发、及时止血。到今年3月22号的时候,开发成本已经超过10万了,也就是说这10多万已经亏掉了。传统外包模式弊病之四,甲方想要项目尽可能的完美,但不会增加费用,还会不断通过拖延付款来获取谈判优势;乙方则想尽快交付,不允许有任何新的需求和改动,通过不交代码拖延交付来获取谈判砝码,这种矛盾的产物必然是双方都不满意。
这个软件外包项目就这样亏了10多万,草木兄弟除了花钱买了教训,也算因祸得福,因为这个项目接触到了猿开开。
项目终止后,甲方托朋友找到了技术大牛老曾求解,春暖花开戴着口罩,老曾给他们上了一堂云开发、云技术部的课,甲方大当家的听明白了,据说洗脑洗的很成功,很快签订合同依托猿开开云开发过程管理系统继续与草木兄弟执行合同,觉得这样才能保证公平合理,只不过新的协商结果草木兄弟也不指望赚钱了,不过总比亏损好嘛。
老曾这个洗脑是怎么洗的呢?
他说,既然你要做这个开发项目,正常考虑下,你只有两个选择,要么自己建开发队伍,你又认为成本太高,并且有过不成功的经验;要么外包,现在看来也执行不下去了。我告诉你,还有第三条路,我帮你建一个按用付费的云技术部,你不用招聘一个员工,但你可以拥有一个高可控的云端开发队伍,开发过程全程在线、高度透明,按用付费按周结算即可,多用多付费,不用不付费,公平合理,完全自主。
听起来非常美好,但软件是个需要具体实践的很复杂的东西,光说概念、理念是没有意义的。老曾接着说,猿开开的产品服务体系虽然还在打造中,但在疫情期间刚刚按照云技术部的新模式完整的完成了一个项目开发,效果非常OK,接着拿着这个真实的案例简要的在线演示了一下,甲方大当家的看完之后明确表示就这么干了,两天后让草木兄弟去重新商谈签了份新合同,这大概是一周前的事了。
虽然我没在现场,但是大体说的东西无外乎以下这些内容:
1.猿开开的技术创新实现了程序员远程在线以类似可插拔的方式加入项目开发,程序员继续使用自己熟悉的开发环境,几乎没有学习成本,系统是云端外置的,所有的开发过程是透明的,甲方可以随时在线掌握开发的进度;
2.猿开开把开发工作分成三部分,第一部分要求甲方做好需求原型的调研设计工作,开发代码前的这项工作极端重要,甲方需要组织咨询设计团队来完成,如果由乙方承担,要单独签订合同,这是开发工作的客观基础;第二部分详细设计工作,依托猿开开系统由技术经理级别的开发人员在线完成设计工作,把项目分成小时级的开发任务,自动生成60%以上的代码,并且可持续自动更新;第三部分项目的主开发工作,实现了程序员远程在线可插拔的加入项目开发工作,这一部分工作在工期、质量等方面被置于信息系统的高度管控之下。在猿开开的预期中,每一部分与甲方都是独立合同,不同的小团队在线分工合作,当然也可以由一个乙方团队来承担,一般说多团队协同的效果很差,现在奇迹般的在线高效实现协同了,只能说这就是技术的魅力。
3.如果你有项目开发的需求,这就是最优选择,你可以想象这种方式就如同把你自己的技术队伍云端化了,和以前相比,你不用担心五险一金,不用担心谁不干活或者没活干,按用付费将大幅度降低开发成本,关键是猿开开的技术创新让这一切都变成了现实。
4.以上说清楚了就很简单了,甲方不用交60%的预付款了,风险小多了,不过交预估金额20%的押金放在猿开开总是应该的吧,实际上是一种远程在线全程高可控的精细化劳务外包,系统会将工作任务细化到小时级,基本不存在工期失控问题,人工智能的应用又促进了开发规范的强制落地,使得开发质量有保障,乙方可以是团队也可以是个人,按工作时长每周收钱也几乎没有风险。
说起来就这么简单,实际上技术复杂度很高,在开发的各个环节很大程度地降低了对人的依赖,当然这个过程中必要的协调、验收还是非常重要,但是较传统的软件外包有了一个质的飞跃,解决了公平互信合力做出一个好东西的问题,较之目前软件开发劳务外包的效能也要高出太多。
所以老曾吹牛说,猿开开是革命性的。你说,能算超级物种吗?