2016年末閒談 iOS 開發的未來

發表於2016-11-01
11225849-c3d2191a55808830

移動開發市場潮流湧動,好多人都會問iOS開發的前景這樣的問題,今天我就瞎扯一下我眼中的未來,純主觀非理性,愛看看。

Swift怎麼樣

Swift很好,就像你的前女友一樣好。

12225849-69cbe99165d7097c

得益於swift的開源,以及蘋果的號召力,swift發展的很好。已經得到了廣大開發者的一致認可。蘋果自己也很重視,新的一些lib和app已經用swift編寫。國外大廠比如Uber、LinkedIn已經用swift開發了很長時間。

這些行動證明了swift已經不是一門玩具語言可以大膽的在開發中使用。雖然眼下還有ABI不穩定,和Xcode索引會讓人覺得慢等問題。但是相比OC的巨大進步,更多開發者選擇了忍受,希望蘋果能夠持續優化。

但是OC的runtime依然是無可取代,從商業角度看也沒有理由取締它。所以兩者還會互相存在一段時間。但是我相信swift佔有率超過OC的節點很快就會到來。

我覺得很多人堅持OC是因為他們只會OC。

13225849-3e5bdd54384bda73

移動市場已經飽和

2008年蘋果釋出第一個SDK,同年年末安卓1.0釋出。移動開發元年。移動開發從無到有,至今已經遍及生活各個方面。從今年手機的出貨量和身邊的觀察很容易得到這樣的結論:移動開發這塊蛋糕的高速增長已經結束了。

這意味著什麼呢?在一個行業高速增長的時候,人才一定是供不應求。所以公司被迫接收很多新手,對新人很友好。相信大家也見證了過去一兩年裡的就業奇蹟:是個人就能上。

所以對於很多隻是為了餬口的人而言:這扇門已經關閉了。你們繼續去追下一個熱潮吧。聽說JavaScript要統一天下了,要不您去21天學個前端?

言歸正傳,那移動開發是不是就要大勢已去了呢?
同學,恕我直言:不是移動開發不行,是你不行。

在移動浪潮前,網際網路流量全在桌面,問2008年的時候有條件坐在電腦前上網的人群有多少?再看現在,微信這個季度的活躍使用者5億多。雖然iOS的份額只有百分十幾。但是這是無法被忽略的百分之十幾,公司但凡有移動業務肯定會做iOS客戶端。

所以iOS開發的市場依然存在,而且不是一塊小蛋糕。

Hybrid?是的前端要來搶我們飯碗了

14225849-6c04f3843bed03db

在移動開發前幾年的時間裡,想在移動端做功能只有開發Native app這麼一條路。但是商業就是如此,隨著需求增大最後總是會有提高效率或者一些自動化的方案出來。

相信很多人都有看到類似的文章:你不需要開發一個app只需要一個公眾號就可以了。前陣子微信推出小程式沒見過世面的吃瓜群眾們也是激動了一番。其實這只是一筆經濟賬。現在對於產品而言,有了更多的選擇。如果一個產品本身對native的能力要求就很低,當然會選擇更便宜的方式了。

除了微信小程式這樣嵌入在微信裡的方案。由傳統web端發起的新技術Progressive Web App也很值得關注。簡單的說web也可以有一個方便的渠道生成一個本地的app,獲得一些推送、本地儲存等一些能力。

Progressive Web App(下文簡稱pwa)給傳統web提供了新的疆土。有的產品除了選擇公眾號,還可以選擇web app!在10月底上海的Qcon大會上有幸偶遇了前端傳奇hax(國內前端我只服hax)。賀老師開口一句“以我二十年的前端經驗來看”我就給跪了。hax告訴我pwa是有技術優勢的。雖然未來幾年各大廠商為了商業目的不知道最後移動開發會變成怎樣的格局。但是pwa會有它的一席之地。

稍微有一些無奈的是iOS目前還不支援pwa。蘋果去年宣佈5年內會支援這個標準,然而除apple外其他廠家已經全部支援,現在安卓上是支援的。所以雖然這件事現在還沒發生,但是不久的將來應該會有新的進展。

總而言之,很多移動產品不再需要開發一個native app了。

15225849-e0841ac8f5fa5b78

但是,凡事不要難過的太早,說不定還有更慘的呢?

React Native VS Weex

我覺得那些用RN的人最後都會哭。算了,我知道你們會選擇倔強。

16225849-3d26ce2ae3a85f57

先從感情上說。你是相信馬雲爸爸還是相信404伯格?

17225849-bce7a165ddc1a878

這次Qcon最大的收穫莫過於知道了RN是個大坑。
RN現在的硬傷有:

  • 包無法增量更新
  • 長列表沒有優化(災難性tableview cell沒有複用)
  • 不支援web
  • debug?[黑人問號臉]

當然了這些不是實現不了,是的,你完全可以自己實現上面的三個難題。但是如果已經有一個現成的方案呢?

是的,阿里的weex已經走在RN的前面。我不知道是阿里的996更努力還是馬爸爸砸的錢就是多,但是事實就是如此。RN是一個純開源的專案,所以不可能將來RN有個殺手級的功能weex沒有。比的就是誰走的更快,看的更遠。

大家要有自信,在移動開發上,我們的實力已經是世界一流了。

所以,對於native不幸的訊息來了:即便是native的app,很多功能也要交給前端實現了。這筆賬是非常清楚的:原來需要一前端,一個iOS,一個安卓。現在只需要前端寫一次。粗粗一算節省了三分二的成本。但是就像java一開始就吹的run anywhere。什麼技術都有它的應用場景,不是能用大家就用這個技術。

可是根據我的觀察,在優化了效能問題後,一個app裡有非常多的頁面確實不需要native寫了,用這種weex的方案就能解決了。而且開發效率的提升是如此的明顯,將來會有大量的頁面不再需要native寫程式碼發版了。

我覺得我的措辭還不夠強烈,大家鎮定一下我再說一遍:

18225849-48b3917e4a031c91

50%的native需求將來會被weex這樣的方案取代。

聽說你現在很難過?凡事不要難過的太早,說不定還有…更…

移動開發者的未來

首先你要接受一個事實,我們生活在一個科技變革最快的時代。很不幸軟體行業又是所有行業變化最劇烈的行業。摩爾定律每18個月計算能力翻一倍。在其他行業什麼東西能每兩年增加一倍而且持續幾十年?

換句話說,選擇了軟體開發,過去二十年裡除了C++,C,Java至今依然大量需求,選擇其他技術或者語言都經歷了潮起潮落。那麼從開始有程式設計師至今有多少語言呢?所以說,一門技術興起然後被冷落,如果用十年的尺度來看是非常正常的。我們的父輩在七十年代也不相信國企會下崗。你也不要抱有熟悉了一門技術可以養活你一輩子。

你怎麼理解程式設計?

某門技術或者某個程式語言說到底只是工具罷了。原來你用筷子,後來你來到了西餐廳,只有刀叉你就吃不了飯了?活該你餓死。

題圖:星際爭霸2-虛空之遺

相關文章