前言前端
若是你是一個 iOS 開發的新手,我能夠告訴你,這個職業的紅利期早已過去。隨着 APPL 的股價大跌以及內憂外患不斷,iOS 這個職業的恐慌指數在不斷的增高,已經對新手不太友好了。面試
若是你是一個 2-3 年的 iOS 從業人員,天天的工做內容就是畫畫界面、寫寫業務、調調接口,那你是時候改變一下本身的視角重新審視下將來的職業規劃。算法
若是你是一個3-5年的老鳥,掌握了必定的技術及資源,可能這篇文章的內容已經早已在你腦海中有段時日,只是缺少良好的契機。後端
因爲 iOS 開發,國內並無相關對口的專業,因此基本上大多數開發者都是經過自學進入市場的,有的因爲是科班出身、重點大學,幸運的進入大廠深造,一帆風順順水,使得其餘的開發者只能望其項背。網絡
做爲一個開發者,有一個學習的氛圍跟一個交流圈子特別重要,這是一個個人iOS交流羣:638302184,無論你是小白仍是大牛歡迎入駐 ,分享BAT,阿里面試題、面試經驗,討論技術, 你們一塊兒交流學習成長!架構
但多數普通的開發者都是經過培訓機構進入市場的,並無很深的技術基礎,沒有系統的學習過計算機原理的課程,只是從培訓機構快速學習了API的調用,對其本質不是很瞭解,也形成了進階的困難,因此如今市面上出現了不少在線技術教育,學習是很好的行爲,咱們這裏談的是如何精準的學習。工具
1、自我接納組件化
如何進行精準的學習?學習
首先咱們須要學會自我接納。作產品的對目標用戶會有用戶畫像, 用戶畫像存在的意義是不管你作的是什麼說的是什麼,並不能取悅全部人。這就是定位的意義,對自身也是同樣,你須要瞭解本身的定位才能進行進一步的規劃。區塊鏈
相同的環境造就相同的價值觀,因爲每一個人的價值觀不一樣,造就了這個五彩繽紛的世界。當咱們做爲 iOS 開發剛進入市場的時候,那時候只須要會畫一個 TableView 就能賺取可觀薪水的日子早已離咱們遠去。
隨着市場成熟後門檻也逐漸的提高,因此若是你只會用 Objective-C,畫界面、寫業務、調接口,如今須要加把勁了,由於這個時代正在淘汰這些低級工做。
有了改變本身認知的契機,咱們就來問問本身三個問題:
你所擁有的技術儲備真的是市場上須要的嗎?
面對層出不窮的新興技術,如何才能作好技術選型?
你真的有把握可以在技術這條路上走到底嗎?
2、市場數據
先不急着回答上述的問題,咱們先看一下市場所呈現的數據,而不是人云亦云,否則就很容易被如今的某些知識付費收智商稅,鼓吹碎片化學習。
沒有數據支撐純靠思辨的產物不是知識,你僅僅得到的是獲取知識的感受。知識是須要全面系統的學習並進行場景驗證的,因此在如何規劃以前先看看數據。
上圖是艾瑞指數的數據,不用去管媒體如何煽動,數據代表 iOS 的佔有量仍是比較穩定的,因此 iOS 沒有人要了可能真的只是一句玩笑,由於有市場就會有需求。
咱們再來看 iOS 設備的分佈圖, 能夠發現目前主要羣體仍是使用的 iPhone6/6s 的設備,能夠看到 iPhone8/8P/XR,並無賣的很好,換機頻率降低是不爭的事實。
但整個行業都是如此,因此也不用太悲觀。因此仍是以提高自身技術爲先。
3、技術儲備
技術儲備是說明一個開發者具體的能力體現的,因此不斷學習是每一個技術人天天須要完成的課題。以 iOS 舉例,iOS 基本技術無外乎UI、網絡、業務三個方面,也就是畫界面、寫業務、調接口。
這是基礎能力,但你縱覽整個大前端技術棧,本質都是這三個方面,因此不少的開發者會想要深刻學習,會看一些官方或者是三方的一些源碼,並寫一些分析放在博客上,自覺得理解了做者的想法,沾沾自喜。就若有些人會看 Runtime,但不多人知道 Facebook 的 Fishhook,畢竟掌握後者的技術儲備和 Runtime 不是一個量級的。
這裏假設你已經熟悉了 Runtime 源碼中的底層實現,瞭解了 OC 的實現機制,但你並不知道這些東西的使用場景在哪裏,爲何大廠能夠用這些作一些 APM 的東西,而你並不知道如何入手。這是由於你的技術儲備不足,再有就是你的視角產生了誤差。
C/C++/Linux/ASM, 這些基礎是必須瞭解,學完前者後,再看 Runtime 源碼,就會感受很是輕鬆,沒有任何的困難。
若是你只有技術的視角,覺得技術可以解決任何問題。事實是技術只是一個工具。工具就是可替換的,而工具只會變得愈來愈簡單,愈來愈順手。你的若是隻被技術限制住,你的競爭力會逐年下降。
4、聊聊面試
網上只要發隨便發一篇面經,就會有不少人關注,筆者有幸面試過不少大廠,如餓了麼、京東、美團、攜程、頭條、招行等,面試題無外乎就是,OC原理、UIKit、網絡、線程、組件化、算法、架構等。目前對 Swift 和跨平臺插件化也會有一些涉及,這個部分取決於你所面試的業務線。可是,算法必考,架構必談。
其實若是你是一個有技術儲備的合格的開發者,經過面試對你來講並非一個很是困難的事情,由於這些東西真的並不難,都是一些平常涉及的東西,常規操做而已。
5、談談全棧
對於技術提高會分爲兩條線:深度和廣度。
算法有叫「深度優先」和「廣度優先」的,這兩條線並無孰優孰劣,看你所在的場景。在知識付費領域的概念就是,T 字型人才,80%人才,100%人才,具體選擇那條線沒有什麼實際的意義。
在先進互聯網技術棧被籠統的分爲:前端、後端、移動端、數據端。個人觀點是全棧頗有必要,首先你須要瞭解你的價值不取決於你的能力,而是市場的稀缺性。成爲 100% 的專才,的確能夠拿到頭部市場,但成本大風險高,而作一個 80% 的通才,是一個對普通人比較友好的選擇,而若是你已是一個有技術儲備合格的開發者,T 字型發展也是一個合理的選擇。
6、如何選型
如今新興技術層出不窮,光 iOS 方向就有 ReactiveCocoa、ReactNative、Flutter等,還有人工智能、區塊鏈等新興技術,因此吾生也有涯,而知也無涯,以有涯隨無涯,殆已!
技術不可以脫離產品而獨立實現,產品不能脫離運營而獨立存活, 運營脫離了用戶也沒有了意義。你要理解互聯網的本質實際上是人的鏈接,理解了這層邏輯, 反推來看你的視野就會清晰不少,由用戶產生了需求,運營用戶而產生了羣體,分析羣體而打造產品,實現產品才須要技術,因此在沒有很大基數的用戶的前提下,對技術的追求是沒有任何意義的。而當有了用戶,就會知道你該如何技術選型,最經濟的方法就是選擇那些穩定且成效快的,這也是爲何三方庫存在的本質。
7、技術以外
技術本質只是工具,互聯網是人與人的鏈接,是思想的碰撞。這是爲何一些大V僅僅是運營粉絲就可以賺的可觀的收益,而那些明星級別的頂級流量自沒必要說。
因此一個優秀的開發者也須要學習運營和產品方面的相關知識,須要瞭解用戶畫像,須要瞭解人性,這樣在懟產品的時候就會更有底氣。
幸運的是,你成爲產品簡單,產品成爲你難。能夠試着作一些新媒體及產品,並用技術實現,你會發現實現自個人同時,收穫了更多的快樂。固然對於不熟悉的東西,每走一步都異常艱難。
8、提高視野
現今世界最厲害的兩個武器:一個是技術,一個是傳播。每一個時代都是類似的,例如之前一邊是王權,一邊是宗教。
做爲開發者,技術是賴以生存的本能,而你須要提高的是你的傳播能力。那些人作公衆號、微博、抖音、技術博客的本質就是爲了傳播,而我寫這篇文章很大一部分緣由是爲了鍛鍊個人文筆,更好地運營新媒體,創造屬於本身品牌的價值。
和技術儲備同樣,須要提高知識儲備,當知識儲備到了必定的階段,輸出倒逼輸入。你就會有發表本身觀點的欲求,也會從看博客到寫博客的階段。而現實是你能夠靠技術進行變現。
固然變現並無那麼簡單,須要學習的東西不少。首先你須要瞭解瞭解技術,各類前沿技術和將來的趨勢,看看大佬們的想法,好比獲得裏的萬維鋼和王煜全的專欄,對提高你的視野頗有幫助,但若是你想要從中學習到知識,仍是別天真了,老老實實的系統學習,動手去作。記住,沒有數據支撐,純靠思辨的產物不是知識。