开发一个 app 有多难?
171 个回答
---------------------------------------------------------------------------------------------------------------------------------------
接触过上万名创业者,开发上线过超过30款App,没有比我更适合回答这个问题的了。。
本文对想做好一款App项目的人来说这是一篇价值百万的回答!因为这是我们花了几百万试错成本试出来的经验!
![](https://pic3.zhimg.com/80/4faf1e0fb5e903c8e14f955d5e248af2_hd.jpg)
在我们从事app开发行业以来每天都会收到大量客户的咨询。其中有创业者,公司的项目经理等等。前后2年左右的时间接触了上万名想做App的客户。发现80%的客户都容易犯一些致命的错误。
◆以为做个软件很简单,所以描述需求的时候及其模糊。
◆ 急着想要报价,在自己对需求不确定的时候就要报价。然后就按这个报价开始做。
◆不知道自己要什么,想做个商城说要做的是淘宝。
◆ 网站和手机App区别搞不清楚。要做手机App却说自己要做网站。
◆ 以为所有软件都有模板,而且模板都很便宜。
◆缺乏耐心,不明白也从未想过自己要做的东西有多复杂。
◆自己不知道要做的东西的具体功能,要靠开发商来猜。而且还这时候就要报价。
事实告诉我们,这些问题一定会导致以下结果。
◆ 项目做出来跟自己想的完全不一样。
◆根据一项国外的专业数据统计机构调查,在外包项目中,有52%的项目经理因为项目失控/失败而被迫离职/降职/开除。
◆ 项目上线的时候漏洞百出,反复修修补补解决不了问题。后面必须重做。(滴滴打车当年的外包就遇到了这种情况,找外包做的一塌糊涂。做出来没用过一次就直接报废重做)
◆ 误把自己都不确定需求时得到的不靠谱报价当做真实报价去开始做预算,导致后期资金预算跟不上继而导致项目失控/破产。
我们经常遇到客户第一次跟我们咨询的时候说,以前找的某某软件公司太坑爹。做的东西象一坨屎,仔细一问就发现。原来他自己在项目开工之前自己对自己的需求是完全不清楚和不确定的。就这样稀里糊涂就开工了,以为开发商会帮他完善剩余东西。实际这些客户告诉我遇到过的开发商没有一家会去帮他们中途完善。
原因很简单,需求想的越仔细开发成本越高。一般根据需求的细化程度,成本差出来几倍到几十倍都很正常。10万接的项目,真要扣细节100万的工资成本都不够。这也是一般客户们平时问报价的时候,不同的开发商报价会差出来这么多倍的原因。并不是仅仅是贵和便宜。根本原因是大家对需求的理解完全是不一样的。客户自己不清楚就没人会清楚了。
负责任的外包公司会仔细的问你需求细节,不负责任的外包公司上来就给你报价。
人总是有惰性的,一旦要想事情和要思考的时候都懒的思考。所以客户们一般反而会讨厌这种有耐心的会仔细问需求的开发商。反而喜欢这种什么都不问其实不知道你要做什么,但是先报个超低价吸引祝其入坑的开发商。最后带来的结果一般就是我们前面提到的那种情况,项目直接失败。或者中途被黑心开发商宰一把,中途狠狠加价(原来1万能做的功能中途要5万)。因为你已经选了他了,要么做到一半放弃,要么按他的继续加钱。大部分人都不想前面投入一半的预付款打水漂,而又不知道加这么一个功能到底会加多少钱。这时候已经没法再去选其他的开发商试了。所以会选择做下去。。。
我见过的最常见的例子,就是很多人上来就问做一个APP多少钱?或者问做一个简单的APP多少钱?或者说我要做个类似美团/淘宝/京东/滴滴打车。。。一样的APP多少钱?
![](https://pic4.zhimg.com/80/d347daf86ec6c41fdcb8320c4184f7dc_hd.jpg)
第一种:问做一个APP多少钱?
其实你问这个问题就好像你到4S店问,一辆车要多少钱?车有10万的家用轿车也有1000万的超跑。车根据用途(轿车,越野,跑车,赛车,公交也是车),配置,引擎,装置不一样,价格和成本是天差地别。同理,你来问APP也是一样的。必须表达清楚自己要的是什么样的APP,用于什么场景,APP解决什么问题,怎么解决(具体需要哪些功能)。就来问价格,不亚于你去问汽车4S店,我就是要一辆车,你告诉我价格就行了。别人肯定会拿你当傻子。因为你踏马没告诉人家你到底要什么车啊魂淡!!!
如果你只问我做一个APP多少钱? 我只能告诉你,几百块到几个亿,都有可能。
第二种:我要做一个简单的APP,多少钱?
每个人对简单的定义是不一样的。你说的简单具体是简单到什么程度,你又具体是要做什么东西的,很多人觉得微信也挺简单的。。。建议你每次问的时候都说清楚具体功能。
![](https://pic3.zhimg.com/80/b3c50123241d9702cd0f837fb5da2782_hd.jpg)
第三种:我要做个类似美团/淘宝/京东/滴滴打车。。。一样的APP多少钱?
一般这么问的创业者有个特点,很多说不清楚自己要的是什么。可能只是看中了比如滴滴打车的地图功能,但是描述的时候说的是跟滴滴打车类似。而滴滴打车的地图功能本身实际只占了滴滴整个软件系统功能的百分之一都不到。同理,有的是看中了美团的团购部分,说自己要做的是美团。有的看到京东有在线支付,就说自己要的是京东。如果你直接这么问,我其实完全不明白你想要的是你举得例子里面的具体什么功能。因为不可能完全仿一个美团/淘宝/京东/滴滴打车。。。
为什么不能是完全仿做?你看到的貌似简单的美团/淘宝/京东/滴滴打车/微信......这样的APP,每个的软件研发成本都是过千万,乃至几亿的(特别是复杂的后台)。因为这些大公司APP的细节的复杂程度和后台的复杂程度超乎你的想象。现在所谓的很多软件仿京东,微信之类的,网上说能给你开发微信京东之类的公司,可以说真正能做的功能不到微信京东的百分之一。举几个具体的例子。比如就说最基本的注册登录,可能就分为邮箱注册登录,微信授权登录,QQ授权登录,微博授权登录,短信验证码注册登录,密码找回又分为邮箱找回和短信找回。这里就罗列了7种情况,你做一种还是做7种开发成本可能就差了7倍或者更高。
又比如搜索功能,最简单的搜索功能可能开发一下就是几个小时的事情,但是这种搜索可能在几千个,几万个商品数据的时候还能正常运行。但是如果商品数据有几百万条,这时候肯定会崩溃。而不仅仅是商品数据会起到影响,比如你搜索功能是支持模糊搜索(即输入的关键词可以有偏差)还是精准搜索。模糊搜索能模糊到什么程度,讲究都是很大的。淘宝京东这样大平台的搜索功能,很多大公司光一个搜索功能就是需要十几个人的开发小组常年去进行开发和优化,养这些人的成本一年就是几百万上千万。你现在就可以打开淘宝的搜索功能仔细看看它有多少细节(高级搜索,地域,价位筛选,搜索结果排序等等等等)。感兴趣的可以自己去查查这些上市公司的财报。每个季度在软件开发上的成本都是几千万到几个亿不等。大公司一定是招自己有需要的人,如果不需要肯定不会招这么多人。由于篇幅有限,更详细的原因和要注意的地方不做详述。
这里贴上滴滴打车的招聘广告,感兴趣的可以看看滴滴打车背后的技术团队有多少人。
仅3月份在招的技术职位就多大上百个。平均年薪都在20到40万之间。
现在诸位能理解为什么很怕这些问题了吗? 因为创业者的确是明明确确的告诉我,要做一个淘宝/京东/滴滴打车类似的APP,但是这种APP的成本是天文数字。你可能要的只是其中一部分功能,或者只是想模仿他的运营模式。
![](https://pic4.zhimg.com/80/8106c44936be6fa05ca2aa6a7a58df17_hd.jpg)
有些人可能会觉得,这是大公司所以才需要。我创业初期需要考虑的这么细吗?很明确的告诉你,非常需要。
等到错误发生了你再去解决,所要付出的成本是非常巨大或者会直接导致失败。
大公司不仅仅是因为他是大公司才做得细,是因为他做得细才能成为大公司。
而且你不考虑没人会替你考虑。不要寄希望于你在网上找的这些软件公司,他们只会告诉你这件事很简单,你快来吧,来了就能发大财,互联网人傻钱多。你不说清楚自己的APP具体需要的是哪些功能,最后吃亏的一定是你自己。因为你在不清楚自己要做的东西具体是什么样子的时候,你找的软件公司就更加不知道。
你寄希望于他们给你去思考细节,他们只会给你偷换概念,偷工减料。因为这样做就可以给你的报价更低增加你选他的概率。
![](https://pic4.zhimg.com/80/d488293474901a731de34ca428b849c9_hd.jpg)
之前有个真实的例子,一个客户跟个不负责任的开发商只说了有注册登录,而没和他说过要做找回密码,开发商也没有提醒他。而最后软件就是没有找回密码的。如果各位看官不想自己也遇到这样的情况而被坑,就请想清楚自己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的模板比较多。而且模板有成熟不成熟的区别,真正成熟的模板开发成本和时间是巨大的,一个公司不可能同时有很多好的模板。因为数量多,必定不精。开发一个好的模板的成本已经巨大了,同时还搞多个,则说明每个模板上投入的成本和精力不会太多。
3月30日更新几个app外包开发常见的几个坑。
----------------------------------------------------------------------------------------------------------------------------------
常见坑一:
客户问外包公司你们有什么知名案例吗? 外包公司说有啊,美团,大众点评,携程,一号店(说出一个一二线,或者是三线有一定知名度app的例子)是我们做的/是我们的案例。
这种情况下90%是偷换概念或者纯骗。不管你找的这家公司是真有几百个人的大公司还是只有几个人的小公司。
客户喜欢听大案例,这样放心。但是在互联网技术领域,大公司的互联网产品是不可能外包给别人做的。
实际情况是,任何你但凡听说过小有名气的App,基本都是互联网公司自己招人做的 不太可能是找外包。你可以在百度搜索任何一家你听说过的app名字或者互联网公司名字+招聘2个字,都能看到他们长期在招聘大量的程序员工程师,同时公司长期备有几十到几百,甚至上千人的技术团队。
即使真的找外包,可能是最早创业初期的第一期找的外包,但是他们后来出名的那个系统跟最初找外包做的,已经完全不是一回事了不是一个东西了,业务代码已经完全不一样 。
外包做的东西就是前期低成本试错的一个东西,很可能一次都没用过就直接报废。滴滴打车之前最早就是找的外包开发的,但是基本没正式用过就直接报废了自己招人重新做。但是这家外包公司可能在N年后滴滴打车牛逼了后会跳出来跟客户说:滴滴打车是我客户案例,滴滴打车是我做的。利用的就是偷换概念和客户不懂不会较真。滴滴打车当前找他们做并不是因为他们牛逼,而是滴滴打车可能也被他们坑了。
还有的是,有些外包公司在这个很出名的App公司团队初创的时候,跟这个团队的创始人吹过牛逼,也只是吹过一点牛逼而已,可能并没有实际合作项目。然后这个外包公司N年后发现当年一起吹过牛逼的那小伙做成功了,这时候他跳出来说 XX是我客户,XXApp是我们客户案例。。
还有一种情况就是, 比如很大的互联网公司,比如携程或者大众点评或者一号店,他们平时开发的时候也会有忙不过来的时候 ,偶尔会找些外包公司进行一部分的人员外包,要几个技术员过来帮忙干几个月临时的杂活。一般都是打杂接触点边缘化的没有技术含量的东西,根本接触不到核心部分业务代码。 但是这时候外包公司又会说,大众点评是我们做的。都是偷换概念,显得自己牛逼。
还有的就是一点关系也扯不上, 强行欺骗来增强客户信任。揭穿了就算了。
其实你可以做个简单的实验,你在百度或者其他任何平台公司找app外包开发公司的时候,会遇到N家官网上有大众点评,或者在家点点,携程,美团之类的app是他的客户案例的,或者是他们的业务人员亲口跟你吹这样的牛逼。
其实这些被合作的互联网公司并不知道自己被合作了,以前有个梗是说吃了一次肯德基就是肯德基的战略合作伙伴了,加了一次油就是中石化的战略合作伙伴了。 而在app外包领域里真的这么干的公司非常多,不说小的,甚至大量已经上市的外包公司也吹这样的牛逼。偷换概念乐此不疲。
常见坑二:
外包公司给你的合同一定要仔细看,很多时候被骗的客户自己公司是有法务的但是也一样被骗。因为你的法务和律师根本看不懂那些看似专业的技术词语。所以并不知道他是在扯淡还是合理的。由其是在验收标准和开发要求的这几大块上。基本如果甲方公司没有懂技术的,哪怕有专业的法务也太容易被骗。
一般体现在合同里对需求描述的不详细或者压根合同里就没有提到需求,只说要做个某某app,多少钱什么时候交付。 这样的合同其实压根没有一点卵用,你们之间商量的做个某某app只有你们自己口头讨论了需求,但是如果没非常详细的落实在合同里,最后外包公司随便给你个东西也能交付。甚至压根就不是最早你们商量的,因为合同里并没有证据能证明你们要做的到底是什么。
同样的还有开发方式(原生还是混编,H5还是加壳),验收的标准是什么这些如果不提,每一次都是提前被埋下的炸弹,遇到骗子你去法院都白瞎。根本就告不倒人家,就是合法的骗。
一般负责任的公司在合同里都会非常详细的给到一个很长的需求文档,根据项目的大小起码有几十页,里面有各自原型图和需求说明。用到的技术,项目架构,开发方式等等都讲的非常清楚。
这个文档是合同非常重要的附件,里面详细的描述了你们这次项目具体是要做成什么样子。如果没有这个,双方签完合同的时候其实都是蒙逼的。要做什么根本没个界定,到时候胡乱拿个东西交差也是不违反合同的。
这个看似常识的东西其实大部分外行都不知道,我每年都至少见到几十起外包开发被骗是被坑在这个地方的。
甲方如果不重视这个,哪怕被人骗了告到哪去都没用。 因为别人没违反合同。你们的合同压根就是一张废纸。
暂时就更新这么多,app外包坑非常非常深。最好的方式就是甲方自己公司有个懂技术的能参与进来选择开发商和逐步交接。以后有时间在慢慢更新,希望能帮到真正想创业的人。
-----------------------------------------------------------------------------------------------------------------------------------
最近很多朋友问我是否做开发,如果项目开发需求的可以直接私信我或者加我微信。专精O2O电商和智能物联网方向。
可以加我微信1293190838交流。
你说要一个会的人去开发app,能难吗?不难!一点都不难!
记住:要钱有钱,要人有人,就不难。
开发一款app是需要一个团队去操做的。
由于工作性质(众包平台),我们帮助过近万名客户完成了近万个小程序、app、网站等项目的研发,还是能给予你们一点建议的。
1、需要经历那些流程?以及需要哪些人员进行开发?
互联网产品开发流程如下:
![](https://pic3.zhimg.com/80/v2-1a37a0173f3b8e53f98a68a909c95e8a_hd.jpg)
创业团队配置:
![](https://pic3.zhimg.com/80/v2-acefcc4d72d9faa5c16155066366db34_hd.jpg)
2、难点都在哪里?什么时候出现的?
- 俗话说的好,万事开头难。我想你一定有一个好的想法了,我们需要赶快行动起来,去将想法变成开发能看懂的语言。
这个阶段也称做需求梳理和原型设计了。这个阶段承上启下。
将自己的想法变成开发语言的阶段,这样才能使开发进入一个闭环。
要记住在这行,想法是不能直接实现的,可以直接实现的只能是需求。从想法到需求的一个需求梳理的过程也是真正了解自己想要做什么的过程。需求越完整细致确定,越便于开发~
一份清晰完整的需求梳理清单包括三样东西:项目需求说明文档、产品结构图、模块功能梳理清单
原型设计阶段需要我们画出产品的基本草图页面,其中包括:产品原型页面交互/产品功能说明文档
可参考示例
- 之后就进入开发和设计阶段了。
这个阶段应该注意的一点是比如注册域名、买服务器、备案、苹果开发者账号、安卓开发者账号、短信服务等等。在确定开发后就可以准备这些东西了。不然中途会影响开发工期,影响上线时间,比如网站备案都得1个多月!
- 接下来说一说团队的问题,你没有一个可靠又有能力的团队,自己是决不可能完成一个互联网产品从0到1的,当然抛却非创业想法的。
组建团队其实是一个难点也是每个创业老板的痛点。抛开人力、时间、等成本不说,我们这里直接给出一条快速通道。
在创业做产品这条路上,需要快速试错,需要快速接受市场的检验。而普通的招人、找办公场地等等都是高成本的一种做法。
性价比最高的就是利用众包,寻找各个领域的对口人才,知道木桶理论吗?我们需要能力都在8/9的人去做,也好过一个能力10其余6。技术众包就是这样一个为自身提升竞争力的方式。足够为你在开发app的路上助力。
相较于传统的雇员,众包下的开发团队更专注一个项目,不仅节约成本还能加快开发进度,肯定不会出现像题主说的那个健身房的项目一样好几个月还没动静。
我们平台也是做这块服务的。
程序员客栈-程序员的经纪人|领先的中高端程序员远程自由工作平台-程序员客栈很多人不清楚是怎么运作的,这里可以说明一下:
我们通过客户发的一个项目需求,为其推荐对口的开发者,来自各个地区专业BAT级别的项目经理、产品经理、设计、前端、后端和测试组建的一个开发团队,在3个月左右的时间,实现从0到1的产品。因为成员都是远程工作,有兼职和全职远程,费用比自己招团队实在便宜多了。平均资费节省一半还多。
3、需要多少钱多少时间?
费用是依据你的需求文档中的模块功能梳理清单进行判断的。
你的模块越多,功能点越详细,费用就越高。因为开发是依据此开发的。所以记住没提的需求是不会开发的。后期增加需求也是看影不影响其他功能模块的。当然模块功能点越多,所需开发时间和费用也不一。
还是要个参考的话,就看看这里的吧
成功案例-程序员客栈这个阶段,因为是开发初期,并没有盈利,所以建议做产品应该做小而精,做最核心的功能,你看就算是再牛逼的应用也会一个版本一个版本的提升呢。
不要想着说我要做一个美团,做一个淘宝。
慢慢来~
再说一次,开发app不难的:有钱有人,就不难。找人的事,交给我们吧~
质量效率不减,费用大降~
今天看了这个题目,真的非常非常非常有感触,因为我自己就是在软件开发外包公司工作,目前为止也已经工作了将近8年的时间,期间遇见各种各样的问题,下面来说说我的经历。为了让大家看的更明白,我将会按照题主的几个问题逐个回答(我想说的太多了,我想几天时间内肯定是回答不完的,所以我决定有时间的时候就来更新一点,咱们慢慢聊)。
题主的第一个问题:开发一个APP有多难?
回答如下:作为一个从业近8年的APP开发人员来说,做个app本身不难,难就难在前期客户方和外包方的沟通和对于需求的梳理和把控,个人觉得只要前期的功能点梳理清楚了,加上这家公司不是个坑壁公司(找个靠谱公司),那么做好一个APP的成功率就已经上升到了90%的可能性。
这个问题里面,我将会拆分进行回答两个问题“如何沟通好需求”和“如何找到靠谱的公司”。那么作为将要做一个app软件的你如何和外包公司沟通好需求呢?我觉得这个是你和外包公司双方的事情,如果你全部指望外包公司替你想到,这个是不可能的事情,其实需求也很好把控,只要说清楚就行,举个栗子来说,比如你要做一个商城,就算你不懂技术,你自己也可以看看其他人的商城是怎么做的,比如你的商城规划是有登陆功能,登陆功能采用那么方式来做(比如常见的登陆功能有联合登陆(微信登陆、微博登陆、QQ登陆)、还有输入用户名密码登录、还有手机号码登陆),你必须想好有哪些登陆方式,因为一般定制开发的项目,你说了外包公司才会做,你不说一般都是不会做进去的,同样的,你说的越细致后期的问题会越少,同样费用也会越多,因为外包公司的价格的评定标准就是根据你的功能来计算的,具体如何计算的,我后面再和你们说。
我在来回答这个问题里面的第二个小问题“如何找到靠谱的公司”。其实我对我的客户一贯的说法就是“一看二查三聊”,这个怎么说呢,所谓“一看”就是你一定不要怕麻烦,既然想做好APP,那么不管你选择的公司在哪个城市,你自己一定要亲自的过去看看这家公司,看看他们到底有多少人,有几个办公室,有几个做技术的,有几个做销售的 ,有几个做运营的。大部分只要你过去看看,你自己心里就有个底了,不是说所有的大公司都靠谱,但是大部分的大公司都会比小的团队会更加的有保障,出了问题他们基本都会给你解决,因为比起开发商的损失来说,开发商的信誉是他们更加看重的东西。“二查”就是从网络上面各种渠道去查查这家公司,看看整个网络媒体对于这家公司的侧面评价如何。“三聊”,这个就比较重要了,多和你的目标的外包公司对接人员聊聊,当你聊了几家外包公司的对接人员之后,你基本上就能感受到他们专业程度的差距了,从中选择一个你认为比较专业的公司即可。
那么说了这么多,你们知道了,开发一个APP真的不难,你只需要做好我上面说的2点,把握好需求和找到一家靠谱的外包公司,即可。是不是很简单? 那么就这样完了吗?项目就能做好就能做成功?当然不是,我还么有说完,今天事情太多了,一会还有一个客户从南京做高铁来我们公司验收他的app开发项目,我是项目负责人,得准备准备了,现在不和你们扯了,有时间再聊。写于2018年1月26日下午五点半。
今天下午事情不是很多,快过年了,过年的年味也越来越浓了,咨询的客户少了,原来着急上线的客户也不着急了,都各自忙各自的了,我也难得清闲,可以好好整理下思绪回答下题主的第二个问题“开发APP需要经历哪些流程”。
第一步:)需求方(也就是你自己),确定了自己的立项之后,一定要多看看竞品公司的app产品,看看他们是怎么做的,有哪些流程,细节做的怎么样,先做到自己的心中大楷有个数,然后再去网上找对应的app开发的外包公司,至于怎么找这个app开发公司,在我1月26号下午的回答中已经说过了。这个环节我姑且称它为“找公司”。
第二步:找到中意的app开发公司之后就和他们开始洽谈项目的细节(在我1月26号下午的回答中也已经说过了),并且一定要把这些细节明确到合同里面,因为如果你的项目是独立无二的,是需要这家app开发公司独立定制和开发的,那么你的需求一定要明确在合同里面,因为软件开发公司最终也只会按照这些合同约定的功能和条款来制作。也一定要明确每个功能的实现方式方法,同一种功能有很多不同的实现方法,就像我文章开头所说过的那样,同为登录,却有用户名密码登录、第三方联合登陆、手机号码登陆等几种不同的方式。如果这些方式开始没有明确,最后外包商又没有做,那肯定就是双方扯皮的事情,下面有张图是我们之前为其他客户做的一个需求分析的原型图,可能和你要做的APP不一样,但是大部分都是这个逻辑,发上来仅供参考。这个环节我姑且称它为“细需求”。
![](https://pic2.zhimg.com/80/v2-fe099cd188c8ff42ba8912b54edaeee6_hd.jpg)
第三步:需求也确定好了,那自然就是合同了,合同也是要注意的事情,有几个点,我认为作为客户的你应该需要知道。
需要注意的A点:如果你的项目案值高于5万元,那么预付款不能高于60%,应该实行分阶段付款,建议的分阶段付款应该为合同签订支付30%,效果图全部确认之后支付30%,安卓端完成测试上线支付20%,苹果端完成测试上线支付20%。
需要注意的B点:就是软件所有权的问题,大部分正规的软件开发公司在合同中都会明确的表达该软件的知识产权是属于他们所有的,如果你作为需求方,你的软件开发完成还需要申请软著等等一系列其他的内容,那么我建议你还是和软件公司协商一下,争取把软件所有权或者知识产权谈成你们双方共同所有。当然你也可以谈成归属你自己所有,但是据我所知,如果这个项目开发完只归属你自己所有,那么你将会付出较多的代价(主要是金钱上面的代价)
需要注意的C点:此项目各阶段双方约定的交付时间以及截点,以及当前截点下双方各自的权利和义务,这个也一定要约束清楚,也是在后期双方责任不明容易出现问题的地方。
需要注意的D点:之前你和外包公司沟通确定的需求文档一定要做为合同的附件添加在合同里面。后期最容易扯皮的就是需求问题了。
这个环节我姑且称它为“定合同”。
第四步:接下来你只需要在不同的环节及时督促外包公司按照合同的约定交付当前应该交付的内容,并且对这个交付给你的内容进行审核即可。
第五步:项目验收
OK,以上五步就是开发一个APP大楷需要经历的流程,不管你是谁,你找哪家外包公司给你做合作,都摆脱不了我上述所说的五大步骤。
未完待续,后续有时间的时候我会继续分享题主提出的其他几个问题。(本段写于2018年1月29月下午)
各位新年好,咱们又见面啦,过年期间不是吃饭就是打牌确实好无聊,我也就趁着这个无聊的时间把题主的第三个问题好好的想了想,现在我将要回答题主的第三个问题:“难点都在哪里?在哪出现的?”,其实从我这么多年的经验来说,在软件开发中,假设双方都是靠谱的人和靠谱的公司,那么这个项目是肯定会做好的,也会完美完工的。难点出现在哪里,大部分的难点都出现在外包公司的不负责任和需求方对需求的不理解上面 在我回答这个问题的时候,我想了很多天,应该怎么回答,现在我觉得,如果我以需求方的角度来回答这个问题可能会更好,你们也更加的容易理解(虽然我所在的这家公司做开发已经做了很多年,但是有时仍然也会需要把部分项目做外包,或者项目中的某个技术点做外包,人无完人,公司的技术也是一样,不可能有公司是全能,什么都会,所以这是正常的)。
失败的外包案例一:
1:项目名称:XXXAPP开发双版本
2:项目案值:10万左右
3:项目时间:2017年9月份
4:外包方公司名称:重庆诺XXX科技有限公司
5:大体经过:这家公司我们之前去实地考察过,也有几十个人,只不过注册时间很短(2017年1月份注册,事后证明当时没有考虑这个重要因素确实太大意了!愧疚中···),这次合作的是一款游戏的全新定制开发,上面我也说过,定制开发需要根据需求方的要求从原型图开始,再做UI效果图,给需求方确认之后再开始程序。但是可惜的是这家公司对我们纯忽悠,直接从淘宝上面买了一款类似的游戏源码,在他们的服务器上面安装好之后直接手机截屏了几张图片发给我们,说这是他们单独为我们量身设计的,并且不予修改,在我们多次要求修改的情况下,直接失联(不接电话、不回信息、不给任何回复···)。然后就没有下文了,后来才知道这家公司就是专门骗首付款的。(这个案例可以说是我们最失败最最屈辱的案例,明摆着被人抢了,如果你们也碰到这样的公司,那真的是只能自认倒霉了,我写再多的经验对于这样的公司来说也是无计可施···)
6:得出的经验教训
一定要看外包公司的注册年限,一般注册在5年以上并且你也实地考察过的公司不会太差。
失败的外包案例二:
1:项目名称:XXX功能的A商城系统
2:项目案值:3000元左右
3:项目时间:2012年5月份
4:外包方公司名称:未知
5:大体经过:曾经有过一次,在某宝上面买过一套APP商城的源码,因为当时看了店家的介绍,感觉很不错,很牛的样子,而且价格非常的便宜(现在看来那时候还是年轻啊,事实证明便宜没有好货··· ),于是就很开心的和店家达成了交易并且支付了费用,当代码安装到我自己的服务器之后并且结合后台进行使用的时候我懵B了,总共居然有307个BUG····,你知道这意味着什么吗?意味着这套源码是垃圾中的战斗机,根本无法使用···
后续和店家进行协商,刚开始还积极协助修改,当改了三天之后慢慢的就不行了,到最后就皮掉了,也不理我们了,当然项目肯定是失败了。
6:得出的经验教训
A:你一定要相信“好货不便宜便宜没好货”的道理
B:在某宝购买软件类的源码如果金额过高,还是建议你去对方公司进行实地考察,并且在现场对代码进行审核。
失败的外包案例三:
1:项目名称:某某APP的某个功能的人力资源外包
2:项目案值:3万元左右
3:项目时间:2014年
4:外包方公司名称:非公司,是个人
5:大体经过:当时我所在的软件外包开发公司技术部排单太满,有个项目客户非常着急的要求我们提前2周上线,完全打乱了之前的开发节奏,公司没有办法的情况下,只得将此项目中的某个功能进行人力资源的外包,当时找的是一个在其他软件开发公司任职程序员的童某某,也和对方洽谈好了外包的金额和功能点。刚开始这个小伙还行,随着项目的不断深入,问题越来越多,主要问题是:
A他的时间和我们对接不上,我们白天上班就要对接,他白天要在公司工作,不能做私单,只能晚上对接,晚上对接了又不能搞到太晚,他第二天还要上班。
B要求他使用我们公司的架构和技术框架,但是由于他不熟悉,导致前期对接花费了很多的时间,并且增加了很多的沟通成本
C由于不在一起办公,无法做任何的约束,对他全凭信任,他干事当然也全凭心情了。
最终这次外包也是失败了,我们公司当时只得还是自己做开发,经过和其他客户的协商,抽调了一部分开发人员加急开发,也算是如期如质的在交付了项目
6:得出的经验教训
A:和个人合作真的要谨慎,除非你对他非常的了解。
B:和个人合作一定要找好自己的备选方案,万一项目失败你该怎么做?如何及时调整开发策略。
以上,是我所经历的失败案例,希望对你能够从我的失败中总结出来经验教训,哈哈。(本段写于2018年2月22日)
其他说明:
(虽然,对于这个问题的回答还没有结束,但是最近也收到了不少乎友的共鸣,很多人给我私信,问什么的都有,由于工作比较忙,我很多没有回复,在这里我做个统一的说明,我本人从事APP开发也已经8年有余,如果你们想做app开发开发或者在app开发的过程中有任何的问题都可以私信给我,目前以下几类问题的私信我会回复你们。
1:自己想做个app的开发,但是不知道该如何下手,不知道如何规划,你可以找我。
2:在学习app开发的过程中遇到了无法解决的问题,你可以把详细情况描述一下,给我私信,我有时间的时候会回复你。
3:找软件外包公司在做app开发的过程中碰到了难以解决的问题,可以找我,我可以给你对应的解决方案。)
(本段写于2018年2月26日)
今天下午事情不是很多,突然想起知乎上面还有这个回答了一半的问题等着我来回答,下午我们就来聊聊题主的“需要哪些人员进行开发?”。
A、APP开发-产品经理,负责分析需求,提需求,整理需求文档,提出低保真设计原型,并协调以下几类人。 专门负责产品管理的职位,负责调查并根据目标用户群的需求,确定开发何种APP,选择何种技术、商业模式等。并推动相应产品的开发组织;还要根据产品的生命周期,协调研发、营销、运营等,确定和组织实施相应的产品策略,以及其他一系列相关的产品管理活动。
B、APP开发-UI组,可分为平面设计和交互设计,负责对产品经理提出的需求设计app高保真原型,设计web页面,或者海报。
UI用户设计基础(UI行业发展及UI设计师职业规划,美术基础,平面设计基础,图形与创意设计,网页设计基础,交互式网站),软件:Photoshop、Illustrator
移动界面设计(图标创意思路与方法,图标的创作设计,主题图标设计,Ios系统Android系统Windows phone系统,UI设计实训课程)
交互类(UCD,交互设计高级技术)
流程设计(界面开发对接,流程管理,移动媒体综合开发实训)
综合项目实训及就业阶段(根据所学内容,选择一种移动平台(IOS/Android/Winphone),软件界面,WUI类型设计,完成初稿设计。
C、APP开发-后端开发人员,接管服务器数据,维护服务器性能,为app前端人员提供接口。 下面我们通过两个场景来说明下app后端的作用:
场景一:
用户a平时是很喜欢用qq音乐app听歌,他的qq音乐app保存了他平时最喜欢听的歌曲列表。
如果歌曲列表只保存在手机上,万一,他的手机被盗了,就算他买了台新的手机回来,那歌曲列表也会丢失的啊?
为了解决这个问题,其中一个办法就是qq音乐app可以把歌曲列表放在远处的一台机器上,当用户a买了新手机后,把放在远处的机器上歌曲列表重新搬回到qq音乐app就行了。
场景二:
相信很多有都人寄快递的经历吧。
假设有两个人a和b,当a向b寄一样东西的时候,会叫来快递,把东西寄给b。
当查看物流时,可以看到类似这样的描述“到达xx中转站”。只有经过中转站,东西才会到达b的手上。
在app上的情况也差不多。假设app上的a用户需要向b用户发信息,这条信息也需要经过app后端这个中转站,才能到达b用户处。
总结: 从以上的场景1和场景2,可总结出app后端的两个重要作用:
1). 远程存储数据
2). 消息中转
D、APP开发-前端开发人员,这里分web和app,app分安卓和ios,web的前端也分后台系统和前台系统等,大型公司还有isv和osp。
把UI的设计图按照w3c标准做成html页面,并且用javascript脚本语言实现页面上的前端互动。互动效果包括,弹出层,页签切换,图片滚动,ajax异步互动等。
高级前端工程师还要承担前端优化的工作,优化的知识就会更多一些,比如文件过期Expires,缓存,异步缓存,js和css以及图片的压缩等。
前端开发是一项很特殊的工作,前端工程师的工作说得轻松,看似轻巧,但做起来绝对不是那么的简单。在开发过程中涵盖的东西非常宽广,既要从技术的角度来思 考界面的实现,规避技术的死角,又要从用户的角度来思考,怎样才能更好地接受技术呈现的枯燥的数据,更好的呈现信息。简单地说,它的主要职能就将网站的数 据和用户的接受更好地结合在一起,为用户呈现一个友好的数据界面。
E、APP开发-运营团队人员。
初级运营每天做什么?
对于一个刚入门初涉运营的人来讲,所有的脏活、累活,完全不用怀疑,确定、一定、以及肯定都会是你的。 编辑几篇伪原创的文章,开着官微到新浪和腾讯转转微博,每天收集信息准时发布公众号,遇到公司哪个部门出了稿件,你还要注册一堆ID发稿子,若不是这几年玩BBS、贴吧的人比较少,让你捡到了个便宜,如若回到那几年,哪个运营专员不是牛逼轰轰的在主流论坛开着几个大号ID?这叫啥?水军号!
那么中级运营呢? 其实搞运营就和玩游戏一样,入了门到了一定级别就要开始分门派了,当然这是大公司干的事,初创公司、小团队是没有这个门派之分的,吃喝拉撒都要跑,所以我这里还是要根据一定规模的团队来进行分工的。 运营团队大概分成了三大门派:
1)、内容(社区)运营 这个应该是大家见的最多的,微博写段子、论坛回帖子、公众号写文章、做医疗的经常要去发百度知道的贴,当然现在的“互联网公司”还有个新任务,就是到知乎答问题!不管对不对,反正要说的有理有据,让看到的人能够感同身受,觉得好像很有道理的样子,默默地帮助你传播那就对了! 相比初级运营做的事情,内容运营负责人要对结果负责,也就是你不但要制造内容,还要让别人帮你扩散并且传播你的内容,这里对内容运营人的文字功底还是有很高的要求的。所以之前我在的招聘里写过这样一个标准“资深吐槽帝,趣味屌丝男,出口成章,七步成诗,有超前的临时工精神。”
2)、产品(用户)运营 之前有好几个小伙伴搞不清产品运营,在大的定义里,产品运营的本质其实是围绕用户,你会经常看到招聘产品运营的介绍上有着这样一句话“负责XX网站/社区/应用/软件等产品的运营策略制定,提升产品用户基数。”其实就是对产品或用户运营的最佳释义。
你不但要充当在线客服一马当先的在一线整理需求,还要到社区反馈论坛、QQ群内与用户建立互动,了解用户需求,对产品团队进行反馈,你是一个桥,如果你的公司没有“用研”这个岗位,那么你就要干他一切该干的活!分析数据?用户增长值?这都是你该总结并且策划的事儿,当然有的时候你还要充当制造事件的PR。
最苦逼的就是做WEB2.0内容类的产品运营,尤其是产品早期,很多时候你不但要做为一个管理员去回答用户的问题,你还要反过来看着小号给自己问问题,建立X个ID在BBS里优雅的和自己的官方ID聊天,自问自答,想想都觉得醉了。
当然你一定要注意好自己的身份,别搞的官微问问题,用户来答,这不是开玩笑。
3)、市场(商务)运营
这个其实是最好解释的,平时的工作很多都是要靠庞大的人脉积累来完成的。这里的工作无非是两种,要么赤果果的做个销售,优雅的靠近客户在客户面前打广告、卖产品;要么就优雅的从合作共赢品牌曝光出发,与合作伙伴互换资源,与边缘产品建立合作进行产品对接用户共享,这里最初级的可能工作就是换友链,网站友链是两个产品公司一切友好的开端。
市场运营其实是很练嘴皮子的,你要谈客户、你要讲沙龙、你要不断的告诉别人你的产品,从大的方向来讲很多公司的销售都可以放到市场运营里来归类,你要建立很多渠道关系、广告联盟、行业会议、商业圈子,这些都将是你将来发展的舞台。
高级运营做什么?
高级运营一般都是运营总监级别的了,主要的工作就是调配公司整体资源,制定全盘布局规划,建立完整运营方案、规划,引入资源,最终交给初级、中级运营人手里,监督他们把事情落地,你所做的一切只为了一件事,对产品及品牌的结果负责!
(未完待续···)
开发 app 一点也不难啊。
然而当你搞定了所有开发,把 app 提交到 App Store,被苹果拒绝个三次五次之后,终于上线了。
然后你就开始看着零星的下载情况了,一个不知名的 app 每天下载通常就十几个吧。
一年之后你的收入是约等于 -688 人民币,生活真难。
我做开发的第一年基本就这个情况,难得是我只把这个事情当成兴趣爱好,坚持做了下来。
小历在初期很长的一段时间基本没有收入,以至于很久之后我才知道 App Store 的付款策略:
每个月给你付款一次,如果没有满 150 美元就顺延到下个月。
目前总算是一个不错的开始了,付费应用能赚点零花钱(每个月大概 3k ~ 4k),免费应用下载量 50w(两个加起来哈哈哈)。
值得骄傲的是 Pin 和小历都被 App Store 推荐过多次,这比直接收入要更开心。
难的不是写一个程序,或者上线一个 app。难得是创造一个还过得去的产品,这个产品能给你带来能力上的增长。
![](https://pic1.zhimg.com/80/v2-b93471711f3002b7c57f4214fa51742a_hd.jpg)
软件开发的流程前面已经很多位答主答过了,不再赘述。
以目前的技术水平,基本上只要不是太黑科技的软件,开发都不是问题。软件开发主要的难点不是在技术上,更多的是在流程监管上。
在这里我想聊一聊一个容易被非开发从业者忽视的角色:项目经理。
项目经理( Project Manager ) ,从职业角度,是指企业建立以项目经理责任制为核心,对项目实行质量、安全、进度、成本管理的责任保证体系和全面提高项目管理水平设立的重要管理岗位。它要负责处理所有事务性质的工作。也可称为“执行制作人”(Excutive Producer)。项目经理是为项目的成功策划和执行负总责的人。项目经理是项目团队的领导者,项目经理首要职责是在预算范围内按时优质地领导项目小组完成全部项目工作内容,并使客户满意。为此项目经理必须在一系列的项目计划、组织和控制活动中做好领导工作,从而实现项目目标。
在软件开发中,项目经理在每个阶段评估风险,调配资源,降低项目延期的可能性,保证项目如期进行。
1、idea 阶段
自主开发软件不论时间还是金钱上的成本都很高,那么为什么客户愿意花那么大的成本来开发一个软件呢?
比如,客户想要开发一个电商网站,如果他想卖产品为话,什么不直接用淘宝卖商品呢?如果他想做一个平台那么和现有的电商平台又有什么区别呢?究竟客户有什么样的需求是现有的工具和产品无法满足的?
项目经理需要与客户沟通需求,明确客户的真实意图和业务初衷。因为客户不懂开发,那么他有时想到的解决方案不一定是最好的解决方案。
我们之前有个客户,被程序员朋友「蛊惑」一定要用某种特别新潮且小众的框架来进行开发,号称可以大大缩短开发周期降低开发成本。
程序员们总对新技术有迷之执念,但那个框架全中国用过的人就没多少,更别说熟练使用的了。基本没有现成造好的轮子,你要拿它来实现一个过去没人用它实现过的功能,坑不知道有多少。由于小众,它的生产和维护成本会很高,说不定前面的人离职了都没人接的下来。项目经理好说歹说总算换了选型。
2、产品阶段
大部分产品经理是没有技术背景的,所以尤其是做一些开发团队没有做过但是设想上是可以实现的业务时,产品经理无法衡量研发和测试成本。
所谓的「需求讨论(撕逼)会」就是项目经理组织产品、研发、UI、测试过产品方案,大家一起评估每个阶段所需要的周期和成本(然后一起手撕产品经理让他砍需求)。
在外包开发时,产品经理需求梳理好后,由项目经理来评估研发成本,一般这个阶段才能给出软件开发的准确报价。如果需求方觉得价格无法接受,则项目经理会协调砍需求、延工期、加预算。
时间、资源和交付质量三者可以看成一个三角形,不管是时间还是资源上的短缺都会造成质量下滑。所以如果时间紧,就加预算,如果预算吃紧,就延时间,才能保证交付质量。如果中途改需求,既不愿意加钱也不愿意延工期的话,那开发者就只能偷工减料了。
其实在软件开发中最重要的是你最后拿到的产品的质量,但是可惜的是,在这个三角形出现不稳定时,最早被牺牲就是质量。
3、UI & UX 阶段
软件开发是一个流水线式的作业,上游如果有任何纰漏时,下游就会花 200 倍的代价来修复这个错误。
每个阶段都需要项目经理严格把控,进行风险管理。UI、UX 一般也不太懂技术,当他们要做一些炫酷的效果时,可能就会大大增加研发成本。这也是项目经理需要把控的。
4、研发阶段
用户在使用软件的过程中,有时会有一些异常情况。比如,填写表单时,用户未填写一些必填项会造成无法提交,那么这时候程序需要报错,告诉用户究竟是什么问题造成无法提交。
软件研发过程中,有时程序员会漏掉一些异常处理,有时代码质量也会出现一些问题,项目经理不需要是个技术大牛,但在开发过程中项目经理需要组织程序员 review 代码,检查错漏。
5、测试阶段
在这个阶段,项目经理需要审查测试用例,在出现 Bug 后做好 Bug 跟踪,与产品、开发一起评估 Bug 重要性和修复成本,决定是否在当前版本修复。
总之,项目经理需要在开发过程中统筹全局,最大程度的降低项目延期的风险,提高交付产品质量。
有一些软件外包/众包公司没有这个角色分工,不是这个角色不重要,而是这个角色需要甲方来承担罢了。先介绍下自己的背景情况,题主可以作下参考:
1.本科通信工程,非计算机科班,大一学过C语言基础,后来因为专业课程需要,学了一点汇编以及Matlab。这部分经历我认为对于我后来的编程学习只有基础语法理解方面的帮助。
2.去年11月中开始系统学习编程语言,由于想做Android开发,所以入门语言选择了Java。
3.11月中到12月中,边看传智播客的一套视频边敲里面的练习。
4.12月中到1月中,20天左右时间看了《编程之美》,并用Java实现书里百分之五十左右的算法题,剩下的题由于难度太大 或者比较复杂,当时没有深入研究下去。
5.1月中到2月中,选择了网易公开课里面的《斯坦福大学公开课—编程方法学》这套视频,同样是边看视频,边完成里面的Assignment。在这里感谢帅帅同学@王帅 推荐这套视频。里面的Assignment题都是经典题目,对于初学者来说非常适合。
6.2月底开始学习Android语言,花了1个月左右的时间,照着《第一行代码》里面的例子,敲代码进行实现。
由于在学习编程之前就有两个小产品的构思,所以也没有想自己基础是否打扎实了,先试着去实现,看看能不能做出个可用的产品来。截止到目前为止,两个小产品都已经开发完毕了,其中一个“苹果序列号查询”已经在小米、豌豆荚、Google Play、魅族Flyme等应用市场上线并且有了一版更新,本篇文章就结合这个应用和题主的问题来说下自己的想法,同时也当是此应用的一个开发总结。
-----------------------------------------
问题1:开发一个APP有多难?
这个与产品的复杂度有很大的关系,复杂度包括业务逻辑多不多,业务模块多不多等,对于玩票的爱好者或者初学者来说,一般会先选择功能比较少的产品来实现。我的第一个APP“苹果序列号查询”就属于这种功能很少,逻辑不复杂的应用,简要来说就是:
1.找一个API,根据序列号去请求查询数据,返回数据后进行解析呈现
2.另一个大功能就是记录查询历史
功能少,逻辑不复杂对于我来说有一个好处是:虽然心里还是没底能不能完成,但是至少自己思路一直很清晰,先完成什么事情,再去完成什么事情。
最终第一版做出来大概花了10天左右,程度是刚好能用,但是有好几个需要优化的功能,以及需要新添加一些功能。当时由于很想快点上线同时也看看有没有一些反馈,就把这个很糙的1.0版上线了。后来帅帅同学@王帅 提了好几点优化建议,再结合自己此前的想加的功能,也就是第2个版本的改进目标了。第2版开发大概花了5天左右,最终在5月18日上线(4月14日上线,到目前为止下载量已经超过1000)。现在,“苹果序列号查询”是这个样子的:
![](https://pic4.zhimg.com/80/97034139aceb2f5c022f66bccb8b44ce_hd.jpg)
![](https://pic3.zhimg.com/80/698a11271a72df5f2a9834dd6c55fc12_hd.jpg)
![](https://pic4.zhimg.com/80/ea05ccf0be5b75d779cbf63573cc7292_hd.jpg)
关于开发“苹果序列号查询”具体实现逻辑介绍,请移步(最近好像需要FQ):JeffinBao - Android开发,读书,见人,行事
问题2:需要经历哪些流程?
1.像我这样没有编程基础的,学习基础知识的过程肯定是必须的。我的学习过程在背景介绍里面已经描述过了。
2.有了一些基础之后,就需要有做出应用的构思。如果没有自己想要做的产品,类似于天气查询这样很多人都会拿来练手的应用是比较好的选择。API成熟;做过的人多,有问题随时查询基本都能有答案。我做“苹果序列号查询”是因为之前没有这样的应用,每次需要查询苹果产品激活信息都要去那些广告繁多的网站上,体验很不好。刚好聚合数据又有苹果序列号查询的API,所以就想自己做一个
3.这一步就是写代码的过程了,对于Android来说,代码有两个方面:布局配置(xml)+具体业务逻辑(一般用Java语言)。
4.完成开发之后就是在各大应用市场上线了。
上面所有流程,对于新手来说肯定会遇到各种各样的问题,还好Google搜索很强大,遇到问题,大胆去搜吧。
问题3:难点都在哪里?什么时候出现?
就像上面说的一样,新手会遇到各种各样的问题,我不认为都是难点,由于对于新事物的不熟悉,很多别人认为很简单的地方在我这里都会成为拦路虎,唯一能做的就是保持耐心,不断去找答案。比如在“苹果序列号查询”开发过程中,阻碍最长时间的是这样一个问题(耗了两天才解决):在使用聚合数据API时,请求数据的一个代码块始终无法执行到,我在网上查了两天,再反复看自己的代码,都没有解决。实在没办法了,工作日的时候,向聚合数据的工程师求助,最后问题是我在配置文件里面少写了一行代码,导致sdk初始化不成功。聚合的工程师在远程很快就发现了这个问题,所以我认为遇到的不见得都是难点,关键还是遇到问题后自己怎么去寻找解决问题的途径和方法。
问题4:需要哪些人员进行开发?
标准的配备一般是:产品,设计,软件工程师,测试工程师
但是根据项目大小以及性质,可以精简。个人项目,当然1个人就充当了上面4种角色了。产品原型在纸上画出来,设计样式软件工程师在代码中不断调整实现,软件工程师写完后自己进行简单测试。
问题5:需要多少钱多少时间?
钱方面不清楚,时间上也是根据具体应用业务逻辑多不多,业务模块多不多来决定的。目前我个人完成的2个应用,做出第一版花费的时间都在10-15天左右,这个速度肯定是偏慢的,因为对于我来说很多知识都需要去现学。
------------------------------------
写了这么多,不知道有没有帮助到题主,下面我也想安利下自己的应用以及在求职中的自己:
1.小米、豌豆荚、魅族Flyme、Google Play、锤子应用商店上搜索“苹果序列号查询”,有任何问题,欢迎反馈给我丫。
2.第二个应用做的是个人简历—JeffinBaoCV,没有上线,感兴趣的朋友可以通过下面链接下载(由于身边手机不多,可能在小屏幕低版本系统的手机上会有适配问题,如果有,也欢迎反馈给我丫,多谢):百度云 请输入提取密码.(提取码:9x6d)
3.下面是跟我有关一些主页的链接:
个人主页:JeffinBao - Android开发,读书,见人,行事
主要用于写技术文章和一些自己认为写得比较好的文章,刚开始用jekyll引擎不久,所以内容比较少。
GitHub主页:JeffinBao (Jeffin.Bao) · GitHub
主要用于托管自己的代码,寻找一些好的开源项目来学习使用。
-------------------------------------
深知自己在Android开发上只是个入门选手,但还是想踏出这一步开始找工作,原因有以下几点:
1.从去年11月辞职开始,这大半年时间中除去出去玩+过年,真正学习编程的时间在5个月左右,我认为这是我的劣势:接触编程时间太短;但也是我的优势:这5个月中,从结果来说,我通过自学以及师友的帮助,完成了两个我个人构思的应用,虽然比较简单,但是通过这两个应用,让我了解了如何完成一个应用的开发上线以及维护。也证明了大学毕业1年半以后我的学习能力依旧没有丢掉。
2.希望能接触更复杂的项目,我相信真正面对用户的商业应用挑战更大当然也更能让我成长。
3.希望能接触牛人,总是一个人闷着学习开发,缺少与牛人的沟通交流对于技能的成长是不利的。
邮箱:bjf13609846991@gmail.com
App的开发我觉得有两个很重要的特点,一是少数几个人,甚至是你自己一个人,可以把所有的事情都做了(只谈App开发,不包括后台),二是App是一个和用户强交互的产品。
对于第一点,也就是说,即使你是一个刚刚入门的菜鸟,如果你想一个人或者和几个小伙伴一起开发一个App,在写代码的时候,都需要考虑到代码的架构,类的设计,以及更小的一些编程的最佳实践和技巧。这些事情往往没有一个架构师或者更有经验的程序员帮你做(即使很多成熟的公司也是这样),需要你自己来掌控。这就导致一个问题,一个经验丰富,且技术扎实的程序员,可能写出一个架构良好、便于扩展、稳定、高效的App,但是一个菜鸟,或者从来不在意这些事情的程序员,可能会写出一个代码极其混乱的App,进而导致应用的稳定性不好,甚至连界面都写不好,影响用户体验。所以我觉得,写一个App,人人都是架构师,能不能做好这个角色,对最终的结果影响很大。
第二点,是很多程序员比较忽视的一点,App是和用户不停地做交互,用户对于界面的设计、交互的设计、功能的设计甚至颜色、动画、字体大小等细节,都会非常敏感。所以我觉得大多数情况下,要写出一个优秀的App,程序员是需要一定的审美能力以及对产品的理解的。当然,你可以说这些事情都是产品、设计师、交互设计师提前决定好了,程序员只要负责实现就可以了。但是程序员如何还原这些实现,用什么样的代码进行实现,使用什么样的API,使用什么样的开源库,都是程序员综合能力的体现。我看到过写的十分优雅的App,对于极少数App,我会用“丝般顺滑”来形容它的用户体验,我也看到过很多大公司的中规中矩、功能齐全、界面保守的App,然而我看到最多的却是一个个生硬的界面,让人一点触摸的冲动都没有,你能说这种情况程序员没有责任吗?
以上的回答可能不能完全契合题主的问题,但是却是我认为的很重要也相对比较困难的两个方面。第一个AndroidApp-华容道
之前我是完完全全的JAVA,,Android零基础。为了探明"我这种条件下开发一个APP有多难",简单记录了一下开发流程:
开发日志:
很巧的,我在知乎看到了类似”如何20天零基础开发Android游戏” 的问题。大家都是对这种问题不屑一顾的,但我从开始到完成恰好十来天,可以作为参考记录一下。
Day1
确立市场方向,要做个益智类游戏,啥好呢?啥好呢?我把所有的Android的华容道下载下来玩了一遍,嗯,都很粗糙,看来有的玩,就是它了。
这个时候,其实你已经完成一半工作了。没错,就是那句什么 决定出发的时候,旅行就完成了一半。 这个时候就不要纠结于做什么了,关键是如何做。
Day2
开始搭建开发环境,先后折腾了Android Studio和Eclipse,家里FQ实在慢呀,另外我用父亲打扑克的机器跑Android Studio是在跑不动啊,最后装了Eclipse。推荐个链接,有兄弟收集了开发环境套装国内下载,你值得拥有。
Day3
开始学习Java,神马?你都不会Java还来搞Android。嗯,我也没想到,有一天我要搞Java!要搞Java啊,我对它的印象还是航空母舰啊~~~。没办法,找了本 <Head First Java> 电子书,照着书里面的例子一个个敲,没错,不论懂不懂,就一个个敲。,幸亏 Head First 系列专门照顾低智商读者的,像我这样的一天敲到了300多页的例子。
Day4
不知不觉就把600页的书敲完了。嗯,看来那种xx天精通xxx,也不是骗人的,现在我的状态,估计能出去忽悠一些HR了。
Day5
先不管Android,搞一个穷人版的华容道。就开始封装三个类,什么接口啊,多态啊,统统不用,就是简单继承。搞了个核心库,棋盘就用 0011 先画出来了。嗯,最后可以玩了。不过只有我一个人懂得怎么玩。 不过很有成就感啊,看来一天写个俄罗斯方块之类的不是难事啊。
Day6
这个核心库很关键啊,挂了直接影响后面的开发啊。但是我用 0011 看的很累啊。赶紧google之,看看Java怎么搞测试~~~,好,最后集成了JUnit,顺便学了学怎么在Eclipse里面跑测试,最后写了一堆测试用例,果然发现了BUG,某些棋子竟然能对角线走动,罪过罪过。
Day7
Android程序怎么搞,现在八字还没一撇呢。热情啊,就要消耗光了。
赶紧找了本网上号称最简单的Android开发教程 <第一行代码 >,再开始对着敲。没错,我就是只会这一招。
Day8
还在敲~~~,敲不完了。不是打字慢,而是电脑一开Android 手机模拟器就陷入昏睡模式,一气之下不敲了,直接接上手机开干。
Day9-Day13
游戏逻辑在前面那个核心库早写完了,我对Android App的开发印象就是:画View。没错,就是处理各种图像拉伸,各种尺寸适配,各种布局位置,各种奇葩的手机尺寸,各种API新老接口整合。
简单列举下中间遇到的坑:
-
怎么在各种尺寸下画出一个比较漂亮的棋盘布局
-
怎么用相对布局把几个菜单搞得整齐一点
-
怎么PS出一个不那么生硬的背景,没错,我还同时开了Photoshop做美工,这个时候电脑已经处在超脱状态
-
怎么在两个View直接传数据,怎么处理活动的生存周期
-
怎么加背景音乐,怎么搞成服务,怎么能让程序退出的时候结束服务,怎么搞得好听一点,没错,这个时候我又客串DJ,研究了MP3各码率下音质和文件大小的关系,最后以专业乐评人的视角选择了一首古筝曲
-
晕,现在为止还是只有一关呢,怎么办?我到 代码发芽 网上,写个Python脚本爬下来了所有关卡,同时邮件问作者申请授权
-
到底是拖动棋子效果好呢,还是点击移动棋子效果好呢?我又化身PM,反反复复走最简单的一关, 十八步 ,最后确定还是点击效果好。没错,到目前为止,这个游戏我只玩通了三关,我的智商就是这样。最后我爸还解决了 横刀立马 ,我怎么也不行。
-
发现一个重大问题,原来我一直以为只有五虎上将的,一共五横五竖十个长条棋子,突然发现有一关里面出现了魏延,我晕,再调吧
-
又发现个问题,Android的默认sqlite模块好像没说怎么把已有的数据库集成进去,怎么办,Google吧
到各个Android市场注册账号,提交APP,等审核,之间经历若干PS工作,这也是辛苦活啊。
~~~~~
就是这样,我在各种大坑小坑瞎搞之后,瞎搞出来了。。。
结论
-
所谓零基础xx天搞APP是可以的,但是有条件,你只是Android零基础或者Java零基础,其它编程基础还是要有的,不然期间大坑小坑肯定要浪费很多时间
-
熟练工和初级工效率差距巨大,一天写个游戏APP不是开玩笑
-
这样写出的APP完成度低,要加入完整的体验流程,工作量还是很大的
我在开发过程中用到的技能:
虽然说是零基础,但是我其它程序语言(C, C++, Python, Javascript, CSS)的经验还是有一点的,以这个条件来看也不是零基础,下面总结下我已有的技能铺垫:
1.Google能力。这个真的非常重要。我没有诋毁百度的意思。我只能说,做开发,真的只能依靠Google。另外搜索能力也很重要,比如我遇到个最简单的问题:"如果把已有的数据库集成到Android程序里",一般就会以"android sqlite exists database" 为关键字google,要更精准的话,还会以google的site 语法过滤stackoverflow上面的答案;如果你要解决布局问题的话,起码要知道layout这种术语吧。所以不夸张的说,Google能力是最重要的一项技能。
具体可以参考这里:如何用好 Google 等搜索引擎? - Google 搜索
2.版本控制能力,我是使用http://bitbucket.com的Git服务开发的,现在大部分开发人员都转向Git了。GIt也有一个非常陡峭的学习曲线,如果从来没有接触到版本控制的人,要很长时间才能熟悉。
3.PS能力,就是有点美工能力,可以简单的修一下图,PS一下背景,调下大小,抠个图什么的,要求不是太高,不过有些很简单的问题就足够考验新手的,比如"怎么创建圆角图片?","怎么平铺背景?","怎么设置叠加效果?" 等等等等,这些会的人根本不用时间,几秒钟的事,但是毅力不足的新手很容易就被吓退了。或者就去找简单工具想一键修图之类的,我只能说,简单工具可以帮你在某个情况下完成某个特定问题,长远来看,你一定会为今天省出的一分钟,付出一小时的代价。
4.测试能力,这个就是耐心。毅力第一位,没有花巧,就是一个个写测试用例,一项项测。
5.最好有一点脚本能力,比如我想找到所有华容道游戏的关卡,怎么办?一项一项添吗?无疑是到网上找现成的最好,可是怎么把网上现成的关卡搬到你的程序里呢?一般就是写脚本爬虫转化。这个还真的是会者不难,我大概半个小时就做到了。前提是我已经熟知前端开发的那些东西,还有简单的HTML parse,还有HTTP协议等等,这个真的是要基础的。
6.最后就是毅力了。上面每个技能掌握前都会遇到大大小小的坑,考验的就是你的毅力。天下事有难易乎?为之,则难者亦易已。 共勉之。