​IT项目外包,是一个老生常谈的话题。


在外包领域也算是混迹了多年,大大小小的项目,参与的、经手的数以百计。有合格的,有不太合格的,也有很多失败的。


互联网项目/产品,按成熟度来分,大致可以分为这几种:

从0到1:创业项目

从1到60:创业项目,已经开始运营,但仍然处于不断试错阶段

60到80:运营一段时间,有大量的用户和需求积累,需求明确,完善和迭代中

80+:相对成熟和稳定的项目


通常,在项目达到60以后,都会有自己的研发团队,外包的可能性不大,即使有部分功能外包,都是非常明确的需求且对需求的把控能力非常强,失败的可能性不大。


那么在从0到1,从1到60这两个阶段,外包的可能性是最大的,也是最容易失败的!!这里说的失败,不是指你的项目,是指外包这件事情,可能导致你浪费了大量的时间成本、资金成本、机会成本。


先说说从0到1 。在这个阶段,大多数的创始人会觉得组建团队的成本非常高,事实也的确如此;而且,不懂研发的创始人,根本不知道需要一个怎样的团队,对于各个岗位的技术人员也没有评估和驾驭的能力。我曾经就见过一个不懂技术的老板,自己招了几个技术人员干项目,到最后,他自己说的,被技术人员绑架了,一个开发任务布置下去,本来只要1天,给他报1周。他说,我知道这个功能用不了一周,但是我也没有办法……


嗯,既然组建团队这么危险,那么,外包吧!


通常的外包流程是这样的:

    首先你跟我聊需求,你需要一个什么样的系统,包含什么样的功能,达到什么样的目的,我进行大致的评估以后给出预算和工期,双方达成一致就签字画押。

    然后我通过各种需求调研、需求分析整理需求文档进行确认,然后给你出一份原型图,你看看没啥问题,就签字确认吧,然后就是UI确认、开发、测试、交付。

    这个……看起来似乎没毛病。不错,100%的外包公司都是这么干的,当然,有的公司还会省略一些确认流程。


