掘金 XDC 2022 - 普通技術人的彎道超車指南
theme: smartblue
Hello 大家好,我是 Flutter GDE 郭樹煜,也是《Flutter 開發實戰詳解》的作者,掘金 id 戀貓de小郭,今天主要分享的內容是 - 普通技術人的彎道超車指南,也算是厚顏無恥地來分享一些自己的經驗,作為一個 ”普通“ 的程式設計師,我是如何一步一步地走到今天。
一、什麼是普通技術人- 大多數
首先什麼是普通?在我看來普通也就是“大多數”,可能這個 “普通” 放到更大的資料下也不算普通,但是基於程式設計師這個圈子,在起點上我也算是 “大多數” 裡的一員:
- 普通家庭,父母“靈活就業”
- 普通大學,不知名本科
- 普通就業,大四進入了一家剛成立的醫療企業從事嵌入式開發,實習工資 1000 ,畢業後 4000
1.1 入行
作為 “大多數“,我一開始並不知道會去做開發,事實上我的專業是通訊工程,當時選這個專業無非就是覺得它可能會和 4G 掛點邊,當時我不知道這個專業畢業後會做什麼,後來也確實也挺掛邊,專案監理和機房網管是我們學校這個專業最主要的就業方向。
所以我也不算是完全正經的科班畢業,不過譚浩強的 C 語言是學了,恰好這是一門我還比較剛興趣的課程,所以後來我又選修了微控制器和嵌入式,最終得到了第一份實習的工作:
用 C 語言和 MiniGUI 開發監護儀的 UI 介面,就是下圖左邊機器上的 UI,沒有控制元件,就是靠自己用 Canvas 定位畫出來,也許你不敢相信,急診室和手術室裝置上的 UI,會是一個初出茅廬的實習生寫的。
後來因為需要在 Win 上開發介面,所以自學了 C++ 和 QT 開發了 PC 軟體,如上圖右側圖片,因為那時候需要做一箇中央監護軟體,統一接受所有床邊機器的資料,不得不說當時是真的頭鐵,當時這套系統在醫院 CCU 就因為資料延遲差點出了事故。
畢竟 CCU 都是心臟病人,而當時通過內網 UDP 包經一臺垃圾交換機同步資料,幾十臺床邊機,資料量又大,每天連續24小時工作,用個幾天就可能會出現了半小時左右的資料延遲。
再到後來公司業務需要,就自學了 Java 開發 Android,然後就正式脫坑嵌入式,轉向移動開發,再之後就是經歷了 Cordova、 React Native、Weex 、uni-app 等框架的洗禮,然後就是我現在的工作 Flutter 。
所以,作為一個半吊子入門的程式設計師,從我的經歷上看,可以看到其實早期我一直都是隨波逐流,什麼火了我就學什麼,為什麼?因為我焦慮 !
1.2 焦慮
作為普通的 “大多數”,沒有學歷,沒有大廠背景,沒有光環,所以我總是在想著如何追趕上這個“時代”,每天疲於應戰,慢慢地就開始變成抵觸和戾氣。
為什麼做一個普通的程式設計師這麼累?這是我早期的想法。
轉折點在於 2016 年末,那時候因為團隊負責人的離職,而我“恰好”接替了他的位置,我還以為天上掉餡餅,本來還有點高興,卻不知道老闆和高層其實正“密謀”解散公司,而隨著開發需求的下降,我有了不少空閒的時間,有了時間之後我就開始“不安分”,想著我能給自己做點什麼,最終不出意外,我開始做開源和寫作。
現在想想,當時的焦慮真的就在於渴望得到認可,因為缺乏有效的交流和學習,所以基本上像是無頭蒼蠅一樣橫衝直撞,導致早期幾乎就沒有什麼沉澱。
而那時候,因為開始寫作,我也恰好是在 2016 年入駐了掘金,我開始走上技術分享的契機也是以掘金為起點,從一開始的技術沙龍,到參加各種開發者大會,再到加入 GDE 組織,慢慢地就走上了不一樣的道路。
說起來我印象很深刻就是,早期的聲網、極光等開發者大會,都是通過掘金平臺間接聯絡上。
二、技術人的高速公路-寫作
所以我的轉折點是開始 “開源” 和 “寫作” ,我一直覺寫作是“普通”技術人表現自我價值的最好途徑之一,作為“大多數”之一的程式設計師,在“學歷”,“履歷”,“資歷”這三板斧都不夠情況下,一些非官方的背書,自然而然就成了我們的籌碼。
2.1 寫作的現實目的
所以我最初寫作的目的很現實,就是想給自己多一個背書 ,因為在學歷和履歷上已經落後,所以我希望通過其他方式幫助自己實現彎道超車。
所謂 “文無第一武無第二”,相信大多數人都不會覺得自己的智力有問題,很多時候只是機遇不好,並不是自己的能力不行,需要的只是一個機會。
但是就像我會時不時幻想中500萬,甚至規劃如何分配,但是我從來不買彩票。
所以光想著 “懷才不遇” 肯定是不行的,因為 “出來混,是要講勢力,講單位,講背景,會打有個 P 用啊“ ,所以有機會也需要好“背書”的支援,而在技術社群寫作,給了我這樣一個”買彩票“的途徑。
而我從 2016 年開始寫作,一開始也不知道寫什麼好,所以我主要是從身邊出發,開始分享自己的一些 Android 專案經驗,那時候剛好 Android 還比較火熱,特別是音視訊相關的內容,所以趕上了一波快車道,甚至當時開源的 GSYVideoPlayer 專案並沒有多少技術含量,它只是幫開發者解決了一些音視訊上的髒活。
所以創造內容的時間很重要,比如現在你還做 Android 的內容,那麼肯定 Compose 這條車道更有速度。
所以我寫作的目的一開始就很現實:就是想盡量讓自己能有點名氣,有點背書,以後能夠更好地找工作,而其實寫作這麼多年,從我接觸到的情況來看:
非大廠的“普通”技術人,對於寫作的熱情會遠遠高於大廠的開發。
因為在大廠一般已經代表有了光環,能進大廠在背書上就已經趕超了不少普通人,並且大廠開發因為保密條例和工作強度,往往也不容易通過社群來表現自己,比如:
- 大廠開發作品可能需要釋出到團隊號,企業微信公眾號,因為需要做的是企業技術影響力
- 大廠開發的開源貢獻更多是體現在企業的開源專案
但是普通技術人也有大廠夢,所以會更迫切需要一塊敲門磚來證明自己,而寫作往往是技術人表示自我的最低門檻:
- 寫作可以讓你在社群更加活躍,讓更多人發現你
- 寫作是一種很好的自我驅動
- 寫作可以帶來持續的交流和自我完善
所以對於“大多數”的技術人來說,如果你工作沒有太大成就,如果你的專案並不知名,那麼通過社群釋出你的技術文章,就是技術人亮劍的過程,在技術社群裡去打磨自己,讓自己從社群的索取者變成貢獻者,慢慢經營和建立你的技術影響力,就是“大多數”開始走上高速公路的起點。
2.2 讓寫作成為習慣
那開始寫作之後,應該如何去堅持和持續下去?相信這是很多創作者的困惱。
如果從我的個人經驗出發,其實工作中的問題就是你最好的素材,因為它們都是來自於現實的需求。
相信大家日常都會通過搜尋引擎或技術社群去解決一些問題,工作中大家找資料時都目的性很強,找到問題之後 cv 成功,那麼問題就過去了,慢慢地這種習慣就成了本能之後,那麼工作中你可能解決了很多的問題,但是沒有沉澱。
舉個例子,當面試的時候面試官問你:“能不能詳細講述下你解決過最讓你印象深刻的Bug” ?這時候你可能會卡殼,然後思考最近解決過哪些問題,有什麼問題能夠拿出來說而不至於尷尬,有什麼技術點好講,然後你說近期解決了播放器卡頓問題,對方問你如何解決,你說換了個庫就好了,然後氣氛一度陷入沉默。
但是當你習慣寫作之後,你就會對問題開始感興趣,因為每一個 Bug 都可能成為你的寫作素材,一開始你可能只是簡單記錄問題和解決方式,但是慢慢地你就會問出那三個字:“為什麼?”
當你開始想 “為什麼” 的時候,你就已經開始成長了,而當你能通過文章解釋“為什麼”的時候,那你就會慢慢對這種融會貫通的感覺上癮,然後自發性地去探索和記錄問題。
這就是我的經歷之一,如果你看我的掘金,就會發現我的很多文章都來自於各種問題,除了我自己的問題,還有別人的問題,有意思的問題都成了我探究的素材,因為我已經有了寫作的習慣,而文章裡你可能又會收穫其他有意思的問題,這就產生了有效的交流。
寫作習慣之所以可以加速你的成長,很大原因也是網路上的答案參差不齊,如果你只習慣求助於網路,一直從網上覆制程式碼,也許你可以解決一些問題,但是下次再遇上類似問題, 同樣的技巧失效了,那需要怎麼辦?
比如在 Flutter iOS OC 混編 Swift 遭遇動態庫和靜態庫問題,可能你會說,配置
use_frameworks!
和Allow Non-modular Includes in Framework Modules
就可以解決,但是為什麼?如果還是有編譯錯誤怎麼辦?
其實這是我做跨平臺開發時,在網上解決 iOS 問題是最經常出現的狀態,類似的問題,別人的解決方案對我無效,或者說,有時候是薛定諤的有效:
所以只有當你有探索的慾望,有寫作的習慣,你才會慢慢地把問題變成你的積累,沉澱出屬於你自己的知識庫,同時也能幫助你打造一個良好的背書。
另外,因為人在離開學校之後,其實很多事情要依賴於你的自制力去實現,但是不管你如何規劃讓自己自制,都很難長時間去堅持,因為與你的習慣不符合。
而當你習慣寫作和對寫作素材有迫切需求之後,你可能就會開始熱愛,當你熱愛一件事情就不需要靠自制力了,這也是很多人問我,你既不賣課又不做廣告,怎麼保持還在持續產出,即使沒什麼人看的原因。
所以讓自己對問題探索保持熱愛,保持寫作,就是你實現漂移過彎的重要能力。
三、成長路上的明燈-開放交流
就像前面說的,我的很多文章來自於技術問題,而這些問題不只我自己,也有一些來自網友的問題,交流的好處之一,就是總有一些我沒遇到過的問題出現,而恰好我對這些問題感興趣,比如:
這些問題也成為了我在創作疲憊期的靈感,而幫助別人解決這些問題,也是一種自我成長的過程,其實我一直覺得我能走到今天有很大一部分原因來自於運氣,而我覺得這部分運氣其實來自於結善緣:
因為和你交流,別人可以得到他們想要的東西,所以大家才會更願意和你交流。
也有人覺得這是一種被白嫖過程,當然不可否定交流過程中一定會有這樣的情況,所以在開放交流的基礎上,也要學會甄別什麼是有用的交流,畢竟別人叫你大佬,不一定就是覺得你是大佬,只是因為大佬可以更好白嫖。
舉個例子,當一個人一次兩次三次時不時地在群裡諮詢問題時,我會覺得他很活躍;但是當一個人一個星期兩個星期三個星期還一直在群裡問各種問題時,我會覺得他當我是傻逼。
另外只要你保持開放交流,那麼你肯定會遇到和你意見不同的人,這時候就要判斷對方是在討論還是擡槓,特別是如今大家可能都被過多販賣焦慮,有的人可能很會敏感,也許你的正常交流,在別人眼中就是一種炫耀。
而我對於有效交流的最大感悟之一:就是不去糾正別人的錯誤。 其實在此之前我一直沒注意到自己的一個缺點就是“好為人師”,有時候看到評論或者群聊裡有什麼不對的時候,就總是憋不住地想去糾正,時不時總會點燃一些麻煩。
所以除非別人主動找你,不然沒必要去糾正他們,因為你本身沒有這個權利和義務,開放的目的是為了有效的交流,所以沒必要把時間浪費在爭論上,同時不要太過在意別人的評論,挑選有用的交流是成長路上良好的潤滑劑。
另外一種交流的機會就是參加大會,可能很多人已經對各種線上和線下的大會麻木了,覺得在這些大會上找不到有價值的交流,但是其實對我來說,參加這些大會,確確實實給了我從臺下走到臺上的明燈。
不知道有多少 Android 開發還記得 ApkBus,2013 年我剛開始入坑 Android 那會, 安卓巴士可以說是我的啟蒙社群, 而在最後一屆 ApkBus 的 《無界》 大會上,我接觸到了人生中的第一位 GDE ,在那屆大會上我認識了很多 Android 開發的朋友,也結識了一些社群的運營人員,這也給了我後面“登臺”的契機,所以有的人可能會認為參加這種大會意義不大,但是有時候主動其實就是一種機遇。
畢竟在這種交流會上,你上去和大佬要個微信,一般都不會拒絕。
在安卓巴士的《無界》大會之後, 因為掘金和一些積累,我開始了技術分享的旅程,如下圖所示,是我從 2019 年開始所參加的部分大會或者平臺直播的視訊備份。
所以我一直覺得,程式設計師的工作很容易構成所謂"圈層"的泡泡,因為我們經常生活在網際網路,我們需要接受大量的碎片化知識,從而因為“孕婦效應”,讓我們不到看到真實世界的樣子,特別是標籤化的崗位之後,我們都只在自己的領域內卷,雖然專注沒錯,但是思考和沉澱和交流也很重要,
所以和不同的人交流,通過寫作或者開源相互認識,提高自己的認知能力,這也是一種重要的自我成長。
最後,最有效的交流就是和你自己交流,給自己一些思考的時間,去反思和沉澱,不管是交流和協作都需要時間,大家都在談奮鬥,很多時候老闆的定義是:
- 把努力=加班
- 把成長=工作
在一定程度上或者是對的,但是如何判定這個對,需要你去回顧,去思考,反思自己這段時候的加班和工作給你帶來了什麼,不是說加班一定不好,我也有朋友在忙碌的專案裡得到了快速的成長, 但是最終你還是需要時間去思考和沉澱,給自己一個和自己交流的機會,去覆盤自己這段時候所做的選擇。
比如知乎有一位博主,記錄了下自己的人生轉折的故事,答主大概 40 多歲,家住北京,已婚有娃,2020 年面臨兩個 offer 選擇:
- 一個 K 公司,上市公司業務成熟,過去做總經理,有期權,但是要去深圳
- 一個是 C 公司,在北京,同樣總經理,有股票,工資一樣,剛起步
如果是你會怎麼選? 答主選擇了 C 公司,留在北京,因為他考慮了 K 公司是大公司,除了遠離開家庭,過去之後人員管理也不如在C公司自己從頭帶起聽話,我覺得這個選擇合情合理。
但是後來 C 公司一直半死不活,而這位答主卻慢慢被邊緣化,公司關鍵人物也被換成了老闆自己的人,而沒去的 K 公司股票卻翻了 3 倍。
答主最後覆盤了自己的過往,覺得自己當時的選擇確實沒錯,但是自己工作的能力和方向其實更適合成熟的大企業,盲目地選擇方向導致最終中年陷入尷尬的找工作旅程,但是通過住戶的記錄和覆盤,還有和網友的交流意見,也幫助他後面一步步走出困境。
所以和自己交流,覆盤自己的過去的選擇,是成長過程中是很重要的一個習慣。
四、最後
最紅總結一下:
- 寫作是技術人自我學習和自我提升的渠道之一,特別是對於希望出頭的技術人,同時也是自我沉澱的一種方式
- 通過歷史的寫作沉澱,可以逐步覆盤自己踩過的坑,才能避免接下來繼續走彎路
- 保持開放交流的心態,要學會寬容,也要學會拒絕
- 最終的目的就是提高自己的技術影響力,從而提高自我的價值
我正在參與掘金技術社群創作者簽約計劃招募活動,點選連結報名投稿。
- 面向 ChatGPT 開發 ,我是如何被 AI 從 “逼瘋” 到 “覺悟” ,未來又如何落地
- 維護高 Star Github 專案,會遇到什麼有趣的問題 2023 版
- Flutter - Dart 3α 新特性 Record 和 Patterns 的提前預覽講解
- 2023 年第一彈, Flutter 3.7 釋出啦,快來看看有什麼新特性
- 2023 Flutter Forward 大會回顧,快來看看 Flutter 的未來會有什麼
- Flutter 的下一步, Dart 3 重大變更即將在 2023 到來
- Flutter 小技巧之快速理解手勢邏輯
- 一文快速帶你瞭解 KMM 、 Compose 和 Flutter 的現狀
- Flutter 工程化框架選擇 — 混合開發的摸爬滾打
- 如何利用 Flutter 實現炫酷的 3D 卡片和帥氣的 360° 展示效果
- Flutter 工程化框架選擇——搞定 Flutter 動畫
- Flutter 實現 “真” 3D 動畫效果,用純程式碼實現立體 Dash 和 3D 掘金 Logo
- Android Studio Dolphin | 2021.3.1 釋出,快來看看有什麼更新吧~
- 掘金 XDC 2022 - 普通技術人的彎道超車指南
- Flutter 工程化框架選擇 — 搞定 UI 生產力
- Dart 2.18 釋出,Objective-C 和 Swift interop
- Flutter 工程化框架選擇 — 搞定資料儲存選型
- 2022 年 App 上架稽核問題集錦,全面踩坑上線不迷路
- React Native 0.70 版本釋出,Hermes 終於成為預設 Engine
- Flutter 3.3 之 SelectionArea 好不好用?用 “Bug” 帶你全面瞭解它