开始接触外包后慢慢遇到不少准备创业做APP的人,对话大多这样开始和结束的。
“你好,我要做一个***,需要多少钱?”
我曾经苦思冥想:
”你是要做原生开发还是混合开发?”不同开发的成本不同。
”你要做双平台还是单平台?”很多人并不知道ios和安卓是不同的包。
”你的需求确定了没有,还是只是处在一个IDEA的阶段?”不谈需求就报价的都是耍流氓。
”你的核心功能是什么(没有最好的功能,只有最合适的),你的近期目标是什么(你是要快速推进迭代,还是做个内测版验证市场)“
然后我细声细语的问句:”你想做一个什么样的产品?“
你潇潇洒洒的抛给我几个竞品,信誓旦旦的说就这样,多少钱。
我只好去整理需求,然后评估开发周期和人员配置,给你一份不算准确但大抵相同的报价。
”这么贵,那算了。“
写这篇文章是为了解答各位想做APP却因在找外包时产生的的几个问题做解答,希望有所帮助。
开发一个APP为什么需要很多钱
理想的方法就是把你的产品搬到多个平台,比如iOS、Android、WP以及Blackberry,国内一般描述的双平台是iOS和Android。如果你把每个版本拆分一下,基本上需要40人天。一个完整的开发小组是最低6人配的,iOS+Android+服务器+UI+测试+产品经理,其中测试,UI,产品经理是部分时候可以兼用。但如果是一个相对比较复杂的项目,这个配置两个月是完成不了的。之前做的一个项目不包括后台,配了是双iOS和双Android,加上测试,产品,UI整个项目组七个人扑在上面两个月才如期做好。外包公司给报价的时候会把你给的功能做成详细的需求文档然后根据需求计算人天,公司的人天是有明确标价区间的,所以报价=人数×工期(人天)×每人天单价。当然大部分有时候是去零有时候就进一,这个更多的是通过商务沟通去商讨。我们来举个电商分销平台的开店模块计算一下。
1我自己也能做设计或产品,是不是可以算人的时候就不算进去?
可以。如果你确定自己或者团队其他人能够支撑起全部职责,那么从开始安排的时候就不算这个人。主要就是提前想好处理问题的办法,沟通的不便,处理问题的及时性,进度的总结等。一个完整项目组工作的常态是项目启动前先把需求清单,整个开发团队会开一个计划会议主要理清自己负责的需求和评估工作量,之后产品经理再把整个项目分解到每个功能点,开发团队细化每个功能点每个人要做的工作项和时间并领取任务。进入开发的时候所有开发团队每天早上都有站会,总结昨天已完成的工作,今天需要做的工作,中间遇到哪些问题拿出来讨论改进。一切都是为了确保时间和质量在评估的时间内完成。如果这时候有一个模块的人是兼职或异地,是无法达到有效的沟通和迅速处理问题的。我们希望客户更多的参与,但必须产生的是加速作用,否则你只能作为观看者。
2测试是做什么的?(资金不充裕)是不是可以不要?
首先我回答测试做的工作:测试理解产品的功能要求,并对其进行测试,检查软件有没有错误(Bug),测试软件是否具有稳定性(Robustness),写出相应的测试规范和测试用例的专门工作人员。简而言之,软件测试工程师在一家软件企业中担当的是“质量管理”角色,及时发现软件问题并及时督促更正,确保产品的正常运作。最基本的测试时破坏性测试,性能测试,兼容性测试。我简单说下兼容性测试吧,苹果现在主流的从4S到6P都需要准备样子安装测试(6SP暂时还未配),安卓主流的小米,三星,华为,OPPO,魅族等都准备了一到两款机型进行测试。如果你需要保证产品的正常运行那测试是必须的。
3外包公司会不会故意把周期拖长来增加利润?
会。一般来说外包开发公司都会把时间算的相对宽裕,你会发现计算的44人天(每月工作日是22天)真实情况开发和测试可能就在一个半月的时候做完。发生这种事一般是有两种原因,一个是为了避免开发中遇到难题预留出的时间,一个是为了保证利润。外包公司肯定是赚钱的,这个你必须明确,没有无偿的服务。人工,房租,水电都是从一单单业务的利润里面走的,所以你必须理解外包公司肯定赚了你的钱。只是他在什么样的价格里保证了什么样的服务,你可以去压低价格,但他肯定会保证他的利润空间。价格本就是一个相互的过程,一个报价,一个是预算,只有互相博弈到一个差不多的水平才能达成合作。外包公司把周期拖长也会在一个很小的范围内,你需要关心的可能不是天数,而是总价。所以,多花点时间去谈总是有好处的。
怎么选择合适自己的外包公司?
一要看产品
首先资金和时间宽裕的时候组建自己的团队开发产品都比找外包合适。但如果时间比较急,不妨同时搭建团队的时间同时委托给外包公司。并且不是所有产品都适合在初期建立自己的开发团队,如果产品在验证市场阶段不妨找外包公司先做一个Demo出来验证市场,待用户反馈良好再及时搭建自己的团队。还有重运营类的产品
二要看资金
成本和收获是有一定正比关系的。每个人的需求都不尽相同,基本上都希望越低的价格越靠谱的产品,但这样是不成立的。我一般把外包分为个人外包开发,团队外包开发,公司外包开发。
个人外包开发比较便于理解,就是一个会技术开发的程序员,他会帮你负责某一个方面的技术,比如客户端,比如微信服务号等,但这时候你要求比较高的话需要自己想办法去联系UI或其他人员协同合作。你需要花大量的时间去平衡他们之间的工作进度和沟通。完整APP项目并不适合找个人外包开发。
团队外包开发是有一个相对完整的技术团队:iOS+Android +服务器等,各有不同。我见过比较多的团队都是偏技术方向,多是在大学创业过程中项目死掉然后转手接外包,为了生存也为了练手。如果这个团队已经在各个环节完善了,如测试如UI,在资金不充裕的情况下可以适当选择。谨慎辨别团队,他们没有合同的约束,和你签订的也是个人,只要有个人不干项目就比较危险。
公司外包开发就相对专业一点,基本上会有专门的项目经理或产品经理帮你梳理和对接产品,前期会做详细的需求整理,为了之后避免各种问题会签订有法律效应的合同。在费用上大部分是公司大于团队大于个人,当然也不能百分之百。找个人的时候有时候也会遇到技术大牛在离职期间做个兼职,技术也有很靠谱的,价格也是比较高的,这时候更多的决定性因素就在他个人上面。如果不是资金特别窘迫,并不建议个人开发者。公司外包开发费用的计算是根据明确的需求计算人天的,可以保证的是会在合同期内帮你产品上线。其实我觉得为什么找专业的公司,第一是他们会花大量的时间前期沟通为了能够准确的知道你的需求,如果你中途改变需求他们是会添加成本的;第二是能保证产品按时保证质量的上线。当然价格也相对是比较高的。
三看地理位置
在北上广深外包公司是相对比较密集的,但定价也相对高一些。因为那边的人力成本房租成本都比其他高一点。其实总的来说把沟通成本算在里面还是找当地的外包公司比较合适,但是会由于各种各样的原因大家选择外地的外包公司,如经费如靠谱如人情结交等。还是那句话把更多的付出放在开发之前,不管是思考沟通设计,只要确定之后唯一的目标就是快速完好的推出产品。
怎么识别靠谱的外包公司
我说的是外包公司,不是皮包公司。特别需要注意的就是不要遇到皮包公司转包,就是一个人以公司名义接了你的项目,但他没有技术团队转包给别的技术公司,中间他能拿抽成。这样造成的结果你所有的沟通都是隔层来做的,一次沟通假设百分之八十是有效的,那N次叠加以后你就知道结果了。还有就是在盈利上面,除非你的利润相当可观,并不影响确实在帮你开发的技术公司的盈利,否则品控上面很难过关。
一看公司表面功夫。
公司表面功夫要看三种因素。
固定开发人员:你每次去的时候是不是相同的开发人员,当然更多的是项目经理和你对接,但有时候描述问题或了解进度会接触到开发人员。如果你总是接触的都是流荡的开发人员,可想而知,你一个项目经手了多少人,每个人的编码习惯都是不同的,每个人都会不负责的给你的产品留下很多问题,会造成你以后很多不可预知的状况。如果你遇到的是固定的开发人员,尽可能的对他客气礼貌,要发火对着项目经理就好,顾客虽是上帝但程序员是创造产品的人,所有的东西都是在他手里。
公司配置(地址,装修):这个不是必然因素,但如果公司窘迫到几个人在几十平方民房里面办公,那他们会面临一些不确定因素造成项目延误或终止。之前一个朋友把项目外包给广州一个外包公司,整个公司都扑在了这个项目了,但是在最后一直不间断的出现BUG,导致项目无限期拖延。产品没做好,尾款当然也不可能付,谁是谁非最后都不重要,反正最后项目死了,外包公司也破产了。
公司品牌:不管是公司官网,对外的宣传文案宣传册都代表一定的水平。如基本的设计水平你可以看出审美,你要相信苹果公司的官网绝不可能做出金嗓子喉宝那种风格。没有说谁高谁低。好吧,就是国外的品宣和广告做的比国内好。一个正规的外包公司是不会忽略这些的,本身对于公司而言官网等就是公司自己产品的一部分。对自己的负责程度可以无限期的挂钩到项目身上。
二看公司内功。
公司内功我也分为三种因素。
项目经验:完整上线的项目经验代表着公司可以保证一次项目从需求整理到开发完成保证验收整套的流程。并不是越多项目经验的公司越好。这个是真的,很多外包公司起初的时候认真的对待每一个外包项目,因为那是他们耐以生存的根本。但项目多了之后一个会套用别的项目的模板,另外设计也会雷同。所以,有几个完整项目经验,愿意为你定制产品量身设计的公司是这个阶段我觉得性价比最高的。当然现在都比较少了。现在外包公司两个发展方向一个是走垂直化APP外包,这样公司之后付出的成本越来越低;另一个是慢慢只承接政府和企业大的项目,他们已经看不上APP外包的蝇头小利。
CTO:为什么我把这个拿出来说,一个能代表技术团队层次的人永远是顶端的那个人,那就是CTO。另外有一个全栈工程师对你整个项目出现问题时的把控和处理。可能大部分时候他们并不操刀,但能稳定军心和在出现问题的时候技术处理起到关键作用。你可能难以想象当团队发现一个BUG却无人解答困死在那边的情况。
态度:我认为最好的方式是把时间花在前面,而这时候一个项目经理或是产品经理整理需求时对待你的态度至关重要。他是引导出你的真正需求,还是把你往他方向引导。想想背后的原因。如果往他方向引导,那他有类似的项目可能就会套皮。套皮不是不好,但一个好的产品都应该有缜密的思考找出适合自己的产品结构和用户路径,而不是复制别人的。这也是为什么很多人告诉我完全复制一个其他产品的时候我不建议的原因。还有个态度我觉得不合适的就是你随时想个东西我就做。这里面更改需求必然产品一定的时间成本,可能你觉得增加一个没什么,但是在整体代码上面改动成本较高。这个是算在公司上还是客户上,应该谁都不愿意承担,外包公司的本质就是你花钱去买他的时间和技术,之后如果因此造成产品BUG或是延误又是一顿扯皮的事。所以把问题尽量避免在前面,后面只要快速执行。
和外包公司对接需要注意的问题
其实问题是贯穿到每一个相处的过程中,上面讲了一些,我抽几个描述一下。
一前期有效沟通的达成率
请注意。整个产品开发能成功不烂尾不扯皮的完结与否有大半因素在前期的沟通里。人的思维是扩散性的,更多的人在描述产品的时候会从印象里抽出一种觉得还可以的原型。
大部分时候会这样说“我觉得这样也可以。。。”“我觉得这样可以那么样。。。”可以想象如果这是在产品开发前期,那么面对开发人员是灾难性的,你功能的调整需要重新评估,设计,开发,测试,并且因此产生的冲突性BUG都是无法预知的。当然这是往严重了去描述。但可能一个开发团队几天的工作都会因需求变动而无效,频次高了整个开发团队热情和严谨都很难维持。而客户又会觉得公司不靠谱不合理,只是调整一个小东西还怎么怎么。如果希望整件事快速有效的进行,请把所有问题都放在前期,去质疑去构想去推翻去重构,然后快速去推进。另外一种方式是相对中和的方法,把一个体系比较大的产品分解。原来的开发周期是三个月,第一个半月完成已经确定好的功能点做好一个可运行的1.0,而客户新提出的功能点或改出的需求放在后面集中评估处理推进。这种方式有待去去完善和整理。
二合同的拟定和验收保证
首先,合同是具有法律效率的。不管是外包公司未按预期推出可运行的版本或是客户未按时交付款项都需付一定责任的,具体条款视合同而定。然后所有合同整个框架都是一致的,不同的只是里面的条款,如分款分几期怎么分:442还是3322。合同自然分的是甲方和乙方。作为甲方你要保证自己的权限就要约束外包公司:你要他们保证产品交付时无BUG运行,有一个BUG多少扣款;你要预留出一定的时间去观测产品不同平台不同机型可运行,所有一般留有一到两个月交付尾款;你确保所有代码的所有权属于你,iOS在Appstore上发布的账号是谁的,是否最后把源码给你以便于后期迭代。还有现在外包公司大都数在验收环节有一个验收文档,你可以理解成合同的已达成产品已交付的意思,就是外包公司说我给你做完了,你签了我们就结束合同的。(当然个例按具体条款来说)
三客户协作胜过合同谈判
愉快的相处是任何人都希望的,结果总会因为各种问题出现不一的意外。我想劝所有人在能进行商量的情况下都不要走到合同谈判或诉讼那一步,里面所牵扯的时间成本和人力是消耗最大的。外包公司是希望快速结束这个项目已达到盈利,越多越好;找外包的是希望产品快速无BUG的上线,时间越快价格越低越好。所以双方都应该朝着这个目标去进行。而客户协作胜过合同谈判的意思不仅仅是这样,客户也就是甲方应该在前期尽可能的表达自己的想法已确保对方在开放的是自己所理解所想象的产品,并且在产品开发周期要求一个又一个可运行的产品已确保这进程的走向是没有偏的。开发团队应保持一定的速率的进度随时给予客户了解每天开发团队的进度及中间可能出现的变故等,及时确保产品每一步的走向是客户知道并认可的,不做无用功。在传统外包公司销售部和开发部是对立的,因为销售在前期承诺了过多的功能,而这个更多的又不是体现在合同里,实际执行的人都是开发团队,所有销售夸下的承诺就是他们的苦海。所以客户要和项目经理多交流,项目经理也要和开发团队多交流。一切都是互通的。