該死,原生移動應用的開發成本太高了!
我們遇到了一個臨界點。除去少數幾個特別的的用例之外,使用原生框架和原生應用開發團隊構建、維護移動應用再也沒有意義了。 -- Nader Dabit
本文導航
-這一切對於我們意味著什麼? …… 12%
-能不能拋棄移動應用,僅面向 Web 呢? …… 19%
-那混合開發呢? …… 31%
-解決方案 …… 41%
-在產品中特別注意使用 React Native …… 62%
-Facebook …… 63%
-Instagram …… 69%
-Airbnb …… 71%
-Vogue …… 74%
-沃爾瑪 …… 78%
-微軟 …… 81%
-結論 …… 86%
-公司 …… 87%
-開發者 …… 89%
編譯自: https://hackernoon.com/the-cost-of-native-mobile-app-development-is-too-damn-high-4d258025033a作者: Nader Dabit
譯者: fuowang
一個有價值的命題
我們遇到了一個臨界點。除去少數幾個特別的的用例之外,使用原生框架和原生應用開發團隊構建、維護移動應用再也沒有意義了。
在過去的幾年,原生移動應用開發的費用螺旋式上升,無法控制。對沒有大量資金的新創業者來說,創建原生應用、MVP 設計架構和原型的難度大大增加。現有的公司需要抓住人才,以便在現有應用上進行迭代開發或者構建一個新的應用。要盡一切努力才能留住最好的人才,與 世界各地的公司[3] 拼盡全力爭個[4]高[5]下[6]。
這一切對於我們意味著什麼?
如果你的公司很大或者有足夠多的現金,舊思維是隻要你在原生應用開發方面投入足夠多的資金,就高枕無憂。但事實不再如此。
Facebook 是你最不會想到的在人才戰中失敗的公司(因為他們沒有失敗),它也遇到了原生應用方面金錢無法解決的問題。他們的移動應用龐大而又複雜,他們發現編譯它竟然需要 15 分鐘[8]。這意味著哪怕是極小的用戶界面改動,比如移動幾個點,測試起來都要花費幾個小時(甚至幾天)。
除了冗長的編譯時間,應用的每一個小改動在測試時都需要在兩個完全不同的環境(IOS 和 Android)實施,開發團隊需要使用兩種語言和框架工作,這趟水更渾了。
Facebook 對這個問題的解決方案是 React Native[9]。
能不能拋棄移動應用,僅面向 Web 呢?
一些人認為移動應用的末日已到[10]。儘管我很欣賞、尊重 Eric Elliott[11] 和他的工作,但我們還是通過考察一些近期的數據,進而討論一下某些相反的觀點:
人們使用 APP 的時間佔使用手機總時長的 90%
目前世界上有 25 億人在使用移動手機。這個數字增長到 50 億的速度會比我們想象的還要快。[13] 在正常情況下,丟掉 45 億人的生意,或者拋棄有 45 億人使用的應用程序是絕對荒唐且行不通的。
老問題是原生移動應用的開發成本對大多數公司來說太高了。然而,面向 web 的開發成本也在增加。在美國,JavaScript 開發者的平均工資已達到 $97,000.00[14]。
伴隨著複雜性的增加以及對高質量 web 開發的需求暴漲,僱傭一個 JavaScript 開發者的平均價格直逼原生應用開發者。論證 web 開發更便宜已經沒用了。
那混合開發呢?
混合應用是將 HTML5 應用內嵌在原生應用的容器裡,並且提供實現原生平臺特性所需的權限。Cordova 和 PhoneGap 就是典型的例子。
如果你想構建一個 MVP 設計架構、一個產品原型,或者不擔心對原生應用的模仿的用戶體驗,那麼混合應用會很適合你。但謹記如果你最後想把它轉為原生應用,整個項目都得重寫。
此領域有很多創新的東西,我最喜歡的當屬 Ionic Framework[15]。混合開發正變得越來越好,但還不如原生開發那麼流暢自然。
有很多公司,包括最嚴峻的初創公司,也包括大中規模的公司,混合應用在質量上的表現似乎沒有滿足客戶的要求,給人的感覺是活糙、不夠專業。
聽說應用商店裡的前 100 名都不是混合應用[16],我沒有證據支持這一觀點。如果說有百分之零到百分之五是混合應用,我就不懷疑了。
我們最大的錯誤是在 HTML5 身上下了太多的賭注[17] — 馬克·扎克伯格
解決方案
如果你緊跟移動開發動向,那麼你絕對聽說過像 NativeScript[18] 和 React Native[19] 這樣的項目。
通過這些項目,使用由 JavaScript 寫成的基本 UI 組成塊,像常規 iOS 和 Android 應用那樣,就可以構建出高質量的原生移動應用。
你可以僅用一位工程師,也可以用一個專業的工程師團隊,通過 React Native 使用 現有代碼庫[20] 或者 底層技術[21] 進行跨平臺移動應用開發、原生桌面開發[22],甚至還有 web 開發。把你的應用發佈到 APP Store 上、 Play Store 上,還有 Web 上。如此可以在保證不喪失原生應用性能和質量的同時,使成本僅佔傳統開發的一小部分。
通過 React Native 進行跨平臺開發時重複使用其中 90% 的代碼也不是沒有的事,這個範圍通常是 80% 到 90%。
如果你的團隊使用 React Native, 既可以消除團隊之間的分歧,也可以讓 UI 和 API 的設計更一致,還可以加快開發速度。
在編譯時不需要使用 React Native,在保存時應用可以實時更新,也加快了開發速度。
React Native 還可以使用 Code Push[23] 和 AppHub[24] 這樣的工具來遠程更新你的 JavaScript 代碼。這意味著你可以向用戶實時推送更新、新特性,快速修復 bug,繞過打包、發佈這些工作,繞過 App Store、Google Play Store 的審核,省去了耗時 2 到 7 天的過程(App Store 一直是整個過程的痛點)。混合應用的這些優勢原生應用不可能比得上。
如果這個領域的創新力能像剛發行時那樣保持,將來你甚至可以為 Apple Watch[25]、Apple TV[26],和 Tizen[27] 這樣的平臺開發應用。
NativeScript 依然是個相當年輕的框架驅動,Angular 版本 2,上個月剛剛發佈測試版[28]。但只要它保持良好的市場份額,未來就很有前途。
你可能還不知道世界上一些最能創新、最大的科技公司在這類技術上下了很大的賭注,特別是 React Native[29]。
我供職過的多家企業以及世界 500 強公司目前都在轉移至 React Native。
在產品中特別注意使用 React Native
看下面的例子,這是一個使用 React Native 技術的著名應用列表[30]。
Facebook
Facebook 的兩款應用 Ads Manager[31] 和 Facebook Groups[32] 都在使用 React Native 技術,並且將會應用到實現動態消息的框架上[33]。
Facebook 也會投入大量的資金創立和維護像 React Native 這樣的開源項目,而且開源項目的開發者最近已經創建很多了不起的項目,這是很了不起的工作,像我以及全世界的業務每天都從中享受諸多好處。
Instagram
Instagram 應用的一部分已經使用了 React Native 技術。
Airbnb
Airbnb 的很多東西正用 React Native 重寫。(來自 Leland Richardson[34])
超過 90% 的 Airbnb 旅行平臺都是用 React Native 寫的。(來自 spikebrehm[35])
Vogue
Vogue 這麼突出不僅僅因為它也用 React Native 寫成,而是因為它被蘋果公司評為年度十佳應用之一[36]。
沃爾瑪
查看這篇 Keerti[37] 的文章[38]來了解沃爾瑪是怎樣看待 React Native 的優勢的。
微軟
微軟在 React Native 身上下的賭注很大。
它早已發佈多個開源工具,包括 Code Push[39]、React Native VS Code[40],以及 React Native Windows[41],旨在幫助開發者向 React Native 領域轉移。
微軟考慮的是那些已經使用 React Native 為 iOS 和 Android 開發應用的開發者,他們可以重用高達 90% 的代碼,不用花費太多額外的時間和成本就可將應用發佈到 Windows 上。
微軟對 React Native 生態的貢獻十分廣泛,過去幾年在開源界的表現很搶眼。
結論
移動應用界面設計和移動應用開發要進行範式轉變,下一步就是 React Native 以及與其相似的技術。
公司
如果你的公司正想著削減成本、加快開發速度,而又不想在應用質量和性能上妥協,這是最適合使用 React Native 的時候,它能提高你的淨利潤。
開發者
如果你是一個開發者,想進入一個將來會快速發展的領域,我強烈推薦你把 React Native 列入你的學習清單。
如果瞭解 JavaScript,你會入門很快,工具我首推 Exponent[42],其他的就看你怎麼想了。使用 Exponent 開發者可以輕鬆的編譯、測試和發佈跨 Windows 和 MacOS 兩個平臺的 React Native 應用。
如果已經是一位原生應用開發者,你更會受益匪淺。因為在需要時你能夠勝任深入研究原生應用邊緣的工作。雖然不會經常用到,但在團隊需要時這可是十分寶貴的能力。
我花了很多時間來學習、指導別人 React Native。因為它讓我十分激動,而且使用這個框架創作應用也是我一個平淡的小樂趣。
感謝閱讀。
作者簡介:
教授和構建 React Native 應用的軟件開發專家
via: https://hackernoon.com/the-cost-of-native-mobile-app-development-is-too-damn-high-4d258025033a
作者:Nader Dabit[43] 譯者:fuowang 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出
[1]: iOS,Android - http://www.indeed.com/salary
[2]: JavaScript - http://www.payscale.com/research/US/Skill=JavaScript/Salary
[3]: 世界各地的公司 - http://blogs.wsj.com/cio/2016/09/30/tech-talent-war-moves-to-africa/
[4]: 爭個 - http://www.bizjournals.com/charlotte/how-to/human-resources/2016/12/employers-offer-premium-wages-skilled-workers.html
[5]: 高 - https://www.cnet.com/news/silicon-valley-talent-wars-engineers-come-get-your-250k-salary/
[6]: 下 - http://www.nytimes.com/2015/08/19/technology/unicorns-hunt-for-talent-among-silicon-valleys-giants.html
[7]: 對比 - http://www.comentum.com/mobile-app-development-cost.html
[8]: 他們發現編譯它竟然需要 15 分鐘 - https://devchat.tv/react-native-radio/08-bridging-react-native-components-with-tadeu-zagallo
[9]: React Native - https://facebook.github.io/react-native/
[10]: 一些人認為移動應用的末日已到 - https://medium.com/javascript-scene/native-apps-are-doomed-ac397148a2c0#.w06yd23ej
[11]: Eric Elliott - https://medium.com/u/c359511de780
[12]: 時間 - http://www.smartinsights.com/mobile-marketing/mobile-marketing-analytics/mobile-marketing-statistics/attachment/percent-time-spent-on-mobile-apps-2016/
[13]: 這個數字增長到 50 億的速度會比我們想象的還要快。 - http://ben-evans.com/benedictevans/2016/12/8/mobile-is-eating-the-world
[14]: 在美國,JavaScript 開發者的平均工資已達到 $97,000.00 - http://www.indeed.com/salary?q1=javascript+developer&l1=united+states&tm=1
[15]: Ionic Framework - https://ionicframework.com/
[16]: 聽說應用商店裡的前 100 名都不是混合應用 - https://medium.com/lunabee-studio/why-hybrid-apps-are-crap-6f827a42f549#.lakqptjw6
[17]: 我們最大的錯誤是在 HTML5 身上下了太多的賭注 - https://techcrunch.com/2012/09/11/mark-zuckerberg-our-biggest-mistake-with-mobile-was-betting-too-much-on-html5/
[18]: NativeScript - https://www.nativescript.org/
[19]: React Native - https://facebook.github.io/react-native/
[20]: 現有代碼庫 - https://github.com/necolas/react-native-web
[21]: 底層技術 - https://facebook.github.io/react/
[22]: 原生桌面開發 - https://github.com/ptmt/react-native-macos
[23]: Code Push - http://microsoft.github.io/code-push/
[24]: AppHub - https://apphub.io/
[25]: Apple Watch - https://github.com/elliottsj/apple-watch-uikit
[26]: Apple TV - https://github.com/douglowder/react-native-appletv
[27]: Tizen - https://www.tizen.org/blogs/srsaul/2016/samsung-committed-bringing-react-native-tizen
[28]: 上個月剛剛發佈測試版 - http://angularjs.blogspot.com/2016/09/angular2-final.html
[29]: React Native - https://facebook.github.io/react-native/
[30]: 這是一個使用 React Native 技術的著名應用列表 - https://facebook.github.io/react-native/showcase.html
[31]: Ads Manager - https://play.google.com/store/apps/details?id=com.facebook.adsmanager
[32]: Facebook Groups - https://itunes.apple.com/us/app/facebook-groups/id931735837?mt=8
[33]: 將會應用到實現動態消息的框架上 - https://devchat.tv/react-native-radio/40-navigation-in-react-native-with-eric-vicenti
[34]: Leland Richardson - https://medium.com/u/41a8b1601c59
[35]: spikebrehm - https://medium.com/u/71a78c1b069b
[36]: 因為它被蘋果公司評為年度十佳應用之一 - http://www.highsnobiety.com/2016/12/08/iphone-apps-best-of-the-year-2016/
[37]: Keerti - https://medium.com/@Keerti
[38]: 文章 - https://medium.com/walmartlabs/react-native-at-walmartlabs-cdd140589560#.azpn97g8t
[39]: Code Push - http://microsoft.github.io/code-push/
[40]: React Native VS Code - https://github.com/Microsoft/vscode-react-native
[41]: React Native Windows - https://github.com/ReactWindows/react-native-windows
[42]: Exponent - https://medium.com/u/df61a4267d7a
[43]: Nader Dabit - https://hackernoon.com/@dabit3