软件开发注意事项
开发APP 80%的人都容易犯一些致命的错误:
◆以为做个软件很简单,所以描述需求的时候及其模糊。
◆ 急着想要报价,在自己对需求不确定的时候就要报价。然后就按这个报价开始做。
◆不知道自己要什么,想做个商城说要做的是淘宝。
◆ 网站和手机App区别搞不清楚。要做手机App却说自己要做网站。
◆ 以为所有软件都有模板,而且模板都很便宜。
◆缺乏耐心,不明白也从未想过自己要做的东西有多复杂。
◆自己不知道要做的东西的具体功能,要靠开发商来猜。而且还这时候就要报价。
事实告诉我们,这些问题一定会导致以下结果:
◆ 项目做出来跟自己想的完全不一样。
◆根据一项国外的专业数据统计机构调查,在外包项目中,有52%的项目经理因为项目失控/失败而被迫离职/降职/开除。
◆ 项目上线的时候漏洞百出,反复修修补补解决不了问题。后面必须重做。(滴滴打车当年的外包就遇到了这种情况,找外包做的一塌糊涂。做出来没用过一次就直接报废重做)
◆ 误把自己都不确定需求时得到的不靠谱报价当做真实报价去开始做预算,导致后期资金预算跟不上继而导致项目失控/破产。
我们经常遇到客户第一次跟我们咨询的时候说,以前找的某某软件公司太坑爹。做的东西象一坨屎,仔细一问就发现。原来他自己在项目开工之前自己对自己的需求是完全不清楚和不确定的。就这样稀里糊涂就开工了,以为开发商会帮他完善剩余东西。实际这些客户告诉我遇到过的开发商没有一家会去帮他们中途完善。
原因很简单,需求想的越仔细开发成本越高。一般根据需求的细化程度,成本差出来几倍到几十倍都很正常。10万接的项目,真要扣细节100万的工资成本都不够。这也是一般客户们平时问报价的时候,不同的开发商报价会差出来这么多倍的原因。并不是仅仅是贵和便宜。根本原因是大家对需求的理解完全是不一样的。客户自己不清楚就没人会清楚了。
负责任的外包公司会仔细的问你需求细节,不负责任的外包公司上来就给你报价。
人总是有惰性的,一旦要想事情和要思考的时候都懒的思考。所以客户们一般反而会讨厌这种有耐心的会仔细问需求的开发商。反而喜欢这种什么都不问其实不知道你要做什么,但是先报个超低价吸引祝其入坑的开发商。最后带来的结果一般就是我们前面提到的那种情况,项目直接失败。或者中途被黑心开发商宰一把,中途狠狠加价(原来1万能做的功能中途要5万)。因为你已经选了他了,要么做到一半放弃,要么按他的继续加钱。大部分人都不想前面投入一半的预付款打水漂,而又不知道加这么一个功能到底会加多少钱。这时候已经没法再去选其他的开发商试了。所以会选择做下去。。。
我见过的最常见的例子,就是
很多人上来就问做一个APP多少钱?
或者问做一个简单的APP多少钱?
或者说我要做个类似美团/淘宝/京东/滴滴打车,一样的APP多少钱?
第一种:问做一个APP多少钱?
其实你问这个问题就好像你到4S店问,一辆车要多少钱?车有10万的家用轿车也有1000万的超跑。车根据用途(轿车,越野,跑车,赛车,公交也是车),配置,引擎,装置不一样,价格和成本是天差地别。同理,你来问APP也是一样的。
必须表达清楚自己要的是什么样的APP,用于什么场景,APP解决什么问题,怎么解决(具体需要哪些功能)。
来不来就来问价格,不亚于你去问汽车4S店,我就是要一辆车,你告诉我价格就行了。别人肯定会拿你当傻子。因为你踏马没告诉人家你到底要什么车啊魂淡!!!
如果你只问我做一个APP多少钱? 我只能告诉你,几百块到几个亿,都有可能。
第二种:我要做一个简单的APP,多少钱?
每个人对简单的定义是不一样的。你说的简单具体是简单到什么程度,你又具体是要做什么东西的,很多人觉得微信也挺简单的。。。建议你每次问的时候都说清楚具体功能。
第三种:我要做个类似美团/淘宝/京东/滴滴打车。一样的APP多少钱?
一般这么问的创业者有个特点,很多说不清楚自己要的是什么。可能只是看中了比如滴滴打车的地图功能,但是描述的时候说的是跟滴滴打车类似。而滴滴打车的地图功能本身实际只占了滴滴整个软件系统功能的百分之一都不到。同理,有的是看中了美团的团购部分,说自己要做的是美团。有的看到京东有在线支付,就说自己要的是京东。如果你直接这么问,我其实完全不明白你想要的是你举得例子里面的具体什么功能。因为不可能完全仿一个美团/淘宝/京东/滴滴打车。。。
为什么不能是完全仿做?
你看到的貌似简单的美团/淘宝/京东/滴滴打车/微信......这样的APP,每个的软件研发成本都是过千万,乃至几亿的(特别是复杂的后台)。因为这些大公司APP的细节的复杂程度和后台的复杂程度超乎你的想象。现在所谓的很多软件仿京东,微信之类的,网上说能给你开发微信京东之类的公司,可以说真正能做的功能不到微信京东的百分之一。举几个具体的例子。比如就说最基本的注册登录,可能就分为邮箱注册登录,微信授权登录,QQ授权登录,微博授权登录,短信验证码注册登录,密码找回又分为邮箱找回和短信找回。这里就罗列了7种情况,你做一种还是做7种开发成本可能就差了7倍或者更高。
又比如搜索功能,最简单的搜索功能可能开发一下就是几个小时的事情,但是这种搜索可能在几千个,几万个商品数据的时候还能正常运行。但是如果商品数据有几百万条,这时候肯定会崩溃。而不仅仅是商品数据会起到影响,比如你搜索功能是支持模糊搜索(即输入的关键词可以有偏差)还是精准搜索。模糊搜索能模糊到什么程度,讲究都是很大的。淘宝京东这样大平台的搜索功能,很多大公司光一个搜索功能就是需要十几个人的开发小组常年去进行开发和优化,养这些人的成本一年就是几百万上千万。你现在就可以打开淘宝的搜索功能仔细看看它有多少细节(高级搜索,地域,价位筛选,搜索结果排序等等等等)。感兴趣的可以自己去查查这些上市公司的财报。每个季度在软件开发上的成本都是几千万到几个亿不等。大公司一定是招自己有需要的人,如果不需要肯定不会招这么多人。由于篇幅有限,更详细的原因和要注意的地方不做详述。
感兴趣的可以看看滴滴打车背后的技术团队有多少人。仅3月份在招的技术职位就多大上百个。平均年薪都在20到40万之间。
现在诸位能理解为什么很怕这些问题了吗?
因为创业者的确是明明确确的告诉我,要做一个淘宝/京东/滴滴打车类似的APP,但是这种APP的成本是天文数字。你可能要的只是其中一部分功能,或者只是想模仿他的运营模式。
有些人可能会觉得,这是大公司所以才需要。我创业初期需要考虑的这么细吗?很明确的告诉你,非常需要。
等到错误发生了你再去解决,所要付出的成本是非常巨大或者会直接导致失败。
大公司不仅仅是因为他是大公司才做得细,是因为他做得细才能成为大公司。
而且你不考虑没人会替你考虑。不要寄希望于你在网上找的这些软件公司,他们只会告诉你这件事很简单,你快来吧,来了就能发大财,互联网人傻钱多。(说到这里白及就是一个典型例子)你不说清楚自己的APP具体需要的是哪些功能,最后吃亏的一定是你自己。因为你在不清楚自己要做的东西具体是什么样子的时候,你找的软件公司就更加不知道。
你寄希望于他们给你去思考细节,他们只会给你偷换概念,偷工减料。因为这样做就可以给你的报价更低增加你选他的概率。
之前有个真实的例子,一个客户跟个不负责任的开发商只说了有注册登录,而没和他说过要做找回密码,开发商也没有提醒他。而最后软件就是没有找回密码的。如果各位看官不想自己也遇到这样的情况而被坑,就请想清楚自己App尽量多的细节。
比如一个购物车功能包括,加入购物车,从购物车移除,添加/减少购物车内某个商品的数量,直接输入数字修改商品的数量,批量付款。这些功能里面你说了一个很多开发商就只会做一个,大部分开发商不会考虑其他的。而一般创业者会觉得,淘宝有啊,一般都有啊你为什么没做?(创业者看到的一般都是那种大公司很成熟的产品),你要知道,淘宝的开发成本是亿级别的。而且经过了很多年的迭代和更新。
阿里巴巴集团2015年Q3季度财报显示,2015年第三季度产品开发开支为人民币32.25亿元(约合5.07亿美元),占营收的15%。你没看错,一个季度32亿的开发成本。一年就是一百多亿。
大部分情况下细节方面你不和开发商提,一般就没有。如果别人会替你考虑的越全面,那么开发成本一定会很高。
总结:我的团队里也是这种情况
这里我列举三大块最影响APP软件质量和成本的东西。希望大家一定要记在心里!!!方便找合适的开发商和掌控项目质量。
1.功能的开发方式
现在市场上存在的几种开发方式如下:
a.web网页加壳生成APP
web网页加壳生成APP的开发方式,先花几百块钱买个现成的手机网站模板,在加壳打包一个APP只需要5分钟,但是做出来的效果很差,耗流量,浏览体验极差,访问速度慢等等。部分开发商利用客户不懂,把这种5分钟速成的东西,当成原生态开发的APP去欺骗创业者。卖几千到几万的价格。而创业者很多时候还自以为捡了便宜(问了十几家这家最便宜)。
b.Web网页+原生态混编(网页部分占80%以上)
混编方式的APP效果比第一种稍好。但是如果要做出接近原生态的效果,需要不断的优化和改版,花的钱不比原生态少。而如果不对网页和系统优化,只是简单的拼凑。那么做出来的效果和web加壳的差不多.
c.HTML5开发
成本大概是原生态APP的50%到30%,也是比较接近原生开发能达到效果的一种方式。但受到很多限制。各大平台兼容性还不足,相对来说还处于过渡期,同时比较耗系统资源。在低配的手机上更卡。手机淘宝的APP目前就是HTML5+原生态混编的,相对来说在很多低配的手机上还是比较卡的。最近优化了很多,但是早期的表现很不尽人意。Facebook和京东都尝试过HTML5,同时也吃了不成熟的亏。HTML5的未来或许是美好的,但是这期间的试错成本小公司不一定承受得起。
d.原生态开发
是目前最常用和最成熟的方式。越重视细节成本越高。一般根据具体功能要求一个APP的开发成本从几千块到几千万不等。
2.功能的实现方式(功能的复杂程度和用户量)
比如上面说到的搜索功能,具体对搜索功能的要求成本会让成本差出来几万倍。不仅仅是搜索,再举几个例子。比如微信里面的聊天,分为文字,图片聊天,录音的语言聊天,语音及时对讲,视频聊天。
语音及时对讲和视频聊天只简单提一提。这些都是开发成本要用百万级和千万级来计算的东西。微信和QQ乃至现在自己的语言对讲和视频聊天都是有很多问题的,比如同时多人聊天会有很大的回声,电流,杂音。不是腾讯不知道,是知道了但是很难解决。
这里具体讲比如录音发送,一般来说我们听一段60秒的音乐是1M左右。而微信的一段60秒的语音压缩到了几十K,来保证发送和接收时的速度。同时还做了语音降噪(减少周围的噪音)等等。而如果这些不去考虑,只是简单的发送一段语音。两者之间的开发成本相差几倍到几百倍很正常。同样的,你的APP做出来你会发现,消息发送很慢,很耗流量等等。
3.APP在手机上的兼容性
相信各位在用手机APP的时候,特别是安卓手机。肯定发现有些APP会闪退,卡死之类的情况。这个就是因为APP的一部分功能在这台手机上不兼容或有bug。这些问题非常多而且很难解决。你只是一个用户的时候感觉不会那么强烈,因为你用的大部分都是大公司开发的很成熟的产品。但是你自己作为创业者的时候就必须要考虑了。因为没有人想自己的APP开发出来,10个手机上8个闪退。但是事实又的确如此。很多几十万成本开发出来的APP到处都是闪退。
兼容性是非常影响成本的(会对成本造成上下几倍到几百倍不等的成本)。仅安卓而言。安卓手机全世界有一万多种机型,各种不同的手机品牌,分辨率,操作系统版本号,都对程序的兼容性有影响。很多时候做兼容性调试的成本还要大于软件的开发成本,真要做到主流手机兼容,光买测试的手机就要花几十万去买。一个APP如果开发出来,不做兼容性调试开发。和做兼容性调试开发,成本也是会差出来N倍的。
另外在说说模板,很多时候一些项目如果有成熟的模板解决方案能节省很大的成本。
但是模板也一样价格存在巨大的差异。同样的一个商城模板可能价格也上下差出来几十倍,原因也是因为细节功能完全不一样,可能功能差了十几倍。如果你在买之前不仔细观察细节功能,那么一定会出现买了后大呼坑爹的情况。这个系统可能整个流程都是残缺的,更不要提你拿这个残缺的系统去运营了。
另外不是所有APP都有模板,一般来说只有商城相关的APP的模板比较多。而且模板有成熟不成熟的区别,真正成熟的模板开发成本和时间是巨大的,一个公司不可能同时有很多好的模板。因为数量多,必定不精。开发一个好的模板的成本已经巨大了,同时还搞多个,则说明每个模板上投入的成本和精力不会太多。
app外包开发常见的几个坑。
----------------------------------------------------------------------------------------------------------------------------------
常见坑一:
客户问外包公司你们有什么知名案例吗? 外包公司说有啊,美团,大众点评,携程,一号店(说出一个一二线,或者是三线有一定知名度app的例子)是我们做的/是我们的案例。
这种情况下90%是偷换概念或者纯骗。不管你找的这家公司是真有几百个人的大公司还是只有几个人的小公司。
实际情况是,任何你但凡听说过小有名气的App,基本都是互联网公司自己招人做的 不太可能是找外包。你可以在百度搜索任何一家你听说过的app名字或者互联网公司名字+招聘2个字,都能看到他们长期在招聘大量的程序员工程师,同时公司长期备有几十到几百,甚至上千人的技术团队。
即使真的找外包,可能是最早创业初期的第一期找的外包,但是他们后来出名的那个系统跟最初找外包做的,已经完全不是一回事了不是一个东西了,业务代码已经完全不一样 。
外包做的东西就是前期低成本试错的一个东西,很可能一次都没用过就直接报废。滴滴打车之前最早就是找的外包开发的,但是基本没正式用过就直接报废了自己招人重新做。但是这家外包公司可能在N年后滴滴打车牛逼了后会跳出来跟客户说:滴滴打车是我客户案例,滴滴打车是我做的。利用的就是偷换概念和客户不懂不会较真。滴滴打车当前找他们做并不是因为他们牛逼,而是滴滴打车可能也被他们坑了。
还有的是,有些外包公司在这个很出名的App公司团队初创的时候,跟这个团队的创始人吹过牛逼,也只是吹过一点牛逼而已,可能并没有实际合作项目。然后这个外包公司N年后发现当年一起吹过牛逼的那小伙做成功了,这时候他跳出来说 XX是我客户,XXApp是我们客户案例。。
还有一种情况就是, 比如很大的互联网公司,比如携程或者大众点评或者一号店,他们平时开发的时候也会有忙不过来的时候 ,偶尔会找些外包公司进行一部分的人员外包,要几个技术员过来帮忙干几个月临时的杂活。一般都是打杂接触点边缘化的没有技术含量的东西,根本接触不到核心部分业务代码。 但是这时候外包公司又会说,大众点评是我们做的。都是偷换概念,显得自己牛逼。
还有的就是一点关系也扯不上, 强行欺骗来增强客户信任。揭穿了就算了。
其实你可以做个简单的实验,你在百度或者其他任何平台公司找app外包开发公司的时候,会遇到N家官网上有大众点评,或者在家点点,携程,美团之类的app是他的客户案例的,或者是他们的业务人员亲口跟你吹这样的牛逼。
其实这些被合作的互联网公司并不知道自己被合作了,以前有个梗是说吃了一次肯德基就是肯德基的战略合作伙伴了,加了一次油就是中石化的战略合作伙伴了。 而在app外包领域里真的这么干的公司非常多,不说小的,甚至大量已经上市的外包公司也吹这样的牛逼。偷换概念乐此不疲。
常见坑二:
外包公司给你的合同一定要仔细看,很多时候被骗的客户自己公司是有法务的但是也一样被骗。因为你的法务和律师根本看不懂那些看似专业的技术词语。所以并不知道他是在扯淡还是合理的。由其是在验收标准和开发要求的这几大块上。基本如果甲方公司没有懂技术的,哪怕有专业的法务也太容易被骗。
一般体现在合同里对需求描述的不详细或者压根合同里就没有提到需求,只说要做个某某app,多少钱什么时候交付。 这样的合同其实压根没有一点卵用,你们之间商量的做个某某app只有你们自己口头讨论了需求,但是如果没非常详细的落实在合同里,最后外包公司随便给你个东西也能交付。甚至压根就不是最早你们商量的,因为合同里并没有证据能证明你们要做的到底是什么。
同样的还有开发方式(原生还是混编,H5还是加壳),验收的标准是什么这些如果不提,每一次都是提前被埋下的炸弹,遇到骗子你去法院都白瞎。根本就告不倒人家,就是合法的骗。
一般负责任的公司在合同里都会非常详细的给到一个很长的需求文档,根据项目的大小起码有几十页,里面有各自原型图和需求说明。用到的技术,项目架构,开发方式等等都讲的非常清楚。
这个文档是合同非常重要的附件,里面详细的描述了你们这次项目具体是要做成什么样子。如果没有这个,双方签完合同的时候其实都是蒙逼的。要做什么根本没个界定,到时候胡乱拿个东西交差也是不违反合同的。
这个看似常识的东西其实大部分外行都不知道,我每年都至少见到几十起外包开发被骗是被坑在这个地方的。
甲方如果不重视这个,哪怕被人骗了告到哪去都没用。 因为别人没违反合同。你们的合同压根就是一张废纸。
暂时就更新这么多,app外包坑非常非常深。最好的方式就是甲方自己公司有个懂技术的能参与进来选择开发商和逐步交接。以后有时间在慢慢更新,希望能帮到真正想创业的人。
总结:
我接触的第一个外包公司的时候,对于我来说还是没有达到我想要的要求的,当然那个时候,自己也是不专业的。
文中博主有点偏激,但是说的很专业。要解决他说的这个问题。
方案一,掐头不掐尾。找个技术总监,来协调公司和外包公司的技术沟通问题。
参考:
https://www.zhihu.com/question/21453934
与外包公司合作项目的风险主要在于是否能按时按质的完成项目,也就是说绝大多数的外包公司他们想把东西做好,但是出于各种各样的意外,项目超出了他们自身的能力范围(可能是技术,可能是管理),合作体验差,产品出来品质差,最重导致甲乙双方都不愉快。一般不会是故意的,所以还是那句话基本不存在”被宰“,因为项目做不顺利乙方自己也是又相当大的损失的,就像七伤拳,”宰人先宰己“。
任何行业的项目都有着这种问题,所以我的回答可能跑偏,下面这些都是真对在app外包中怎样降低项目失败概率从而降低经济损失的。
必须承认的是我们公司的项目也是有出现过问题的(但愿老板看不到),有段时间做项目总监,要了解公司的所有项目,发现他们的潜在瓶颈也就那几个点,大多是类似的。跳出我们公司,站在旁观者的角度说下流程规范,不谈技术。
1、话说流程基本就是:找外包方-阐述需求-报价-签合同-交钱-做ue-画ui-种码-测试-验收-上线。。。没啥特别的,尤其是签合同和传统行业的项目一样一样的。不懂技术也没关系,合同公平与否自有法务审核,重要的还是执行过程。一般行业标准都是有首付款的,然后有免费维护期,还有注意要提供源码
2、整体外包多数来说是个好事。我见过的一个不愉快的项目就是甲方把app找了我们做,后台找了几个兼职的。这种痛苦啊,你能懂么他们是兼职所以白天根本不能做,只能晚上做,然后各种进度跟不上,十一放假的时候给我们的技术打电话要求我们加班。。。
所以,不是12306那种大项目的话尽量找一个牛的公司让他自己做。免得为两公司的磨合买单。
3、切记:严防转包。要切实看到乙方是否有真正的开发实力。我们有几个客户就是被上一家公司做砸了又找到我们重做的,做砸的原因就是他们私自转包,最近进度失控。转包的失败概率是非常非常非常高的,自己控制都有风险更何况倒一手。
4、需求理解要自上而下自甲而乙的统一。很多项目是初期产品没定义好,后来发现很多功能甲乙双方的理解有偏差,后果可想而知。这种情况多数是由甲方对接人不能领会领导的意图和乙方PM对产品需求把控能力差所致。乙方的PM和项目经理的确在项目中起到很重要的作用,开发前一定让乙方把UE做的十分清晰,UE重中之重,开发顺利与否个人认为一半的决定因素在UE。乙方PM有义务为app提一些建议,但是最重要的建议还是来自甲方的高层领导哈,这个没办法领导的意志就是方向。见过一个客户他自己不了解某个功能是什么意思,又不敢问领导最后貌似被开掉了,但是因为他个人这个项目耽误了好久。
5、该到UI了,记得事前跟乙方说好你们有没有特别想要的风格色调,是否和公司的VI什么的保持一致。切忌要什么“高端大气上档次,低调奢华有内涵,时尚前卫国际感,庄重优雅贵族范儿”身为ppt狗都对这些词语自动屏蔽了更别说设计狗了。说了这些只会提高预期却提不到点子上。提意见的时候最无语的就是“这不好看,换一个”,哪里不好看,想改成什么样的明确说会让UI进度更快(经验表明这个节约的时间可能不止一星期)
6、不知道你们要做的项目有多大,要考虑并发量什么的,还有容灾系统什么的,总之安全性拓展性方面的东西如项目有必要记得合同前沟通,这个也会影响到价格的。架构真心重要
7、iOS的app上线是需要苹果账号的,这个又分个人账号、公司账号、企业账号神马的(这仨账号啥区别您可以和外包公司的人交流下,如果以后还不懂可以随时问我),如果您想让自己的app以后显示来自自己的公司,那就要去申请个账号了,不然等开发完才想起这个事儿就要耽误上线时间了。我们的客户有的规模很大很注重这个,有的不注重的直接用我公司的账号上传了就。。
8、如果有必要跟乙方吵架,记得可以对项目经理凶,但是不要对技术说的太难听。。。这个很讲究,好处您想想就知道了
9、项目开始前一定要求乙方提供时间进度表,大多数时候时间进度表和实际有偏差,但是进度表可以使双方知道我们的阶段目标在哪里。有进度总比没进度好。
-------------------------华丽的分割线--------------------------
3. APP外包的流程是怎样的?
一般外包的项目都需要经常这几个流程:
1)需求沟通:双方沟通项目的需求,对项目的可行性进行分析
2)工作量评估:在确认了项目的需求后,外包团队对项目的价钱和进度进行评估,并提供一份详细的报价表及项目进度文档,确认开发进度及时间安排
3)签署项目合同:双方在项目报价和开发时间上如果达成统一意见,则正式签署项目合同,之后项目将正式启动
4)设计,研发,测试,上线:根据最终确认的设计方案,对整个项目进行产品原型,视觉图的设计,研发,测试,验收,最终发布上线
5)相关文档与源码交付:完成所有的设计和开发,根据实际需要进行必要的技术输出,合作完成。
6)维护升级:一般的APP项目开发完后都需要进行维护,因为随着手机系统的升级,或长时间的使用,或多或少都会有其他一些新出现的问题需要维护。具体可参考下图:
最后,在技术问题的选择上有几个误区陈列如下:
1.架构贪图完美前言 —— 开始别想架构,把眼前的问题解决好最重要
2.先进的技术和大众的技术 —— 稳定的技术是创业初期的福利,有更多的技术支持方案和选择,有成熟的人才
3.完善考虑仔细斟酌 —— 快速上线,快速实现,过程改进,才是最佳方案
4.团队越牛逼越好 —— 牛逼的人是否在一线真的干活最重要,稳定的合作伙伴远比牛逼重要
5.用什么语言 —— 这个看看培训学校在培训什么语言就知道了
6.代码一劳永逸,能够支撑一年半载 —— 别做梦了,系统代码要能够承担从零开始写的代价
外包还涉及到开发时间,需求变更解决机制,沟通机制,上线测试,后期维护和服务等诸多内容。
另外几个画外音:
1)系统,即便是我们自己的,每8个月更新30%的代码,14个月更新90%的代码。系统是不断升级和迭代的,找到这样的人(自招或者外包)。不要找固步自封的团队;
2)系统的外部依赖也是变化的,例如:微信的卡券,1.2, 1.4, 1.6, 1.9我们跟着经历过来的,他们增加减少和调整算法结构,我们都是跟着变化的。不要考虑一蹴而就的技术实现方案;
3)外包公司和自己团队核心面临的问题,过了8个月,很多代码很多架构没人敢动了;业主或老板不愿意承担改动的责任。要知道软件项目没有人一开始就“门清”的,用一个完整的解决方案解决12个月以上的事情,找死。业主和老板,要承担基础代码变动带来的“不确定”性。你不需要懂,需要的是担负相关责任,和技术一起平滑过渡,N多人不理解原则才出问题的,而不是没有合适的团队或者人;
4)12个月,代码一定要重构,找你信任的CTO才是关键。任何一劳永逸的态度,都会出大问题。
新创业的兄弟,我在技术上的建议是:
1)你们的CTO如果没有见过1000万访问的配给(团队+设备),你就等等。如果你的公司成长到了日活跃用户100万(客户端),你的CTO目标是5000 - 1亿规模的CTO,否则后期成长肯定有问题。
2)找大公司的大牛技术做顾问;找一线技术做技术经理。解决实用和前瞻,现在和未来负载的综合问题。
3)在你不需要技术团队跟屁虫一样跟着的时候,选择外包就好了。技术顾问+小型外包适合非技术型创业团队。因为技术顾问都是你信任的朋友。如果没有,去找一个值得信任的朋友。
在我们接手过的项目中,发现最大的问题其实是金主们(甲方)一 是不明确自己的需求,二是 这个需求的难易实现程度。当然这也是会被坑最主要的原因。
但这个问题有木有办法解决呢?是有的,全看你找的技术团队。接下来告诉你在选择流程里面避坑的方法。
1.沟通需求
一般来说第一次都会面聊沟通需求,此时注意在告知了App的核心功能后,对方是否帮你扩展,丰富你的需求,并提供解决方案。【举个栗子,你是做社交的App,对方会问你在第一步注册的时候,手机号码,邮箱,微博,微信等常见登陆方式,你要选择哪几种?】
必要时候会要求你画简图,避免双方信息沟通不对称。
2.项目开发文档及报价
前期沟通后,外包团队都会出一份详细的项目开发文档及报价,囊括项目各个功能点,功能点的实现效果,所需人员个数,所有的时间节点以及需要你给到的支持,价格。你要评估这份开发文档是否适合你,看什么,看时间节点。
针对App来说,大概的时间节点描述一下,出原型—确认原型—出设计简单的交互—确认交互—出初步设计风格—确认设计风格—开始研发—前期检查—中期检查—完成—测试—(是否有维护)—交货
时间周期和价钱都确定无误的情况下,就可以签合同付定金开始做了,注意合同上要写清不按时交货的赔偿等等。
3.选择外包公司还是私人外包团队
归根结底,还是一个实力的考量。并不太认同楼上说的外包公司就一定靠谱,私人兼职团队就一定不专业的看法。
对于外包公司,最基本的是看案列,是否做过较大型成熟 or 知名的项目。
对于私人团队,就看团队里的人隶属于哪家公司,BAT占多的话,靠谱度会直线上线。
流程:
1赞同反对,不会显示你的姓名
管理外包,这其实是个风险管理的问题,可以分成以下三个阶段:
1:开始前,如何降低风险
2:进行中,如何控制风险
2:风险已发生,如何尽量降低损失
我们先来聊聊第一个:开始前,如何降低风险
首先,从自身来看,如果以下两个问题没弄清楚,外包失败一半的原因其实应该算在自己身上。
1-自己要清楚要实现什么
经常有人私信我,“做一个微店那样的网站多少钱?”,“做一个网站要多少钱?”,“做一个京东3万块钱够么”。
所有在外包的时候,只能提出这样的问题的人,都应该先停下,不要去找外包,要先整理清楚自己的需求。你要先弄清楚:
1)你的核心流程是什么?
是用户购买?是分享转发?是发布信息(文字,图片,语音,视频)?
就拿最简单的登录流程来说,都分为手机号+验证码登录,手机号+密码登录,邮箱+密码登录,第三方登录。
2)最简单快速可验证核心流程的产品是什么?
比如facebook, 最开始核心流程就是就是对两张人脸评分,它的功能也只实现了这一点,然后迅速爆红于校园。
3)所有你想做的事情当中,可做可不做的有哪些?
这个其实是对问题2的补充。
Stack overflow创始人Joel在他的《软件随想录》中曾经提到过,那些自己出于上线压力不得不从本期版本中挪动到以后版本的功能,后来被证明从来没有上线过,而这,被他认为自己做过最正确的事情之一:不要为了一些可有可无的功能而浪费时间精力。
以上三个问题,以程序员客栈3.0为例,我们会这样做:
1)我们的核心流程:企业方预约开发者做短期雇佣
2)最简产品形态:
· 页面:可预约的程序员列表,预约页面,预约进展页面
· 流程:企业方预约(具体时间,地点,工作内容)-开发者接单 - 企业方托管费用-双方联系,开始开发-开发者提交完成-企业方评价
3)在验证阶段,可有可无的需求:
所有通过现有其他工具可以实现的需求,以及对核心流程无关键影响的需求,我们都定义为现阶段可有可无的需求,如:
· 限制开发者接单次数
· 限制企业方发布次数
· 上传文件,提交每日进度
因此,我们在原有程序员列表,个人履历页的基础上,产品最终形态和交互如下:
2-知道实现一个产品的流程,以及一般的时间安排
避免节奏踏错,浪费时间和人力
实现一个互联网产品,一般的流程如下:
· 第一步,将想法变成产品文档(起码包括原型,流程图,页面交互图,页面说明文档),一般是专业的产品经理来做这件事情。 因此,你首选需要找到的,是一名产品经理。
· 第二步,根据原型页面做出UI设计,提供设计文档(包括设计效果图,原稿图,切图)。因此,你需要一名UI设计师。
· 第三步,根据你的业务逻辑和数据要求,做出后台系统,提供接口。因此,你需要一名后端开发者。
· 第四步,根据原型,设计,开发出用户界面(网页,iOS,Android都是此类),因此,你需要一名前端开发者(Web前端,iOS,Android等。)
· 第五步,前后端联调测试,这个时候需要测试人员根据文档做出测试用例。测试成功后,才可以部署上线。
这样,以一个最简单的APP研发规划为例,可以做出以下的时间规划:
3-知道如何去选外包合作伙伴
再次强调前面两点都准备好了,我们才需要考虑寻找外包合作伙伴的事情。如果自己都还没想清楚,就开始找人来开发,多牛逼的开发者,也不能帮你成就一个可以正常上线的产品。
在找外包合作伙伴时,如何来预防项目失败呢?我们的经验是以下3点:
1:有经验的人
他最好做过类似项目,已经积累了成功的开发经验,而不用从头开始学习你需要的功能如何开发。
否则,不仅失败可能性很高,你需要支付的金钱和时间也会成倍上升。
我们和某些程序员聊过,他们会这样来对私活定价:
自己很熟悉的,难度低,时间快,价格低;
自己知道,但不熟悉,需要去研究一下的,难度中,时间中,价格中;
自己不知道,还需要去寻找解决方案,然后来学习的,难度高,时间长,价格高。
因此,找到有经验的人,他会很轻松高效,并且便宜地帮你完成你需要的功能。
因此,我们也把这个认识融入到了客栈开发者个人的展示,以及项目程序员对接过程中,来提高成功率。
2:靠谱
他最好有良好的合作记录,业界口碑不错,老客户多。能看到老客户对于合作的评价更好。
技术很牛,态度不好的开发者我们也遇到过。有接单之后突然没有人影了的,我们只能尽快对接下一位;有遇到一点挫折,就从项目经理开始埋怨到发包方的;有闹脾气最后不愿意合作,源代码也不给了的。。。。。。这些人,即使技术很牛,也不适合合作,会给项目带来不可预估的时间甚至金钱损失。
这个是我们非常看重的一点,因此,我们会展示所有签约开发者的过往评价,成功次数和成功率,来帮助企业方做出更正确的判断。
3:有时间
第三个潜在的风险,就是开发者没时间了。技术很牛逼,态度也很好,但是最近有事在身,没有办法来接单,如果接单,那么失败可能性很大。
为了避免这个影响用户在客栈上雇佣开发者的成功率,我们专门研发了“Ping”功能,有时间想接活的开发者每天可以把自己Ping上首页,在对接项目时也会得到优先推荐。
4:细致到每周的交付计划
如果自己去找外包,签订合同是基本要求。
但是在签订合同的时候,我们比较容易忽略的是具体的交付计划,以及根据交付计划来付钱的规则。
考虑到外包比较多的是每周开会,建议在合同中也要规定要每周的交付计划,双方都按照这个交付计划来推进。
这样,在之后如果发生延期,从每周计划上便可以定位原因,理性解决。
总结
如果在发布外包之前,你做好了以上准备:
1)明确的需求
2)清楚需要完成哪些工作
3)选择了合适的合作伙伴:经验,靠谱,有时间。那么你的成功率会大大提升。
1赞同反对,不会显示你的姓名
1. 抓主要矛盾
首先,你得有一个明确的需求,最好有一个需求文档(我曾经给一个朋友发了“你有需求文档吗?”然后他消失了很久没回消息。后来他告诉我,他去百度了一下什么叫做需求文档……)。然而,需求文档一定是只关注最重要的那个功能和流程。也许这个行业有100个问题,也许你有救世主的才华,但在你的产品第一版,请务必只解决那个最迫切的需求。否则你将面临产品胎死腹中,或者失去市场先机的惨痛局面。
你不必去百度需求文档怎么写,格式是什么,那都不重要。你就按照你内心的想法,用其他人能看懂的文字表达出来就好了。还有,需求文档不应该超过一页纸,否则一定是你想要的太多了,请砍需求。由于公司业务的原因,我帮不少创业者分析过产品需求,做的最多的一件事情,就是砍砍砍。
2. 请个 CTO 不如招个产品经理
无论你面临的是千亿级的市场还是万亿级的市场,技术在最开始都不是一个重要的因素。要知道淘宝最开始的程序也是个渣渣,后来是完全重写的。请一个 CTO 是很费时费力费钱的,但普通的产品经理有很多。招一个产品经理,帮你把想法和需求整理成产品文档,画出产品原型图。这个过程能够很好的帮助你梳理自己的思路,有什么想法应该在这个阶段探讨,确定。在这个阶段多花点时间值得,对于后面的工作是非常重要的一个基础。
找产品经理也不需要名校名企BAT背景,有一定工作经验,能写文档,能画图就行了。产品经理往往是跟过软件开发的,他可以对后续的工作给你很多建议。甚至他还可以帮你介绍程序员。
3.设计没有你想象中那么重要
除非你是做一个以设计为导向的产品,否则对于第一版的产品来说,设计真的不重要,只要不太丑就行。我可以列出一堆知名企业的 APP 在最初几个版本的设计都是惨不忍睹,例如 京东,一号店,寺库等等。在初始阶段,能解决问题比赏心悦目重要太多。所以在产品开发的时候,不要太过于纠结设计的问题,虽然你很羡慕隔壁做的精美绝伦的 APP,但那都是后面的事情。找个设计师,快速把产品经理的原型图变成产品界面,体验一下将来产品的感觉,这很重要。
以下截图是京东 APP 的早期版本,大家感受一下~
4.软件开发的标准
对于普通的软件产品来说,开发已经是非常工业化的流程了。无论你是 APP,网站还是微信,只要你能想到的,基本上都能做,而且大部分软件开发者都能做,不是什么高科技。除非你说想再做一个微信,基本上都不太贵。有一个粗略的判断标准:如果你的产品不能以10万元以内的成本,在三个月之内做出来,那么你的需求有问题或者你找错了人。
在开发的过程中,要控制自己什么都想要的欲望。软件开发了一半,看到别人有个新功能,然后你去找程序员说能不能加这个,加那个……相信我,这时候程序员最想干的就是拿键盘拍死你。要把功能的需求定在产品阶段,产品原型确定了,就尽量不要改。先做出来看看。
基本上,你不必担心实现你想要的功能会不会很贵。对于绝大部分的创业项目,前期的研发成本应该是不高的。所以,有想法就尽快试,失败的成本估计也就是北上广深的一个厕所,哈哈。
5. 要能容忍 Bug 的存在
所谓 Bug 就是软件的缺陷,所有软件都有,比如头像多点两下就闪退了。天下武功,唯快不破。在目前的创业环境下,尽快推出产品是王道。你测来测去,bug 测没了,用户也测没了。所以,不纠结,主要功能好用就上。当年我也面临过同样的问题,产品有很多 bug,同事都不敢上,后来我硬是让上线了。有 bug 慢慢修,死不了人的。我记得京东最初有一个版本,下单完成后会闪退。于是我每次下单完成以后要重新打开 app 再下单,或者看看刚才买了什么。所以你看人家百亿美金的上市公司都这样,我等屌丝创业者还纠结啥?最近上线的微众银行更是说明了这一点。
6. 找外包还是自己建团队?
首先讲结论:如果身边没有开发者资源,短期内希望产品上线,先找外包,同时着手建团队。由于大环境的原因,外包在国内成了一个贬义词,很多人被坑过,所以不敢找外包。但从模式上,外包是一个非常好的解决团队资源稀缺的方法。但是我们对外包也要有一个正确的认识,不能期待100分,80分算很好的了,60分也 OK。但是长远来看,外包解决不了后续发展的问题。当你有很多需要及时响应的需求,或者很多琐碎的需求的时候,自己的研发团队是必不可少的。所以,如果你是一名严肃的创业者,还是尽早建立自己的技术团队。然而,正如之前说过的,在 A 轮之前,CTO 应该都不是一个关键因素,所以不急。找几个踏实做事的开发者实现你的想法比较靠谱,也不必追求名企名校BAT,基本上在早期阶段,很难。
软件开发是有一个流程的,以上几点基本覆盖了最常见的软件开发流程:需求,产品,设计,开发,测试。按照这个流程走基本上不会出大问题。如果有能力,这些流程是可以合并的。例如你运气很好找了一个“全干工程师”,文能写文档,武能编代码,那么恭喜你,产品开发周期会缩短很多:)