到2021年,將會(huì)有大約3500億的移動(dòng)APP下載量,這將創(chuàng)造約2000億美元的營(yíng)收,因此如今移動(dòng)APP的開發(fā)、營(yíng)銷和銷售都在呈現(xiàn)指數(shù)級(jí)增長(zhǎng)這個(gè)事實(shí)也就在情理之中了。
事實(shí)上,目前在Google Play商店中有280萬(wàn)款A(yù)PP可供下載,在蘋果App Store里有220萬(wàn)款A(yù)PP可供下載,而且這些數(shù)字還在不斷增長(zhǎng)。相對(duì)于桌面端而言,移動(dòng)端的主導(dǎo)地位正在不斷加強(qiáng),移動(dòng)APP將會(huì)存在很長(zhǎng)時(shí)間,尤其是在商業(yè)和科技領(lǐng)域更是如此。
因此,這些領(lǐng)域的創(chuàng)業(yè)公司的創(chuàng)始人都很想知道這個(gè)問題的答案:開發(fā)一款移動(dòng)APP需要花多少時(shí)間和精力?
現(xiàn)有數(shù)據(jù):開發(fā)一款移動(dòng)APP需要3-5個(gè)月
盡管每年有100萬(wàn)款新的移動(dòng)APP會(huì)在主流應(yīng)用商店上架,但關(guān)于開發(fā)一款新的移動(dòng)APP究竟需要多長(zhǎng)時(shí)間方面的數(shù)據(jù)卻非常少。雖然你會(huì)發(fā)現(xiàn)很多網(wǎng)站聲稱開發(fā)一款移動(dòng)應(yīng)用所需的時(shí)間大概為3-4個(gè)月,但要找到證明這個(gè)信息的可靠數(shù)據(jù)卻并不容易。不過,至少有兩個(gè)這方面的調(diào)查數(shù)據(jù)是值得一提的:
(1)在由Kinvey在2013年發(fā)起的一項(xiàng)調(diào)查中,Kinvey讓100名移動(dòng)APP設(shè)計(jì)師指出,他們認(rèn)為要開發(fā)出含有主要功能的Android或iOS的APP1.0版本需要多長(zhǎng)時(shí)間(即一個(gè)最小可行化產(chǎn)品,也就是MVP),通過對(duì)這100個(gè)參與調(diào)研的應(yīng)用設(shè)計(jì)師的反饋的數(shù)據(jù)進(jìn)行求和平均,Kinvey發(fā)現(xiàn)開發(fā)一款原生的移動(dòng)APP需要大約18周的時(shí)間(即:4.5個(gè)月),其中后端開發(fā)大概需要10周時(shí)間,前端開發(fā)大概需要8周時(shí)間。針對(duì)這個(gè)調(diào)研結(jié)果,Kinvey還制作了一張經(jīng)常被大家引用和分享的移動(dòng)APP開發(fā)時(shí)間軸信息圖:
在下文中,我將描述后臺(tái)和前端開發(fā)的本質(zhì),因此,如果上面的信息圖現(xiàn)在有點(diǎn)混亂,也請(qǐng)不要介意。
(2)第二個(gè)值得提及的這方面的研究是GoodFirms在2017年發(fā)布的一份報(bào)告。GoodFirms在應(yīng)用領(lǐng)域進(jìn)行了多項(xiàng)調(diào)查,調(diào)研的主題包括開發(fā)一款移動(dòng)APP需要的時(shí)間和費(fèi)用方面的問題
和Kinvey采用的方法類似,GoodFirms調(diào)研了幾十家科技公司,要求參與調(diào)研的公司估計(jì)開發(fā)像Instagram、Tinder和Uber這樣的APP需要多長(zhǎng)時(shí)間,然后對(duì)參與調(diào)研者給出的數(shù)據(jù)進(jìn)行了求和平均。
根據(jù)這個(gè)調(diào)研,GoodFirms的報(bào)告中展示了以下數(shù)據(jù):
-
功能豐富的高度復(fù)雜的應(yīng)用,如Instagram和Uber,需要花費(fèi)4.5月-5.5個(gè)月的時(shí)間才能開發(fā)完成。
中等復(fù)雜的移動(dòng)應(yīng)用,如WhatsApp或QuizUp,需要大約4.6個(gè)月的時(shí)間才能開發(fā)完成。
用戶友好型但功能較少的應(yīng)用,比如Tinder和Periscope,需要大約3.8月-4.1個(gè)月才能開發(fā)完成。
下面是 GoodFirms制作的相應(yīng)的信息圖表:
總之,這兩項(xiàng)調(diào)研都表明,開發(fā)一款A(yù)PP大約需要3-5個(gè)月的時(shí)間才能完成。盡管開發(fā)不同的應(yīng)用需要的時(shí)間會(huì)有一定的差別,但大概的時(shí)間范圍是肯定沒錯(cuò)的。
現(xiàn)在讓我們來看看開發(fā)一款移動(dòng)APP所涉及的四個(gè)關(guān)鍵階段,以便探索可能會(huì)影響完成一款A(yù)PP開發(fā)所需要的時(shí)間的各種因素和決策。
移動(dòng)APP開發(fā)的四個(gè)關(guān)鍵階段
盡管我們可以將APP開發(fā)看作是一個(gè)迭代過程,但將過程概念化是有幫助的,因?yàn)樗婕暗皆S多定義階段。我將一一描述APP開發(fā)的每一個(gè)階段,同時(shí)你要記住,每一個(gè)階段都不是與其它階段完全分開的。
階段1:調(diào)研和規(guī)劃
開發(fā)一款移動(dòng)應(yīng)用的第一階段需要回答兩個(gè)基本的問題:
(1)為什么我要開發(fā)這款A(yù)PP?這款A(yù)PP為什么需要存在?它將如何為世界帶來價(jià)值?人們真的想使用這款A(yù)PP嗎?哪些人會(huì)使用這款A(yù)PP?為什么會(huì)使用?
(2)市面上是否已經(jīng)這種類型的APP了?如果已經(jīng)存在的話,我為什么相信我開發(fā)的APP能戰(zhàn)勝其它競(jìng)爭(zhēng)對(duì)手?我的APP與其它現(xiàn)有同類APP的區(qū)別和優(yōu)勢(shì)分別是什么?
從本質(zhì)上看,要想回答諸如“我想要我的APP做什么?我的APP為什么要存在?我的APP如何擊敗競(jìng)爭(zhēng)對(duì)手?”這些問題,這就需要你對(duì)你的目標(biāo)市場(chǎng)和目標(biāo)客戶群有深入的了解。
你需要對(duì)市場(chǎng)需求和客戶需求進(jìn)行廣泛的研究,確保:(1)確認(rèn)并證實(shí)一個(gè)能夠?yàn)槟銕碛目蛻敉袋c(diǎn);(2)計(jì)算目標(biāo)市場(chǎng)規(guī)模;(3)驗(yàn)證你的產(chǎn)品想法。此外,你還必須研究你的競(jìng)爭(zhēng)對(duì)手,包括他們的APP、客戶和商業(yè)策略。
很難準(zhǔn)確地指出你需要花多長(zhǎng)時(shí)間來收集和確認(rèn)這些重要的信息,但是你很有可能需要花幾個(gè)星期的時(shí)間來調(diào)研和驗(yàn)證想法。
階段2:功能和特性
在收集了足夠多有關(guān)理想客戶的需要和需求數(shù)據(jù)后,確定你打算提供的解決方案確實(shí)是有很大的市場(chǎng)需求的,接下來你必須決定應(yīng)該要為你的APP開發(fā)哪些具體的功能和特性。很多移動(dòng)APP開發(fā)者都會(huì)迷失在這個(gè)階段。
在這個(gè)階段,你要精確地確定你想讓你的APP以何種方式運(yùn)行:
-
你希望你的APP能夠做些什么?
它將執(zhí)行哪些任務(wù)、功能和操作?(一對(duì)一聊天?與其他應(yīng)用集成?等等)
它將如何處理數(shù)據(jù)?它將從用戶那里收集原始數(shù)據(jù),還是利用現(xiàn)有的數(shù)據(jù)框架?
這時(shí),你就需要?jiǎng)?chuàng)建故事板(storyboard)了,例如應(yīng)用程序的用戶界面的可視化展示,顯示內(nèi)容的屏幕和這些屏幕之間的聯(lián)系和連接:
故事板有助于你發(fā)現(xiàn)可用性方面的問題,并改善用戶體驗(yàn)。
在確定移動(dòng)APP的功能和特性階段,你還要開發(fā)用例,這些用例作為理想用戶與應(yīng)用進(jìn)行交互的模板。正如Crew的團(tuán)隊(duì)成員所說的那樣,你開發(fā)的功能越多,你的產(chǎn)品就會(huì)越復(fù)雜,開發(fā)應(yīng)用所需的時(shí)間也就越長(zhǎng)。
你在這個(gè)階段必須做的最重要的決策之一就是你的APP要支持多操作系統(tǒng)和設(shè)備,還是只支持一種操作系統(tǒng)和設(shè)備。實(shí)際上,這通常意味著你必須決定你的APP是否有iOS、Android和Windows版本。
為什么這個(gè)選擇從時(shí)間表的角度來看非常重要呢?主要因?yàn)閮蓚€(gè)原因:
(1)為多個(gè)操作系統(tǒng)和設(shè)備開發(fā)一款A(yù)PP需要更長(zhǎng)的時(shí)間才能開發(fā)完成。
(2)雖然隨著時(shí)間的推移,這一差別變得越來越不明顯,但開發(fā)一款安卓APP比開發(fā)一款iOS APP通常需要更多的時(shí)間(通常需要多花20-30%的時(shí)間)。
關(guān)于這一點(diǎn),Valeriia Timokhina曾表示:“iOS通常是最開始推出應(yīng)用的首選平臺(tái),因?yàn)橹挥猩倭康哪繕?biāo)設(shè)備和操作系統(tǒng)需要適配。相對(duì)于一次性需要適配多個(gè)操作系統(tǒng),一次只確保你的應(yīng)用在一個(gè)操作系統(tǒng)上完美地運(yùn)行容易得多。此外,在市面上有超過12000個(gè)不同的Android設(shè)備,幾乎不可能將APP針對(duì)每一款A(yù)ndroid設(shè)備都進(jìn)行優(yōu)化。因此,開發(fā)和測(cè)試Android APP往往需要花費(fèi)更多的時(shí)間,除非你限制支持的設(shè)備和支持的屏幕分辨率的數(shù)量。如果你想同時(shí)開發(fā)iOS和Android APP,那么你開發(fā)APP所需要的時(shí)間和預(yù)算可能會(huì)翻倍。”
關(guān)于你應(yīng)該如何同時(shí)開發(fā)面向多個(gè)操作系統(tǒng)的應(yīng)用,Cruxlab的工作人員指出:“傳統(tǒng)上,Android APP程序是用Java開發(fā)的,而iOS APP則是用Swift和objective-objective編寫的。盡管如此,仍然存在大量其他可替代的替代工具,Xamarin、React Native和Ionic是其中的一些比較受歡迎的替代工具。”
在沒有深入技術(shù)細(xì)節(jié)之前,如果你想同時(shí)開發(fā)iOS和Android APP(也可能包括Windows應(yīng)用),那么你可以選擇下面兩種路徑中的一種:
(1)使用兩種完全不同的編程語(yǔ)言來開發(fā)APP的兩個(gè)不同的版本;
(2)使用跨平臺(tái)的開發(fā)工具(React Native、Ionic等)同時(shí)開發(fā)APP的兩個(gè)版本,從而簡(jiǎn)化流程。
這里再?gòu)?qiáng)調(diào)一遍,雖然無(wú)法準(zhǔn)確預(yù)測(cè)確定APP的核心功能特性所需要的時(shí)間,不過大概的時(shí)間范圍是肯定的:3-5周左右。
階段3:技術(shù)可行性、設(shè)計(jì)和開發(fā)
在確定了你想要APP做什么以及期望它如何運(yùn)行之后,你接下來必須要明確地確認(rèn)將這些功能和特性開發(fā)出來并正常運(yùn)行是能夠做到的。在這個(gè)過程中,需要讓你的技術(shù)團(tuán)隊(duì)參與確認(rèn),你想要給用戶帶來的功能和產(chǎn)品前端交互體驗(yàn)是能夠在后端通過編程來實(shí)現(xiàn)的。換句話說,你需要確保前端和后端系統(tǒng)之間的兼容性。為此,你必須咨詢你的技術(shù)人員并與其合作。
前端系統(tǒng)包括一個(gè)軟件、應(yīng)用程序或網(wǎng)站的可視化前端元素,它們可以被終端用戶直接查看和訪問。相反,后端系統(tǒng)由一個(gè)網(wǎng)站、軟件或信息系統(tǒng)的核心計(jì)算邏輯組成,這些系統(tǒng)是可以供用戶通過前端應(yīng)用程序或系統(tǒng)間接訪問的。
前端開發(fā)主要集中在開發(fā)的客戶端。前端開發(fā)人員將參與分析代碼、設(shè)計(jì)和調(diào)試應(yīng)用程序,同時(shí)確保提供一個(gè)無(wú)縫的用戶體驗(yàn)。你可以管理和控制人們?cè)跒g覽器或應(yīng)用中首先會(huì)看到的東西,作為前端開發(fā)者,你要負(fù)責(zé)網(wǎng)站的外觀、感覺和最終設(shè)計(jì)。
后端開發(fā)指的是服務(wù)器端的開發(fā),你主要關(guān)注的點(diǎn)是網(wǎng)站是如何工作的。這種類型的web開發(fā)通常由三個(gè)部分組成:一臺(tái)服務(wù)器、一個(gè)應(yīng)用和一個(gè)數(shù)據(jù)庫(kù)。后臺(tái)開發(fā)人員編寫的代碼是將數(shù)據(jù)庫(kù)信息傳到瀏覽器或應(yīng)用中。任何你無(wú)法輕易看到的東西,比如數(shù)據(jù)庫(kù)和服務(wù)器,都是后臺(tái)開發(fā)人員的工作。
從技術(shù)上講,前端流程包括緩存、同步、線框圖、UI設(shè)計(jì)、UI開發(fā)等。數(shù)據(jù)存儲(chǔ)、用戶管理、服務(wù)器端邏輯、數(shù)據(jù)集成和版本控制等都屬于后端開發(fā)。由于后端流程負(fù)責(zé)計(jì)算、業(yè)務(wù)邏輯、數(shù)據(jù)庫(kù)交互和性能等方面的操作,讓應(yīng)用運(yùn)行的大部分代碼都是后端代碼。
后端工程師要與前端設(shè)計(jì)人員保持持續(xù)的溝通,這一點(diǎn)至關(guān)重要。否則你就有可能陷入這樣一種危險(xiǎn)的境地:后端工程師無(wú)法開發(fā)前端設(shè)計(jì)人員想要的東西。
如果你想與后端基礎(chǔ)架構(gòu)一起來開發(fā)前端移動(dòng)APP,那么最重要的是你要對(duì)所要開發(fā)的功能進(jìn)行優(yōu)先級(jí)排序。讓你的后端工程師先開發(fā),這樣你的前端工程師才可以開發(fā)功能代碼。如果后端沒有很好地定義,也沒有相應(yīng)的功能,那么前端工程師的工作效率就會(huì)低很多。
開發(fā)APP的一個(gè)關(guān)鍵部分在于需要能成功地訪問你的應(yīng)用運(yùn)行的核心數(shù)據(jù)。你是會(huì)使用公共API密匙,還是會(huì)開發(fā)自己的抽象層?
API的全稱是Application Programming Interface(應(yīng)用程序接口),它代表了一種獨(dú)特的代碼,允許應(yīng)用與應(yīng)用之間(開發(fā)者)相互訪問。一些全球知名的應(yīng)用都有開放的API,比如Dropbox、Facebook、Instagram、Skype、Twitter和Uber,開發(fā)人員可以利用這些API來開發(fā)自己的應(yīng)用。
例如,流行的基于滑動(dòng)的交友應(yīng)用Tinder就使用了Facebook的API:Tinder用戶通過他們的Facebook主頁(yè)登錄Tinder,正因如此,Tinder就沒有必要從零開始打造自己的用戶群。
確定前端和后端兼容性需要涉及各種不同的UX(用戶體驗(yàn))和UI(用戶界面)設(shè)計(jì)流程,包括線框圖:
作為UX設(shè)計(jì)的一部分,線框圖是一個(gè)頁(yè)面或應(yīng)用界面的二維圖,主要展示的是內(nèi)容的空間分配和優(yōu)先級(jí),可用的功能以及預(yù)期的行為。
線框圖主要是灰色的,主要幫助:
(1)在APP的信息架構(gòu)與它的視覺設(shè)計(jì)之間搭起一座橋梁。
(2)闡明在用戶界面上所顯示的信息的一致方法。
(3)確定交互界面中的預(yù)期功能。
(4)通過確定給一個(gè)特定項(xiàng)目分配多少空間以及將該項(xiàng)目在屏幕上的位置,并進(jìn)而來進(jìn)行內(nèi)容的優(yōu)先級(jí)排序。
下面是Facebook的線框圖的例子:
在產(chǎn)品開發(fā)和優(yōu)化周期的不同階段都可以制作線框圖。例如,有些人會(huì)選擇在功能和特性階段早期制作線框圖,將線框圖與故事板和其它基本視覺表現(xiàn)的使用聯(lián)系起來。另一些人則在設(shè)計(jì)和開發(fā)階段制作線框圖,把它與對(duì)前端和后端兼容性的調(diào)查聯(lián)系起來。
正如 Sheila Olson所言,線框圖和故事板可以作為你用來支撐APP的后臺(tái)架構(gòu)的向?qū)А狝PI、數(shù)據(jù)圖、服務(wù)器、數(shù)據(jù)集成和推送通知服務(wù)。
對(duì)于那些在設(shè)計(jì)和開發(fā)階段制作線框圖的人來說,大概的順序是這樣的:
線框圖→ 低保真原型→高保真模型→代碼。
一旦完成了線框圖的制作設(shè)計(jì)后,就可以創(chuàng)建應(yīng)用的圖形用戶界面(GUI)了,這個(gè)界面是用來創(chuàng)建添加特定字體、顏色、主題和圖標(biāo)的地方。
正如 Aim Consulting的人所言,一旦設(shè)計(jì)元素完成之后,設(shè)計(jì)結(jié)果就能提供一個(gè)清晰的視覺方向,讓你的工程師了解預(yù)想的最終產(chǎn)品以及APP中的交互感覺、移動(dòng)和流動(dòng)應(yīng)該是怎樣的。
你可以通過利用專門為這個(gè)目的設(shè)計(jì)的軟件平臺(tái)來開發(fā)你的新APP(例如:應(yīng)用程序開發(fā)程序,其中很多都是拖放界面)。然而,我們建議你與一個(gè)專業(yè)的應(yīng)用開發(fā)代理商合作,因?yàn)榇砩淘趲椭髽I(yè)家成功地執(zhí)行他們的想法方面擁有豐富的經(jīng)驗(yàn)。
總而言之,進(jìn)行技術(shù)可行性評(píng)估,確定前端設(shè)計(jì)元素,并編寫后端架構(gòu),這可能需要1-2個(gè)月的時(shí)間才能完成。
階段4:測(cè)試與改進(jìn)
開發(fā)一款A(yù)PP的最后一個(gè)階段(除了實(shí)際發(fā)布和相關(guān)的營(yíng)銷活動(dòng)之外)是測(cè)試和改進(jìn)階段。
現(xiàn)在,從某種層面上說,測(cè)試是開發(fā)階段的一部分,因?yàn)槟愕某绦騿T和Alpha測(cè)試工程師在開發(fā)過程中會(huì)不斷地嘗試打破你的APP,以便在其發(fā)布之前發(fā)現(xiàn)并糾正代碼中存在的錯(cuò)誤。
Alpha測(cè)試是你的公司內(nèi)部的進(jìn)行的,因?yàn)槟愕拈_發(fā)人員(無(wú)論是員工還是外包)將會(huì)在你的APP發(fā)布到真實(shí)的終端用戶手里之前對(duì)應(yīng)用進(jìn)行標(biāo)準(zhǔn)化的診斷。
Beta測(cè)試的目的是在實(shí)驗(yàn)室外測(cè)試你的APP:當(dāng)真正的用戶有機(jī)會(huì)按照他們自己喜歡的方使用APP而不是按照你設(shè)想的方式使用APP時(shí),這時(shí)會(huì)發(fā)生什么呢?Beta測(cè)試的關(guān)鍵是要弄清楚當(dāng)日常用戶將你的應(yīng)用下載到他們的手機(jī)上并按照他們喜歡的方式使用應(yīng)用時(shí),你的應(yīng)用是否能支撐住。
Alpha測(cè)試需要發(fā)現(xiàn)主要的bug和小故障,而Beta測(cè)試需要能夠發(fā)現(xiàn)APP在真實(shí)用戶的真實(shí)使用環(huán)境中可能會(huì)出現(xiàn)的問題。
Alpha測(cè)試(開發(fā)階段)和Beta階段(測(cè)試階段)對(duì)于打造一款可靠的應(yīng)用都是必不可少的組成部分。
一旦你在你自己的開發(fā)團(tuán)隊(duì)中對(duì)應(yīng)用完成了Alpha測(cè)試后,你就應(yīng)該將APP開放給特定的公眾進(jìn)行Beta測(cè)試。
你如何才能為即將發(fā)布的應(yīng)用找到合格的Beta測(cè)試者呢?你可以通過一些基于Web的服務(wù)和平臺(tái)來找到測(cè)試者,包括BetaFamily、BetaList、ErliBird、PreApps、TestElf、Reddit和UserTesting等。
如果你已經(jīng)完成了一輪或幾輪Alpha測(cè)試,那么你的Beta測(cè)試階段需要花的時(shí)間應(yīng)該不會(huì)超過3-4周。
結(jié)語(yǔ)
在上面的時(shí)間基礎(chǔ)上,我們還為APP開發(fā)的四個(gè)階段分別還留有了一定的時(shí)間緩沖,因此我們最終計(jì)算出,開發(fā)完成一款應(yīng)用所需的最終時(shí)間大概在4-5個(gè)月。因此,我們會(huì)發(fā)現(xiàn),開發(fā)一款移動(dòng)APP是一個(gè)相當(dāng)漫長(zhǎng)而復(fù)雜的過程,需要大量的準(zhǔn)備、耐心和投入才能正確地執(zhí)行。
下面是我為大家的APP開發(fā)之旅提供的最后兩點(diǎn)建議:
(1)在制定APP開發(fā)時(shí)間表上,要保持適當(dāng)?shù)撵`活性,要做好延遲的準(zhǔn)備。很多無(wú)法預(yù)見的情況都會(huì)造成時(shí)間的拖延,如iOS新版發(fā)布、第三方集成發(fā)生的變化、質(zhì)量測(cè)試過程中出現(xiàn)的意想不到的問題等。在完成開發(fā)的過程中,要給自己留出一個(gè)緩沖時(shí)間,而不是一個(gè)嚴(yán)格的最后期限。你最不想看到的就是將APP發(fā)布到應(yīng)用商店后,發(fā)現(xiàn)這款應(yīng)用崩潰了或者出現(xiàn)其它更糟糕的情況。你只有一次給用戶留下第一印象的機(jī)會(huì),你肯定不想成為那些在被用戶下載后就被立即棄之不用的APP。
(2)確保你能夠在APP發(fā)布后依然可以隨時(shí)與開發(fā)團(tuán)隊(duì)溝通。如果你正在與外部供應(yīng)商合作開發(fā)你的APP,確保你在APP發(fā)布后通過托管服務(wù)協(xié)議或類似的合作伙伴關(guān)系來繼續(xù)與開發(fā)團(tuán)隊(duì)溝通,移動(dòng)APP并不是那種“一旦開發(fā)完成便終身無(wú)憂”的產(chǎn)品。
編譯組出品。
編輯:郝鵬程、王雅琪
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。