為什么最近iOS開發(fā)崗位那么多

準備用N篇文章隨便聊一聊這個最近幾年挺火的話題。
“iOS開發(fā)沒人要了”,第一次看到這句話,還是從一個表情開始。

2014年年底,做了4年Windows開發(fā)的我,買Windows筆記本從來沒舍得花費超過6000元的我,購買了第一個MacBookPro,花費1萬多元,港版。那時雖然身居二線城市的我,都已經(jīng)深刻感受到了“大眾創(chuàng)業(yè),萬眾創(chuàng)新”,并且付諸了行動,第二年就辭職,轉(zhuǎn)入了iOS開發(fā)的行列。

2016年初,一個做了多年銷售的同學(非計算機專業(yè))聯(lián)系我,說要做iOS開發(fā),簡單溝通交流后。同學就去參加了北京的一個培訓機構(gòu),幾個月后我們又電話了幾次。據(jù)同學說,他面試了40多家公司,終于入職成為一家創(chuàng)業(yè)公司的iOS開發(fā),薪水很滿意,而他的leader和他是一個培訓機構(gòu)的。
現(xiàn)在看來,大概2014-2018年這幾年是iOS開發(fā)最“紅火”的時期,也正是“大眾創(chuàng)新,萬眾創(chuàng)業(yè)“最紅火的時期。
怎么定義客戶端開發(fā)
有的公司把客戶端開發(fā)和前端開發(fā),統(tǒng)稱為FE(前端開發(fā))。本文不采用這種稱呼。
本文的客戶端開發(fā)主要是指iOS/Android,也包括macOS/Windows/Linux這些平臺的軟件開發(fā)。本文說的前端開發(fā),是指使用vue/react這些來源于瀏覽器技術(shù)的開發(fā)。
下文也會提到“Native開發(fā)”,主要是指“非瀏覽器技術(shù)”開發(fā),例如不使用JavaScript開發(fā)。通常Native開發(fā),使用的語言主要是編譯型,而不是解釋型。例如iOS/macOS使用Objective C和Swift來開發(fā),Android使用Java或Kotlin來開發(fā)。Windows使用C#來開發(fā),Linux使用C++來開發(fā)。(當然C++所有平臺都能開發(fā))。Flutter使用Dart,也是Native開發(fā)。
關(guān)鍵變化
從我看來,有以下幾個關(guān)鍵事件:
第一,2017年微信小程序發(fā)布。那一年創(chuàng)業(yè)公司減少的同時,業(yè)務(wù)流程為主的小公司又進一步選擇了微信小程序,導致客戶端需求減少。
第二,以美團、支付寶為栗子。公司內(nèi)部都有自己研發(fā)的小程序框架。很多業(yè)務(wù)流程為主的功能,都直接使用了自家的小程序開發(fā)。這些巨型app為了優(yōu)化包大小,也會要求一些對啟動性能不敏感的、低訪問量的業(yè)務(wù),從Native代碼重寫為小程序代碼。這也導致大公司內(nèi)部的一部分業(yè)務(wù)部門的iOS/Android職位減少,一些客戶端開發(fā)轉(zhuǎn)去開發(fā)小程序。
第三,小程序的性能仍然趕不上Native代碼。各大公司又都有自己的跨端框架,有自定義DSL的,用xml描述的,有用json描述的,有用typescript寫的,最終界面使用Native代碼來渲染。靈活性上趕不上小程序,但應(yīng)對公司的的各種活動也足夠了。這也導致一部分崗位不再需要iOS/Android開發(fā),只需要FE即可。
第四,ReactNative和Flutter等跨端技術(shù)的流行。由于客戶端的分裂(iOS和Android),多年來一直有不少人在追求跨端的路上不斷的探索,并且滿足了一部分場景的需求。這些場景下多數(shù)代碼只需要使用跨度技術(shù)開發(fā),少部分功能采用Native插件補充。
技術(shù)分布
然而,不管是小程序、ReactNative,還是Flutter,還是Native開發(fā),都各有優(yōu)缺點。都在某些場景下發(fā)揮各自的作用,互相補充。以下是從我理解的視角看到的技術(shù)分布情況。
第一,完全小程序?qū)崿F(xiàn)。這些應(yīng)用一般是業(yè)務(wù)為主,連接線下的應(yīng)用。例如瑞幸咖啡。
第二,ReactNative或者Flutter實現(xiàn)為主,少量Native代碼為輔助。這些應(yīng)用一般是中小公司開發(fā)的業(yè)務(wù)類型為主的應(yīng)用,更多是ToB產(chǎn)品。為了節(jié)省開發(fā)人力,大部分功能使用跨端技術(shù)開發(fā)。
第三,自定義DSL框架。簡單說就是用xml或者json描述界面,Native代碼來根據(jù)xml或json生成對應(yīng)的界面。這些應(yīng)用多數(shù)是大型的應(yīng)用,多數(shù)以Feed流為主,DSL框架用來實現(xiàn)某一個“內(nèi)容為主”的功能。例如美團首頁、微博首頁、支付寶首頁等等。這些Feed流中的內(nèi)容十分豐富,公司內(nèi)部也會開發(fā)專有的運營平臺,能很方便的配置下發(fā)不同的內(nèi)容。例如:刷微博時經(jīng)常看到的廣告。這些DSL框架有很多公開發(fā)布過原理,或者開源的,例如美團的MTFlexbox發(fā)布過文章,但不開源。阿里的Tangram,開源。
第四,更高級的DSL框架。例如滴滴的變色龍 https://github.com/didi/chameleon ,或者最近阿里開源的北海 https://github.com/openkraken/kraken 。這些框架可以使用前端技術(shù),開發(fā)出適應(yīng)多平臺的代碼。
第五,Native為主,其他技術(shù)為輔助。這些應(yīng)用的核心功能對性能有更高的要求,必須使用Native技術(shù)來開發(fā)。例如微信、淘寶、抖音等,都是Native實現(xiàn)核心功能。這些應(yīng)用的核心功能使用Native開發(fā),跨端技術(shù)、小程序、自定義DSL框架都在其中某個場景中發(fā)揮各自的優(yōu)勢。此外,多數(shù)獨立開發(fā)者開發(fā)的應(yīng)用也在這一類。這些小而美的應(yīng)用多數(shù)具有某些平臺的創(chuàng)新特性,很多需要使用到平臺獨有的能力。
崗位的需求
由此可見,iOS 的崗位需求就主要集中在的“第三四五”類型。這些巨型應(yīng)用的核心功能是Native開發(fā),每個應(yīng)用都有自己獨特的核心業(yè)務(wù)能力。微信的聊天、抖音的視頻,只能使用Native技術(shù)開發(fā)來保證良好的性能和體驗。“第三“和”第四“的DSL框架需要Native開發(fā)人員開發(fā)。”第五“的核心業(yè)務(wù)場景需要Native開發(fā)人員開發(fā)。
巨型應(yīng)用伴隨著巨型的公司,這些公司發(fā)展越來越大,就需要更多業(yè)務(wù)承載到應(yīng)用中,更多的承載能力就需要更細致的Native框架開發(fā)工作,更細致的框架開發(fā)工作就需要更多優(yōu)秀的Native開發(fā)人員。
而獨立開發(fā)者就是一個更有趣的需求了。很多有趣的創(chuàng)新來自獨立開發(fā)者。每年WWDC后的新系統(tǒng)的各種新特性都會被獨立開發(fā)者們各種玩耍,各種新奇的應(yīng)用出現(xiàn)一波爆發(fā)。對我看來,這里是Native開發(fā)最有趣的地方。
當然獨立開發(fā)者畢竟還是少一些,或者不能提供太多崗位。我們還是聊聊大公司里的Native開發(fā)分布。
第一,業(yè)務(wù)功能開發(fā),包括界面開發(fā)。產(chǎn)品經(jīng)理提出了需求,設(shè)計師給出了原型,開發(fā)需要實現(xiàn)。這是最基礎(chǔ)的開發(fā)工作,也是Native開發(fā)中最多的,也是最重要的。一個公司的創(chuàng)新想法到最終落地,趕超或甩開競爭對手的主要動力就是這里。聊到這里,有一部分人就開始出現(xiàn)“鄙視鏈”的思想了,覺得界面開發(fā)沒技術(shù)含量。我對這種觀點是堅決反對的。首先界面開發(fā)是很難的,各種VIPER、MVC、MVVM等模式都是為了處理界面開發(fā)的復(fù)雜度,優(yōu)秀的界面是很難開發(fā)出來的。界面開發(fā)中更有動畫這個方向,能準確、高性能的展示出設(shè)計師給出的動效,更是需要精心的開發(fā)。
第二,特定領(lǐng)域的功能開發(fā)。這個特定領(lǐng)域是指音視頻、直播、語音通訊,也包括上面提到的DSL框架開發(fā)。這里多數(shù)是跨端的技術(shù),多數(shù)情況下有很多C++開發(fā)的代碼。
有哪些招聘
(1)首先看一些通用的招聘網(wǎng)站,boss直聘上有大量的iOS招聘需求。
https://www.zhipin.com/job_detail/?query=iOS&city=101010100&industry=&position=
(此處省去截圖)
(2)脈脈App上幾乎每天每刻都能看到各種內(nèi)推iOS崗位的信息
之前遇到過一個脈脈上要轉(zhuǎn)崗的,結(jié)果很多人都說有hc。


僅截圖了兩個屏幕,還有很多條回復(fù)~
(3)曾經(jīng)網(wǎng)友們也匯總過一個崗位列表,可以訪問 https://yourenyao.app 查看。
(此處僅截圖一個職位)

能賺錢嗎
當然能,我認識的太多了,今天我們先“認真而又娛樂”的看一下下面的信息。后面的文章我們再詳細聊下iOS開發(fā)賺錢這個話題。
曾經(jīng)記得微博刷到過一位知名iOS開發(fā)網(wǎng)友說自己買寶馬的信息,但是找不到微博了,然后想問問有沒有人有截圖。

結(jié)果網(wǎng)友親自出來回應(yīng)。

最后有網(wǎng)友找到了截圖。

不只是車,還有房子。