我们先来扮演一下不同的角色吧:

    现在你是外包公司老板。外包公司靠什么生存?业务!就是不断的接单、开发、收钱。那么,作为外包公司的老板,最看重什么呢?当然是项目的利润率。利润率从哪里来?就是项目标的金额,减去成本。成本由什么构成呢?外包公司的成本是最好计算的,就是“工天”。聘请一个工程师多少钱,加上公司的运营成本,然后摊到每一天,这个员工是多少成本。所以,作为外包公司,一定要控制用户需求,把控研发进度,一但超出预期过多,就没利润。

    摇身一变,你又变成了项目创始人,且设定你不懂技术吧(创始人不懂技术的占多数)。你要做个东西,找了几家外包公司询价,你发现每一家的报价都大不相同,最高可能会相差数倍。选哪家呢?出于成本考虑,你选了报价最低的,当然,也可能综合评估,你选了倒数第二低的,无所谓啦,反正你肯定不会选最高或相对比较高的。

    

    然后,你们开始了外包流程。先从需求开始吧。

    你跟外包公司述说了你的商业目的和你实现这个目的的路径以及你自己对产品功能性需求的一些看法。外包公司请了一个产品经理来帮你梳理这些需求……等等,不是所有的外包公司都有产品经理,他们往往会让技术经理或者项目经理来扮演产品经理的角色!即使有产品经理,外包公司的产品经理,其实更擅长为外包项目本身服务,而不是为你的商业目的服务

    姑且就当需求顺利整理完毕,这就是你第一期的产品需求,你需要这样一个产品来做你创业的第一步。可是,这真的是你需要的东西吗?当你在跟外包公司聊需求的时候,你确认你聊的是需求而不是需要?我见过非常多创业者在描述需求的时候,实际上是在说:在我看来,要达到我的商业目标,需要这样去做。这是非常可怕一件事情,因为很有可能你在一开始,你就向外包公司传递了错误的信息

    你懂产品吗?你懂用户体验吗?你懂交互吗?你懂技术吗?你懂运营吗?你知道互联网产品跟商业手段中的业务流程应该如何配合?你知道应该怎么去验证一种商业模式是否成立吗?你懂得如何用最小化的试错成本获得最大化的有效成果吗?

    如果你拍胸脯说,是的,那么恭喜你,你成功躲过了失败的第一个坑。如果不懂,那么,你需要一个懂商业,懂业务、懂产品、懂技术甚至懂一点运营的产品经理来帮你分析,你的述求的背后,就是什么样的目的,而不是“你认为应该怎么怎么样”。

    其实很多人在描述自己的目的时,会习惯性的加上自己的主观方法,或者,我们叫解决方案。所以我每次在跟客户交流的时候,都会习惯性的问一句,你的目的是什么?然后对方会想一想,用另外一种方式来描述他的目的。到后来,我发现我不需要去问对方的目的,通过对方的描述我就能挖掘出他真实的目的是什么。

    所以,很多人的项目失败的主要原因,是在第一步的时候,就错了。表达错了,外包公司理解错了……

    

    姑且就当第一步你没有出问题,外包公司也顺利把你的需求按你想要的方式设计成了原型。

    通常,出于成本的考虑,外包公司是不会出高保真原型和交互原型的,你能看到的就是一些平面草图,对方的主要目的也只是为了跟你确认一下功能范围而已。

    我通常会把一个功能定义为“项目级”或“产品级”。所谓项目级,就是实现功能就OK,不过多考虑异常、不考虑性能、不考虑用户体验,功能正常就OK。产品级则不一样,需要有工匠精神细细打磨,苛求每一个细节,关注用户情感,考虑各种可能出现的异常以及应对方法。举个栗子:一个登录功能,项目级只需要1个小时,输入账号密码能登录即可。产品级可能会需要数十个小时甚至更久,因为要考虑用户输入提示、错误提示、多次输入错误以后的处理策略和用户反馈,甚至还要加上一些动效来优化用户体验、考虑一些自动完成功能。安全性方面各种前端验证、后端验证、表单TOKEN都要加上……而作为外包公司来说,给你提供的,往往都是“项目级”的功能。上述这些,是平面原型草图无法表现,你可能也想不到的东西

    

    好吧,姑且就当你运气爆表,遇到了一个超级负责的产品经理,给你做了各种高保真原型和交互原型,把每个功能的细节和异常做到了产品级的设计。说到产品设计,额……我合作过的产品经理手加脚也数不完,有的是技术背景,有的是设计师背景,也有很多复杂背景的,无所谓,反正产品经理本来就是艺多不压身,就怕你懂得不够多。

    5年以内的产品经理,通常在交互设计、功能性设计、产品总体的架构把控方面没有太大的问题,然而对于运营、业务、产业格局、商业模式等方面相对理解不够,经验也不足。厉害的也有,这里我说的是大多数。这跟外包有关系?是的!产品是为商业目的服务的,是为业务流程服务的,如果产品经理对商业不理解,对业务不熟悉,怎么可能设计出适合的产品?要知道,每个行业有每个行业的特性,不可能刚好你遇到的产品经理就熟悉你要做的领域,所以,产品经理对行业的快速了解能力和对商业的敏锐的嗅觉十分重要,这些是5年以内产品经理很难具备的能力。超过5年的产品经理,月薪怎么也得10K-20K ,很少有外包公司会用这么高级的产品经理!!!因为没有必要!!所以你得到的产品设计,只是能实现功能而已,真正落实到运营时,你才发现,哪哪哪都是问题。


    姑且就当你人品爆表,遇到这个外包公司刚好有个5年以上经验的产品经理。从商业模式到需求到产品设计都没有任何的问题。接下来外包公司就该开始做系统设计了。

    架构设计是个技术活,通常外包项目不会考虑太多的灵活配置、扩展性、性能、安全等方面的问题,他们的目的只有一个:实现功能。架构这东西表面上是看不出来的,如果用复杂度来描述,同一个功能的背后,可能是1,也可能是10的N次方,而外包公司给你的,往往是1 。当然,通常一些外包项目也会提出关于容量、架构方面的要求,但是,如果一个架构不够灵活,即使达到了你的要求,可能那就是它的瓶颈上限。

    这里有个矛盾的事情,架构要灵活,系统耦合性就要低,各种封装,各种SOA,耦合性低就意味着在架构设计和开发的时候,要做更多的工作,成本就更高。

    举个栗子:最近做了一套个人脸搜图程序,这是个CPU密集型的业务,就是很消耗CPU资源,当用户多了,CPU处理不过来,就得排队,人越多,排的越久。架构方面,将识别流程封装成服务,可以独立部署和运行,根据业务量结合阿里云的伸缩特性扩展ECS(云服务器)来增加处理能力。这个应用单机实现功能,只需要1天,封装服务+可伸缩特性,要用8-10天

    外包公司会怎么选?


    姑且就当你的团队里面有懂架构的,严格要求外包公司设计出了合理的架构。接下来就开始复制粘贴代码,哦~~不对,写代码。其实最近几年我一直在思考和实践一件事情,如何确保在研发过程中的需求一致性。在这个过程中,规范、流程、产品设计、UI设计、工程师对需求和产品的理解都十分重要。实际上,不论多么完善的产品设计,落实到具体功能实现的时候,都会出现没有考虑到的问题,这个时候是需要反馈给产品经理,有的问题甚至会影响到业务流程是需要跟客户重新探讨的。即使是在很多做自己产品的团队,我经常会看到程序员自己按自己的想法处理的情况。这个时候,流程规范、团队协作意识、工程师的产品意识就显得极其重要。然而,在外包公司这么紧张的工期安排下,不会有人这么干的,因为:太耽误时间!!!他们的工程师只有一个目的:完成功能了事

    所以很多在设计阶段的缺陷,就这样被保留在了产品当中。


    姑且就当你的团队里面有着优秀的专业的产品经理、架构师、研发工程师。“术业有专攻”,听起来是个好事情,但落实到创业这件事上,我们就需要慎重了。比如,作为架构师,很多架构师从来都是技术思维,崇尚完美架构,但是,架构的完善程度和商业上的试错需求往往是相悖的,如果架构师不能掌控这个度,很容易成设计过度,导致试错成本增加。这就要求架构师围绕商业目的和阶段性目标规划,设计灵活、适用的架构。再比如产品经理,试错阶段需要的产品完善程度,是60%还是70%?这个度同样需要结合商业目的去把控,而不是一味沉浸在自己的专业领域里面。

    所以这个度如果把握不好,要么产品过重,浪费资源,要么设计不足,各种缺陷。


    姑且就当你顺利过了上面几关,得到了一个你想要的产品。你开始运营了,你发现市场的反馈跟你当初想的东西不太一样,之前做的产品有很多功能浪费了,有很多功能不完善,有很多该有的功能却没有。然后,你开始思考,到底是哪里出了问题……


    没错,外包就是这么恐怖。你的外包项目能否凑合满足需求,完全看运气,因为这个里面的这么多环节,你不可能全部掌控。其实这些问题也同样存在于大多数产品团队里面。


    我自己也经历了几次创业失败,我觉得创业这件事情就是在不断试错,每走一步就是一次试错。那么,怎么样让试错成本最小化?在一开始我们就要去分析模式是否有问题、失败的风险在哪里、有没有同业对标产品、有没有历史经验可以参考、有没有相似行业经验可以引用。对于一个创业项目,其目标就像是一块大大的烤饼,而产品就像是一根针,这根针怎么设计,多长、多粗、什么材质?设计好以后往哪里扎?扎偏了可能没有效果,扎深了针会断掉,扎进去了产生N条裂纹,哪条才是通往中心?

    其实,试错的每一步,都是一次谨小慎微的决策,这个决策需要考虑的因素太多太多,而落实到实施层面,也有太多太多的坑,上述只是一些很大很常见的坑,还有很多小的绊脚石和香蕉皮,让你一个不小心就会栽跟头。