到2021年,将会有大约3500亿的移动APP下载量,这将创造约2000亿美元的营收,因此如今移动APP的开发、营销和销售都在呈现指数级增长这个事实也就在情理之中了。
事实上,目前在Google Play商店中有280万款APP可供下载,在苹果App Store里有220万款APP可供下载,而且这些数字还在不断增长。相对于桌面端而言,移动端的主导地位正在不断加强,移动APP将会存在很长时间,尤其是在商业和科技领域更是如此。
因此,这些领域的创业公司的创始人都很想知道这个问题的答案:开发一款移动APP需要花多少时间和精力?
现有数据:开发一款移动APP需要3-5个月
尽管每年有100万款新的移动APP会在主流应用商店上架,但关于开发一款新的移动APP究竟需要多长时间方面的数据却非常少。虽然你会发现很多网站声称开发一款移动应用所需的时间大概为3-4个月,但要找到证明这个信息的可靠数据却并不容易。不过,至少有两个这方面的调查数据是值得一提的:
(1)在由Kinvey在2013年发起的一项调查中,Kinvey让100名移动APP设计师指出,他们认为要开发出含有主要功能的Android或iOS的APP1.0版本需要多长时间(即一个最小可行化产品,也就是MVP),通过对这100个参与调研的应用设计师的反馈的数据进行求和平均,Kinvey发现开发一款原生的移动APP需要大约18周的时间(即:4.5个月),其中后端开发大概需要10周时间,前端开发大概需要8周时间。针对这个调研结果,Kinvey还制作了一张经常被大家引用和分享的移动APP开发时间轴信息图:
在下文中,我将描述后台和前端开发的本质,因此,如果上面的信息图现在有点混乱,也请不要介意。
(2)第二个值得提及的这方面的研究是GoodFirms在2017年发布的一份报告。GoodFirms在应用领域进行了多项调查,调研的主题包括开发一款移动APP需要的时间和费用方面的问题
和Kinvey采用的方法类似,GoodFirms调研了几十家科技公司,要求参与调研的公司估计开发像Instagram、Tinder和Uber这样的APP需要多长时间,然后对参与调研者给出的数据进行了求和平均。
根据这个调研,GoodFirms的报告中展示了以下数据:
- 功能丰富的高度复杂的应用,如Instagram和Uber,需要花费4.5月-5.5个月的时间才能开发完成。
- 中等复杂的移动应用,如WhatsApp或QuizUp,需要大约4.6个月的时间才能开发完成。
- 用户友好型但功能较少的应用,比如Tinder和Periscope,需要大约3.8月-4.1个月才能开发完成。
下面是 GoodFirms制作的相应的信息图表:
总之,这两项调研都表明,开发一款APP大约需要3-5个月的时间才能完成。尽管开发不同的应用需要的时间会有一定的差别,但大概的时间范围是肯定没错的。
现在让我们来看看开发一款移动APP所涉及的四个关键阶段,以便探索可能会影响完成一款APP开发所需要的时间的各种因素和决策。
移动APP开发的四个关键阶段
尽管我们可以将APP开发看作是一个迭代过程,但将过程概念化是有帮助的,因为它涉及到许多定义阶段。我将一一描述APP开发的每一个阶段,同时你要记住,每一个阶段都不是与其它阶段完全分开的。
阶段1:调研和规划
开发一款移动应用的第一阶段需要回答两个基本的问题:
(1)为什么我要开发这款APP?这款APP为什么需要存在?它将如何为世界带来价值?人们真的想使用这款APP吗?哪些人会使用这款APP?为什么会使用?
(2)市面上是否已经这种类型的APP了?如果已经存在的话,我为什么相信我开发的APP能战胜其它竞争对手?我的APP与其它现有同类APP的区别和优势分别是什么?
从本质上看,要想回答诸如“我想要我的APP做什么?我的APP为什么要存在?我的APP如何击败竞争对手?”这些问题,这就需要你对你的目标市场和目标客户群有深入的了解。
你需要对市场需求和客户需求进行广泛的研究,确保:(1)确认并证实一个能够为你带来盈利的客户痛点;(2)计算目标市场规模;(3)验证你的产品想法。此外,你还必须研究你的竞争对手,包括他们的APP、客户和商业策略。
很难准确地指出你需要花多长时间来收集和确认这些重要的信息,但是你很有可能需要花几个星期的时间来调研和验证想法。
阶段2:功能和特性
在收集了足够多有关理想客户的需要和需求数据后,确定你打算提供的解决方案确实是有很大的市场需求的,接下来你必须决定应该要为你的APP开发哪些具体的功能和特性。很多移动APP开发者都会迷失在这个阶段。
在这个阶段,你要精确地确定你想让你的APP以何种方式运行:
- 你希望你的APP能够做些什么?
- 它将执行哪些任务、功能和操作?(一对一聊天?与其他应用集成?等等)
- 它将如何处理数据?它将从用户那里收集原始数据,还是利用现有的数据框架?
这时,你就需要创建故事板(storyboard)了,例如应用程序的用户界面的可视化展示,显示内容的屏幕和这些屏幕之间的联系和连接:
故事板有助于你发现可用性方面的问题,并改善用户体验。
在确定移动APP的功能和特性阶段,你还要开发用例,这些用例作为理想用户与应用进行交互的模板。正如Crew的团队成员所说的那样,你开发的功能越多,你的产品就会越复杂,开发应用所需的时间也就越长。
你在这个阶段必须做的最重要的决策之一就是你的APP要支持多操作系统和设备,还是只支持一种操作系统和设备。实际上,这通常意味着你必须决定你的APP是否有iOS、Android和Windows版本。
为什么这个选择从时间表的角度来看非常重要呢?主要因为两个原因:
(1)为多个操作系统和设备开发一款APP需要更长的时间才能开发完成。
(2)虽然随着时间的推移,这一差别变得越来越不明显,但开发一款安卓APP比开发一款iOS APP通常需要更多的时间(通常需要多花20-30%的时间)。
关于这一点,Valeriia Timokhina曾表示:“iOS通常是最开始推出应用的首选平台,因为只有少量的目标设备和操作系统需要适配。相对于一次性需要适配多个操作系统,一次只确保你的应用在一个操作系统上完美地运行容易得多。此外,在市面上有超过12000个不同的Android设备,几乎不可能将APP针对每一款Android设备都进行优化。因此,开发和测试Android APP往往需要花费更多的时间,除非你限制支持的设备和支持的屏幕分辨率的数量。如果你想同时开发iOS和Android APP,那么你开发APP所需要的时间和预算可能会翻倍。”
关于你应该如何同时开发面向多个操作系统的应用,Cruxlab的工作人员指出:“传统上,Android APP程序是用Java开发的,而iOS APP则是用Swift和objective-objective编写的。尽管如此,仍然存在大量其他可替代的替代工具,Xamarin、React Native和Ionic是其中的一些比较受欢迎的替代工具。”
在没有深入技术细节之前,如果你想同时开发iOS和Android APP(也可能包括Windows应用),那么你可以选择下面两种路径中的一种:
(1)使用两种完全不同的编程语言来开发APP的两个不同的版本;
(2)使用跨平台的开发工具(React Native、Ionic等)同时开发APP的两个版本,从而简化流程。
这里再强调一遍,虽然无法准确预测确定APP的核心功能特性所需要的时间,不过大概的时间范围是肯定的:3-5周左右。
阶段3:技术可行性、设计和开发
在确定了你想要APP做什么以及期望它如何运行之后,你接下来必须要明确地确认将这些功能和特性开发出来并正常运行是能够做到的。在这个过程中,需要让你的技术团队参与确认,你想要给用户带来的功能和产品前端交互体验是能够在后端通过编程来实现的。换句话说,你需要确保前端和后端系统之间的兼容性。为此,你必须咨询你的技术人员并与其合作。
前端系统包括一个软件、应用程序或网站的可视化前端元素,它们可以被终端用户直接查看和访问。相反,后端系统由一个网站、软件或信息系统的核心计算逻辑组成,这些系统是可以供用户通过前端应用程序或系统间接访问的。
前端开发主要集中在开发的客户端。前端开发人员将参与分析代码、设计和调试应用程序,同时确保提供一个无缝的用户体验。你可以管理和控制人们在浏览器或应用中首先会看到的东西,作为前端开发者,你要负责网站的外观、感觉和最终设计。
后端开发指的是服务器端的开发,你主要关注的点是网站是如何工作的。这种类型的web开发通常由三个部分组成:一台服务器、一个应用和一个数据库。后台开发人员编写的代码是将数据库信息传到浏览器或应用中。任何你无法轻易看到的东西,比如数据库和服务器,都是后台开发人员的工作。
从技术上讲,前端流程包括缓存、同步、线框图、UI设计、UI开发等。数据存储、用户管理、服务器端逻辑、数据集成和版本控制等都属于后端开发。由于后端流程负责计算、业务逻辑、数据库交互和性能等方面的操作,让应用运行的大部分代码都是后端代码。
后端工程师要与前端设计人员保持持续的沟通,这一点至关重要。否则你就有可能陷入这样一种危险的境地:后端工程师无法开发前端设计人员想要的东西。
如果你想与后端基础架构一起来开发前端移动APP,那么最重要的是你要对所要开发的功能进行优先级排序。让你的后端工程师先开发,这样你的前端工程师才可以开发功能代码。如果后端没有很好地定义,也没有相应的功能,那么前端工程师的工作效率就会低很多。
开发APP的一个关键部分在于需要能成功地访问你的应用运行的核心数据。你是会使用公共API密匙,还是会开发自己的抽象层?
API的全称是Application Programming Interface(应用程序接口),它代表了一种独特的代码,允许应用与应用之间(开发者)相互访问。一些全球知名的应用都有开放的API,比如Dropbox、Facebook、Instagram、Skype、Twitter和Uber,开发人员可以利用这些API来开发自己的应用。
例如,流行的基于滑动的交友应用Tinder就使用了Facebook的API:Tinder用户通过他们的Facebook主页登录Tinder,正因如此,Tinder就没有必要从零开始打造自己的用户群。
确定前端和后端兼容性需要涉及各种不同的UX(用户体验)和UI(用户界面)设计流程,包括线框图:
作为UX设计的一部分,线框图是一个页面或应用界面的二维图,主要展示的是内容的空间分配和优先级,可用的功能以及预期的行为。
线框图主要是灰色的,主要帮助:
(1)在APP的信息架构与它的视觉设计之间搭起一座桥梁。
(2)阐明在用户界面上所显示的信息的一致方法。
(3)确定交互界面中的预期功能。
(4)通过确定给一个特定项目分配多少空间以及将该项目在屏幕上的位置,并进而来进行内容的优先级排序。
下面是Facebook的线框图的例子:
在产品开发和优化周期的不同阶段都可以制作线框图。例如,有些人会选择在功能和特性阶段早期制作线框图,将线框图与故事板和其它基本视觉表现的使用联系起来。另一些人则在设计和开发阶段制作线框图,把它与对前端和后端兼容性的调查联系起来。
正如 Sheila Olson 所言,线框图和故事板可以作为你用来支撑APP的后台架构的向导——API、数据图、服务器、数据集成和推送通知服务。
对于那些在设计和开发阶段制作线框图的人来说,大概的顺序是这样的:
线框图→ 低保真原型→高保真模型→代码。
一旦完成了线框图的制作设计后,就可以创建应用的图形用户界面(GUI)了,这个界面是用来创建添加特定字体、颜色、主题和图标的地方。
正如 Aim Consulting的人所言,一旦设计元素完成之后,设计结果就能提供一个清晰的视觉方向,让你的工程师了解预想的最终产品以及APP中的交互感觉、移动和流动应该是怎样的。
你可以通过利用专门为这个目的设计的软件平台来开发你的新APP(例如:应用程序开发程序,其中很多都是拖放界面)。然而,我们建议你与一个专业的应用开发代理商合作,因为代理商在帮助企业家成功地执行他们的想法方面拥有丰富的经验。
总而言之,进行技术可行性评估,确定前端设计元素,并编写后端架构,这可能需要1-2个月的时间才能完成。
阶段4:测试与改进
开发一款APP的最后一个阶段(除了实际发布和相关的营销活动之外)是测试和改进阶段。
现在,从某种层面上说,测试是开发阶段的一部分,因为你的程序员和Alpha测试工程师在开发过程中会不断地尝试打破你的APP,以便在其发布之前发现并纠正代码中存在的错误。
Alpha测试是你的公司内部的进行的,因为你的开发人员(无论是员工还是外包)将会在你的APP发布到真实的终端用户手里之前对应用进行标准化的诊断。
Beta测试的目的是在实验室外测试你的APP:当真正的用户有机会按照他们自己喜欢的方使用APP而不是按照你设想的方式使用APP时,这时会发生什么呢?Beta测试的关键是要弄清楚当日常用户将你的应用下载到他们的手机上并按照他们喜欢的方式使用应用时,你的应用是否能支撑住。
Alpha测试需要发现主要的bug和小故障,而Beta测试需要能够发现APP在真实用户的真实使用环境中可能会出现的问题。
Alpha测试(开发阶段)和Beta阶段(测试阶段)对于打造一款可靠的应用都是必不可少的组成部分。
一旦你在你自己的开发团队中对应用完成了Alpha测试后,你就应该将APP开放给特定的公众进行Beta测试。
你如何才能为即将发布的应用找到合格的Beta测试者呢?你可以通过一些基于Web的服务和平台来找到测试者,包括BetaFamily、BetaList、ErliBird、PreApps、TestElf、Reddit和UserTesting等。
如果你已经完成了一轮或几轮Alpha测试,那么你的Beta测试阶段需要花的时间应该不会超过3-4周。
结语
在上面的时间基础上,我们还为APP开发的四个阶段分别还留有了一定的时间缓冲,因此我们最终计算出,开发完成一款应用所需的最终时间大概在4-5个月。因此,我们会发现,开发一款移动APP是一个相当漫长而复杂的过程,需要大量的准备、耐心和投入才能正确地执行。
下面是我为大家的APP开发之旅提供的最后两点建议:
(1)在制定APP开发时间表上,要保持适当的灵活性,要做好延迟的准备。很多无法预见的情况都会造成时间的拖延,如iOS新版发布、第三方集成发生的变化、质量测试过程中出现的意想不到的问题等。在完成开发的过程中,要给自己留出一个缓冲时间,而不是一个严格的最后期限。你最不想看到的就是将APP发布到应用商店后,发现这款应用崩溃了或者出现其它更糟糕的情况。你只有一次给用户留下第一印象的机会,你肯定不想成为那些在被用户下载后就被立即弃之不用的APP。
(2)确保你能够在APP发布后依然可以随时与开发团队沟通。如果你正在与外部供应商合作开发你的APP,确保你在APP发布后通过托管服务协议或类似的合作伙伴关系来继续与开发团队沟通,移动APP并不是那种“一旦开发完成便终身无忧”的产品。