GitHub Repo:coderZsq.project.ios
Follow: coderZsq · GitHub
Resume: coderzsq.github.io/coderZsq.pr…
日常扯淡
大半年沒有更新文章了, 可能是對自己寫的內容有要求吧, 不想寫一些如OC底層, 逆向入門這些像內容洗稿, 東拼西湊的偽原創, 修修改改換換順序就又是一篇完全沒有意義的文章. 如果你獲取技術大部分的手段是看技術部落格的話, 是的, 是時候調整你的視角, 擴充套件你的視野, 對自己有更具體的要求了.
如果你是一個iOS開發的新手, 是的, 這個職業的紅利期早已過去, 隨著APPL的股價大跌, 以及內憂外患不斷, iOS這個職業的恐慌指數在不斷的增高, 已經對新手不太友好了, 如果你是一個2-3年的iOS從業人員, 每天的工作內容就是畫畫介面, 寫寫業務, 調調介面, 那你是時候改變一下自己的視角從新審視下未來的職業規劃, 如果你是一個3-5年的老鳥, 掌握了一定的技術及資源, 可能這篇文章的內容已經早已在你腦海中有段時日, 只是缺乏良好的契機, 如果你是6-10年的大佬, 呵呵, 這個等級的大佬是不會耗費時間在看技術部落格上了, 自然也不會看到這篇文章.
由於iOS開發, 國內並沒有相關對口的專業, 所以基本上大多數開發者都是通過自學進入市場的, 有的由於是科班出身, 重點大學, 幸運的進入大廠深造, 一路順風順水, 使得其他的開發者只能望其項背, 多數普通的開發者都是通過培訓機構進入市場的, 並沒有很深的技術基礎, 沒有系統的學習過計算機原理的課程, 只是從培訓機構快速學習了API的呼叫, 對其本質不是很瞭解, 也造成了進階的困難, 所以現在市面上出現了很多線上技術教育, 不壞, 學習是很好的行為, 我們這裡談的是如何精準的學習.
自我接納
如何進行精準的學習, 首先我們需要學會自我接納, 做產品的對目標使用者都會有使用者畫像, 使用者畫像存在的意義是無論你做是什麼東西說什麼話, 都無法取悅所有人, 這就是定位的意義, 而對自身也是一樣, 你需要了解自己的定位才能進行進一步的規劃.
相同的環境造就相同的價值觀, 真是由於每個人的價值觀不同, 造就了這個五彩繽紛的世界, 當我們作為iOS開發剛進入市場的時候, 那時候只需要會畫一個TableView就能賺取可觀薪水的日子早已離我們而且, 市場成熟後門檻也逐漸的提升, 所以如果你只會用Objective-C, 畫介面, 寫業務, 調介面, 那真的需要加把勁了, 因為這個時代正在淘汰這些低階工作.
有了改變自己認知的契機, 我們就來問問自己三個問題:
- 你所擁有的技術儲備真的是市場上需要的嗎?
- 面對層出不窮的新興技術, 如何才能做好技術選型?
- 你真的有把握能夠在技術這條路上走到底嗎?
市場資料
先不急著回答上述的問題, 在做所有決定之前我們需要看一下市場所呈現的資料, 而不是人云亦云, 不然就很容易被現在的某些知識付費收智商稅, 鼓吹碎片化學習, 記住, 沒有資料支撐純靠思辨的產物不是知識, 你僅僅獲得的是獲取知識的感覺. 知識是需要全面系統的學習並進行場景驗證的, 所以在如何規劃之前先看看資料.
上圖是艾瑞指數的資料, 不用去管媒體如何煽動, 資料表明iOS的佔有量還是比較穩定的, 所以iOS沒有人要了可能真的只是一句玩笑, 因為有市場就會有需求.
我們再來看iOS裝置的分佈圖, 可以發現目前主要群體還是使用的iPhone6/6s的裝置, 可以看到iPhone8/8P,XR, 並沒有賣的很好, 換機頻率下降是不爭的事實. 但整個行業都是如此, 所以也不用太悲觀. 所以還是以提升自身技術為先.
技術儲備
技術儲備是很能說明一個開發者具體的能力體現的, 所以不斷的學習是每一個做技術每天需要完成的課題, 以iOS舉例, iOS基本技術無外乎, UI, 網路, 業務, 三個方面, 也就是上述的, 畫介面, 寫業務, 調介面, 是的, 這是基礎能力, 但你縱覽整個大前端技術棧, 本質都是這三個方面, 所以就算你在這些地方花費再多的精力, 收益是很有限的, 所以很多的開發者會想要深入學習, 會看一些官方或者是三方的一些原始碼, 並寫一些分析放在部落格上, 自以為是的以為理解了作者的想法, 沾沾自喜. 挺好, 幻象會使人快樂, 就如有些人會看runtime, 但很少人知道Facebook的fishhook, 畢竟掌握後者的技術儲備和runtime不是一個量級的.
這裡假設你已經熟悉了runtime原始碼中的底層實現, 瞭解了OC的實現機制, 但你並不知道這些東西的使用場景在哪裡, 為什麼大廠可以用這些做一些APM的東西, 而你並不知道如何入手, 首先是你的技術儲備不足, 再有就是你的視角產生了偏差.
技術儲備不足, 這是先天缺陷, 只能後天彌補, C/C++/Linux/ASM, 如果你想深入理解, 這些逃不過去, 你有這些基礎的話, 再看runtime原始碼, 就會感覺非常輕鬆, 沒有任何的困難.
視角的問題在於, 你只有技術的視角, 只會用技術來解決問題, 自以為是的以為技術能夠解決任何問題, 而事實是, 技術只是一個工具, 工具就是可替換的, 而工具只會變得越來越簡單, 越來越順手. 你的如果只被技術限制住, 你的競爭力會逐年降低.
聊聊面試
面試是一個非常熱的話題, 只要發隨便發一篇面經, 就會有很多人關注, 筆者有幸面試過很多大廠, 如餓了麼, 京東, 美團, 攜程, 頭條, 招行等, 面試題無外乎就是, OC原理, UIKit, 網路, 執行緒, 元件化, 演算法, 架構, 全部都在射程範圍之內, 目前對Swift和跨平臺外掛化也會有一些涉及, 這個部分取決於你所面試的業務線, 但是, 演算法必考, 架構必談.
其實如果你是一個有技術儲備的合格的開發者, 通過面試對你來說並不是一個非常困難的事情, 因為這些東西真的並不難, 都是一些日常涉及的東西, 常規操作而已.
談談全棧
對於技術提升會分為兩條線, 就是深度和廣度, 如果你涉及過演算法, 你就會知道深度優先和廣度優先, 這兩條線並沒有孰優孰劣, 看你所在的場景, 在知識付費領域的概念就是, T字型人才, 80%人才, 100%人才, 具體選擇那條線沒有什麼實際的意義,
在先進網際網路技術棧被籠統的分為, 前端, 後端, 移動端, 資料端, 我的觀點是, 全棧很有必要, 首先你需要了解一個觀點, 你的價值不取決於你的能力, 而是市場的稀缺性, 成為100%的專才, 的確可以拿到頭部市場, 但成本大風險高, 而做一個80%的通才, 是一個對普通人比較友好的選擇, 而如果你已經是一個有技術儲備合格的開發者, T字型發展也是一個合理的選擇.
如何選型
現在新興技術層出不窮, 光iOS方向就有ReactiveCocoa, ReactNative,Flutter等, 還有人工智慧, 區塊鏈等新興技術, H5, Andriod都沒學過來了, 怎麼有時間研究那麼多的技術, 是的, 吾生也有涯,而知也無涯, 以有涯隨無涯,殆已!所以這並不是最好的學習方式.
這裡你要理解一個觀念,技術不能夠脫離產品而獨立實現, 產品不能脫離運營而獨立存活, 運營脫離了使用者也沒有了意義, 你要理解網際網路的本質其實是人的連線, 理解了這層邏輯, 反推來看你的視野就會清晰很多, 由使用者產生了需求, 運營使用者而產生了群體, 分析群體而打造產品, 實現產品才需要技術, 所以在沒有很大基數的使用者的前提下, 對技術的追求是沒有任何意義的. 而當你有了使用者, 你就會知道你該如何技術選型, 最經濟的方法就是選擇那些穩定且成效快的, 這也是為什麼三方庫存在的本質.
技術之外
是的, 現在你已經理解了, 技術本質只是工具, 而網際網路是人與人的連線, 是思想的碰撞, 這也是為什麼一些大V僅僅是運營粉絲就能夠賺的可觀的收益, 而那些明星級別的頂級流量自不必說.
所以一個優秀的開發者也需要學習運營和產品方面的相關知識, 需要了解使用者畫像, 需要了解人性, 這樣在你懟產品的時候就會更有底氣.
幸運的是, 你成為產品簡, 產品成為你難, 所以有極強學習能力的你已經理解了, 掌握系統的重要之處. 可以試著做一些新媒體及產品, 並用技術實現, 你會發現實現自我的同時, 收穫了更多的快樂.
你會理解為什麼現在內容創業洗稿, 知識付費拆書的本質邏輯, 獨立開發者可以站在更高的維度來看世界. 當然對於不熟悉的東西, 每走一步都異常艱難. 但我們需要被討厭的勇氣, 不是嗎.
動手實踐
看到這裡, 你會感覺你需要學習的東西實在是太多, 終身學習是非常有必要的, 但學以致用才是本文推崇的價值觀, 筆者經常掛在嘴邊的一句話就是, 沒有用的都是垃圾.
這個是一個非常簡單的產品, 是筆者在Youtube上看到的容量增肌計劃隨手實現的, 在技術角度沒有任何的技術含量, 僅僅是一個ORM的資料庫就可以實現, 但在產品的角度, 這其實已經是一個完整的App了, 雖然只有三個介面, 但內部邏輯已經產生了閉環, 並能夠提供價值.
所以以後請不要寫一些沒有用的Demo, 而是轉變視角想想新學的技術能夠用在什麼場景, 能夠為什麼人提供便利.
提升視野
現今世界最厲害的兩個武器, 一個是技術, 一個是傳播, 其實每個時代都一樣, 一邊是王權, 一邊是宗教, 所以作為開發者, 技術是賴以生存的本能, 所以你需要提升的是你的傳播的能力, 你可以想一下為什麼會有人發公眾號, 發微博, 發抖音, 發技術部落格, 他們都是做慈善的嗎? 當然不是, 其本質就是為了傳播, 我寫這篇文章很大一部分原因就是希望你能夠在我GitHub上點上Star, 其實是為了鍛鍊我的文筆, 更好的運營我的新媒體, 創造屬於自己品牌的價值.
但是你想要傳播但是沒有內容的輸出是不可能的, 我能夠洋洋灑灑寫出那麼多字, 也是我思考積累的過程, 現在寫文字對我來說已經是思緒的流動, 寫作技巧已經是非常次要的東西了.
和技術儲備一樣, 你也需要提升你的知識儲備, 你需要了解這個世界正在發生的事情, 你就需要科學上網, 為了實現這個場景的需求, 你就會進行這方面的技術學習, 看, 技術選型是自然形成的, 並不需要你糾結, 有了場景, 一切看起來都是那麼的簡單, 當你的知識儲備到了一定的階段, 你就會感覺輸出倒逼輸入, 你就會有發表自己觀點的欲求, 你可能也會從看部落格到寫部落格的階段, 而我想告訴你的是, 其實你可以靠技術輕鬆的進行變現.
當然變現並沒有說的那麼簡單, 你需要學習的東西很多, 首先你需要了解經濟, 市場的波動, 股票對公司的影響, 瞭解技術, 各種前沿技術和未來的趨勢, 瞭解這些我到時推薦你看一些知識付費的東西, 比如得到裡的萬維鋼和王煜全的專欄, 對提升你的視野很有幫助, 但如果你想要從中學習到知識, 還是別天真了, 老老實實的系統學習, 動手去做, 記住, 沒有資料支撐, 純靠思辨的產物不是知識.
乾貨分享
筆者將一些iOS學習的注意點整理成專案, 包括但不限於元件化, 跨平臺, 響應式, 演算法, 架構, 逆向, Swift等內容.
GitHub: github.com/coderZsq
專案地址: github.com/coderZsq/co…
筆記地址: github.com/coderZsq/co…
寫在最後
文章開頭所說的精準學習, 其實你已經大概的瞭解了, 其實道理很簡單, 就是輸出倒逼輸入, 只有你真正知道自己要做什麼了, 你學習的方向就會變的異常的明確, 願你突破視野的限制, 成為更好的自己.
以上。