開發者如何突破那被限制的視野 | 掘金年度徵文
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開發, 國內並沒有相關對口的專業, 所以基本上大多數開發者都是通過自學
進入市場的, 有的由於是科班出身, 重點大學, 幸運的進入大廠深造, 一路順風順水, 使得其他的開發者只能望其項背, 多數普通的開發者都是通過培訓機構進入市場的, 並沒有很深的技術基礎, 沒有系統的學習過計算機原理
進階的困難
, 所以現在市面上出現了很多線上技術教育, 不壞, 學習是很好的行為, 我們這裡談的是如何精準的學習
.
自我接納
如何進行精準的學習
, 首先我們需要學會自我接納
, 做產品的對目標使用者都會有使用者畫像
, 使用者畫像存在的意義是無論你做是什麼東西說什麼話, 都無法取悅所有人
, 這就是定位的意義
, 而對自身也是一樣, 你需要了解自己的定位才能進行進一步的規劃.
相同的環境造就相同的價值觀, 真是由於每個人的價值觀不同, 造就了這個五彩繽紛的世界, 當我們作為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…
寫在最後
文章開頭所說的精準學習, 其實你已經大概的瞭解了, 其實道理很簡單, 就是輸出倒逼輸入
, 只有你真正知道自己要做什麼了, 你學習的方向就會變的異常的明確, 願你突破視野的限制
, 成為更好的自己.
以上。