前言
【本文於2022-5-10日首發於ITPUB微信公眾號平臺】
該篇文章是我第一次跟DTCC合作編寫的,整篇文章大概8000字,可能花您15分鐘閱讀。我和DTCC的韓楠老師,共花7了天時間,每天把該文章打磨到晚上12點,在這非常感謝編輯老師的負責與付出。
這篇也是我分享裡為數不多“進階”與“成長經歷”的文章之一。被別人送到嘴邊的食物永遠是最香的,但是我們們還是得學會主動去"如何找吃的",授人以魚不如授人以漁嘛,我希望通過這篇文章能給正在努力的你,迷茫的你,焦慮的你,帶來或多或少的參考、建議或者指引。
十年,誰來成就你?
離開校園,一晃已十年,時日深久,現在我已成為程式設計師老鳥了,從軟體工程師到系統架構師,從被管理者到部門負責人,每一段經歷的艱辛,如今回憶仍歷歷在目。各位同行你們可能正在經歷的迷茫,焦慮與取捨,我也都曾經歷過。
今天我打算跟大家分享下我這些年的一個成長經歷,以此篇文章為我十年的職業歷程畫上一個完滿的句號。這篇文章雖說不是什麼“絕世武功”祕籍,更沒法在短時間內把我十年的“功力”全部分享於你。篇幅受限,今天我會結合過往種種挑重點說一說,大家看的過程中,記住抓重點、捋框架思路就行了。希望在茫茫人海之中,能夠給到正在努力的你或多或少的幫助,亦或啟發與思考。
試問,你的核心競爭力在哪?
你曾經是否怕被新人卷或者代替?如果怕、擔憂、焦慮,我可以很負責任地告訴你,那是因為你的核心競爭力還不夠!這話並不好聽,但,確是實在話。認清現狀,踏實走好當下就行,誰能一開始或者沒破繭成蝶時就一下子有所成就。
實質上,可以這麼說,經驗才是我們職場老鳥的優勢。但是,經驗並不是把同一件事用同一種方式重複做多少年,而是把我們們過往那麼多年頭的實踐經驗,還有被驗證的理論,梳理成屬於自己的知識體系,建立一套自己的思維模式,從而提升我們們的核心競爭力。
核心競爭力的形成,並非一蹴而就,我們因為積累所以專業,因為專業所以自信,因為自信所以才有底氣。積累、專業、自信、底氣之間的關係,密不可分。
核心競爭力,祭出三板斧
道理我們們都懂,能不能來點實在的?行!每當身邊朋友或者後輩們,希望我給他們傳授一些“功力”時,我都會給出這樣的三個建議:
- 多面試,驗本事。
- 寫部落格,而且要堅持寫。
- 擁有自己的 Github 專案。
其中,部落格內容和 Github 專案,將會成為我們們求職道路上的門面,這兩者也是實實在在記錄你曾經的輸出,是非常有力有價值的證明。此外,面試官可以通過我們們的部落格和 Github,在短時間內快速地瞭解你的能力水平等。或許你沒有足夠吸引、打動人的企業背景,也沒有過硬的學歷。但!必須有不遜於前兩者的作品跟經歷。
再說說面試,我認為,它是我們接受市場與社會檢驗的一種有效方式。歸根結底,我們們所付出的一切,都是為了日後在職業發展上走得越來越好。有朋友會說,面試官看這倆“門面”機率不大,沒錯,從我多年的求職經歷來看,願意看我作品的面試官也只佔了 30%。
但是,誰又能預判到會不會遇到個好機會呢?有準備,總比啥也沒有強,千里馬的亮點是留給賞識它的伯樂去發現的。
PS:擁有自己 Github 專案與寫博,都屬於一種輸出的方式,本文就以寫博作為重點分享。寫博與面試會在下文繼續展開。
記憶與思考,經驗與思維
武器(三板斧)我們們已經有了,少了“內功心法”也不行。這裡分享下我的一些觀點,也便於大家後續能夠更好地參與到具體的實踐中。
- 記憶——記憶如同物件一樣是具有生命週期,久了不用就會被回收(忘記)。
- 思考——做任何事情就如同我們們寫程式碼Function一樣,得有輸入同時也得有輸出,輸入與輸出之間還得有執行。
-
日常工作中,就拿架構設計當例子。作為架構師是需要針對現有的問題場景提出解決方案,作為架構師的思考輸入是業務場景、團隊成員、技術選型等,而它的輸出就是基於前面的多種輸入引數從而產出的短期或長期的解決方案,而且最終會以文件形式儲存下來。
儲存下來的目的,是為方便我們日後檢索、回憶、複用。因此,在業餘學習中同理,給與我們的輸入是書籍、網路的資料或同行的傳遞等,而作為輸出則是我們們記錄下來的筆記、部落格甚至是 Github 的專案 Demo。
基於上述,我們需要深刻意識到心法三要素:
- 帶著明確的輸出目的,才會真正地促進自己的思考。蜻蜓點水、泛泛而談,是無法讓自己形成對事物的獨特見解和具象化輸出,長期如此,並無良益。
- 只有儘可能通過深度思考過後的產出,才能夠形成屬於自己真正的經驗。
- 知識的點與點之間建立聯絡,構成明晰的知識體系,經驗與經驗則形成了自己獨有的思維模式。
多面試,驗本事
既然“武器”和“內功心法”我們們都有了,那麼接下來得開始練“外功”了,而這一招叫"多面試,驗本事"。
我身邊的同行與朋友,對我的面試行為感到奇怪:你每隔一段時間就去面試,有時拿到了 offer 還挺不錯的,但是又沒見想著跳槽,這是為何?
風平浪靜,居安思危
回應這個疑問之前,我想反問大家 4 個問題:
- 是否曾遇到過在一家公司呆了太久過於安逸,也階段性想過離開,發現真要走可卻沒了跳槽的勇氣?
- 再想一想,日子一久,你們是不是就不清楚行業與市場上,對人才能力的需求了?
- 是否有經歷過公司意外裁員,你在找工作的時段裡有沒有強烈感受到那種焦慮、無助?
- 是否對來之不易的 offer,糾結不知道如何抉擇,又或者,最終因為迫於各方面壓力,勉為其難接受了不太中意的那個?
剛提到的種種問題,那份焦慮、無助、糾結與妥協,我曾經在職場都經歷過。我們想象一下,如果你現在隨隨便便出去面試五個公司能拿到三四個 offer,你還會有那失業的焦慮麼?如果現在拿到的那幾個 offer 正好都不喜歡,你全部放棄了,難道你會愁後續沒有其他機會了麼?顯然不會!因為你有了更多底氣和信心。
我再三思考,還是覺得有必要給大家分享一個我的真實經歷。希望或多或少可以給你一點啟發:
2019 年,因為 A 公司業務原因,我離開了工作 3 年的安逸的環境,市場對人才的需求我已經是模糊的了,當我真正面臨時,我焦慮、我無助。幸好曾經跟我合作過的老領導注意到了這我這些年的成長,向我施予援手。入職 B 公司後,我重新審視自己,並給與自己定了個計劃——每半年選一批公司面試。
一年以後,因為 B 公司因疫情原因,我再次離職。這次,我沒有了焦慮,取而代之的是自信與底氣,裸辭在家開始了我的休假計劃。在整個休假期,我拒絕了兩個滿足我的高薪 offer,期間我接了個技術顧問的兼職,剩餘時間把以前囤下來的書看了個遍,並實踐了平常沒觸碰到的技術盲區。三個月後,我帶著飽滿的精神面貌再次"出山",入職了現在這家公司。
有人會問:你現在還有沒有堅持自己的面試計劃?毫無避諱回答:有!仍然是半年一次。
乘風破浪,未雨綢繆
就前面這些問題、情況,這裡結合我自己多年來的一些經驗,也希望給到大家一點破局建議:保持一定的面試頻率,就如上文提到的“三板斧”,面試是接受市場與社會檢驗,非常直接、快速、有效的一種好方式。當然,我可不是慫恿你頻繁跳槽,沒有多少公司能夠欣然接受不穩定的員工,特別是崗位越做越高時。
看到這裡,有些夥伴可能會想,我現在穩穩當當的、好端端的,幹嘛要去面試,何必折騰自己。假若你在體制內,我這點建議或許參考意義不大。拋開體制內的討論,大家認為真的有所謂的“穩定”的工作嗎?
我認為所謂的“穩定”,都是隻是暫時的,甚至虛幻的,沒有任何的人、資本、企業能給你實打實的承諾,唯一能讓你“穩定”持續發展下去的,只有你的能力與眼界、格局等。
疫情也有幾年了,相信大家也有了更多思考,工作上,副業上等等各方面吧。人無遠慮,必有近憂,未雨綢繆,實屬必要!
放平心態,查缺補漏
面試是相對“主觀的”,這是因為“人性”的存在,你可能會聽過讓人哭笑不得的拒絕你的理由:
- 連這麼基礎的知識都回答不上,還想應聘這崗位
- 你的性格並不適合當管理,過於主動對團隊不好
我們們先拋開這觀點的對與錯。人無完人,每個人都有自己的優點與缺點,甚至你的優點可能是你的缺點。職場長路漫漫,要是把每一次的面試都當成人生中勝負的較量,那我們們最後可能會輸的體無完膚。我們們付出任何的努力,也只是單純提高“成功率”而已。聽我一句勸,放平心態,以溝通交流為主,查漏補缺為輔。
近幾年我以面架構師和負責人的崗位為主,面試官大多數喜歡問思想和方法論這類的問題,他們擁有不同的細節的側重點,因此我們以梳理這些“公共”的點出發,事後覆盤自己回答的完整性與邏輯性,對於含糊不清的及時找資料補全清晰,嘗試模擬當時回答的場景。每一段面試,如此反覆。
作為技術人我建議,除了會幹,還得會說,我們不僅有硬實力,還得有軟技能。
PS:篇幅有限,具體面試經歷就不展開了,如果大家對具體的面試經歷感興趣,有機會我給大家來一篇多年的"面經"。
狠下心來,堅持到底
鍥而舍之,朽木不折;鍥而不捨,金石可鏤——荀況
要是把"多面試"比喻成以"攻"為主的招式,而"寫部落格"則是以"守"為主的絕招。
回頭看,今年,是我寫部落格的第八個年頭了,雖說寫博頻率不高,但整體時間跨度還是挺大的。至今我還記得我寫部落格的初心,用部落格記錄我的學習筆記,同時拋磚引玉,跟同行來個思維上的碰撞。
隨著工作年限的增長,我寫部落格的內容慢慢從學習筆記變成了實戰記錄,也越來越傾向於輸出經驗總結和實踐心得。實質上,都是在傳達我的觀點與見解。
而這,至關重要。反過來看,後面機會來了,平臺聯絡人也可以藉此快速評估、判斷這人會不會講、能不能講,講得怎麼樣,成的話,人家也就快速聯絡我們了。進一步講,每一次,於個人而言,都是好機會。
寫博第一步,從記筆記開始
我相信不少的同行曾經面臨這樣的境況,都有產生過寫部落格的念頭,有些始終沒有邁出第一步,有些中途停了下來,這裡可能有不少的原因:要麼不知道寫什麼、要麼覺得寫了也沒人看、還有一種是想寫但是比較懶等等。
我覺得,一切的學習,前期都是從模仿開始的。學習筆記,它就是很好的便於著手的一種最佳方式。相信大家在學生年代或多或少都寫過日記,就算是以流水賬的方式輸出,部落格也可以作為非常好的開啟平臺。
由於在寫部落格的時候,潛意識裡會認為寫出來的東西會給更多人看,因此自己寫的內容在不明確的地方都會去找資料再三確認,這是很有效的一種督促方法。確認的過程中,也會找到許多相關的知識點,自然而然就會進一步補充、完善、豐富我們自己原有或現在的知識體系。
幸運,需要自己爭取
在寫部落格的這段時間裡,除了梳理自己的知識體系之外,還能結交了一些擁有共同目標的同行,我想,這就是真正的志同道合吧。
甚至在你的部落格質量達到了一定程度——有深度與廣度,會有一些意象不到的額外小收穫。例如有一些兼職找到自己,各大社群平臺會邀請自己合作,也會收到成就證明與禮物等等。
意外地成為了講師
到目前為止,正式作為講師或者是技術顧問,以這樣不同於往常的既有角色,我真切地經歷了幾次。雖次數不多,但每一次過後,即便時日深久,可現在回想起來,於我的成長而言,那都是一次又一次新的蛻變,真實而猛烈,且帶給我一次次新生力量。
話說回來,前面提到幾次分享,有的夥伴可能會說了,這本來就性格好又愛分享的人,個例罷了,不一定適合大多數啊。說到這兒,我想,我有必要簡短地跟你聊一下我自己。
跌跌撞撞,逆水行舟
對於過往的自己,我的評價是從小就悶騷、內向的那種性格,只要在人多的時候發言就會慌會慫會緊張,自己越慌就越容易表達出錯,如此惡性迴圈。隨著我寫博的篇幅越多,慢慢地我發現自己講話時喜歡準備與思考,想好了再去表達,又慢慢地講話就具有條理性與邏輯性了。
當代著名哲學家陳嘉映先生,他曾在一本書裡說過這樣一句話,放到這裡再合適不過了——"成長無時無刻不是在克服某些與生俱來的感覺和慾望"
回頭看,一路走來,我從最初的摸索、探索、琢磨,到看到細微變化,到明顯感知到更大層面的進步,再到後來的遊刃有餘,輸出很有見地的思考,分享獨到觀點。
我想,這背後,離不開一次次嘗試,一次次給自己機會,一次次認真、負責地探索突破自己。其實,大多數人,還真是這麼跌跌撞撞挺過來的。
伺機而動,用心準備
2020 年,我第一次被某企業找到邀請我作為技術顧問是通過我的部落格,這一次算是小試牛刀,主要以線上回答問題、交流為主。因為事先收集好了需要討論的話題與問題,整個溝通持續了兩個小時,最終也得到了對方老闆的高度認可。
此事過後,我重新審視了自己,雖然我口才並不突出,但是我基於過往積累的豐富經驗與知識融合,並能夠正確無誤地傳達輸出給對方,我認為是合格的了。坦率來講,從那之後我不再懷疑自己的表達能力。同時有另外一件事件更值得重視,基於讓自己得到更多更廣泛的一個關注,思前想後,概括來講,我還是覺得落到這句話上更合適,就是:建立個人 IP。
建立個人 IP
那麼,我希望打造個人 IP 的原因是什麼呢?希望或多或少也可以給你提供一點可供借鑑、探討的方向。
我個人而言,側重這樣幾個層面吧。
- 破局:一個是我希望打破 35 歲魔咒,這本質上是想平穩快速度過職業發展瓶頸期;
- 覓友:希望結識到擁有同樣目標的同行,深度交流,構建技術圈人脈資源網;
- 動力:從中獲取更多與工作不一樣的成就感。有了強驅動力,也會使我在分享這條路上變得更堅定。
連結資源,提影響力
在《人民的名義》裡祁同偉說過一句話,我們們就是人情的社會。增加了人脈,就是增加自己的機會。當然前提是,我們們自己得需要有這個實力。
建立個人 IP,最要提高知名度,而提知名度的主要方式是兩種:寫書、做講師。後面我會展開講,寫書無疑是宣傳自己的最好方式之一,但整個過程不容易,週期比較長。作為寫書的簡化版,我們寫部落格就是一種捷徑了。
主動出擊,勿失良機
而作為講師,線上線下各類形式參與各種社群峰會露臉,這也是一種方式。不過這種一般會設有門檻。
這裡不得不多提一句,就是建立 IP 它是一個循序漸進的過程,欲速則不達,任何時候我們們都得靠內容作品來說話,當你輸出的質量夠了,自然而然社群人員、企業就會找到你,機會順理成章來了。反過來講,我們也得常盯著,或者說多留心關注業內各平臺的內容風格,利用好業餘零碎時間,好好梳理下某個感興趣的內容平臺,看看他們到底都傾向於打造什麼樣的東西。做到知己知彼,很重要。
我認識的一個前輩,之前阿里的,他非常樂於在部落格上分享自己的經驗與見解,隨著他分享的乾貨越多,部落格影響力越大,某內容付費平臺找到他合作出了個專欄,隨著專欄的完結,他基於專欄內容又出了一本書,而現在的他已經離開了阿里,成為了自由職業者。
追求成就感,倒逼突破自我
每一次寫部落格、做講師,都能更大程度上填滿我內心深處的空洞,或許是每一個支援我的留言與點贊,或許是每一節分享停頓間的掌聲。如果我們抱著非常強的目的去做的時候,可能會事與願違。就以我做講師來說,因為我是一個新手,在前期資料準備所花費的精力與時間跟後續的課酬是不成正比的。
作為動力源,當時我會把側重點放到結交同行上,同時利用“費曼學習法”重新梳理知識,另外尋找機會突破自己的能力上限。
大家有沒有想過,講課最終受益者的是誰?有些朋友會回答“雙方”。但是我很負責任地告訴你,作者、講師自己才是最大的知識受益者。
如前面所講,寫部落格為了更好地分享出更具價值性的內容,為保證專業性,我們們得再三確認不明確的點,而講課基於寫部落格的基礎上,還得以聽眾的角度,去思考、衡量、迭代,看看怎麼讓人家更好地理解、吸收、用得上這些知識點,甚至講師得需要提前模擬、預估可能會在課後被提的問題。
這裡總結一下,寫部落格與講課的方式完全不同,因為部落格是以圖、文、表的方式展現,讀者看不明白可以回頭去看,但是講課則沒有回頭路,是一環套一環的,所以梳理知識線的連貫性要求更強。
我個人認為,日常工作大多數是重複的、枯燥的,或者說,任何興趣成了職業,那將不再是興趣,或許只有在業餘的時候獲取那些許的成就感,才會重新燃起自己的那一份初心 ——行之於途而應於心。
源不深而望流之遠,根不固而求木之長
求木之長者,必固其根本;欲流之遠者,必浚其源泉——魏徵
有些同行或許會問:”打鐵還需自身硬“這道理我們們都懂,成長進階都離不開學習,但這要是天天寫 BUG 的哪來那麼多時間學?究竟學習的方向該怎麼走呢?在這裡分享下我的實際做法,以及一些切身的個人體會,希望可以提供一點借鑑、參考。
零碎時間,穩中求進
6 年前,我確定往系統架構師這個目標發展的時候,每天都會做這麼兩件事:碎片化時間學習,及時產出筆記。
- 上班通勤與中午休息,我會充分利用這些碎片時間(各 30 分鐘)儘可能地學習與吸收知識,每天堅持一小時的積累,積少成多,兩年後你會發現,效果非常可觀,這就是一個量變到質變的過程。
而且有神經科學相關表明,”間歇式模組化學習的效果最佳,通勤路上就是實踐這種模式的理想世界。“大家也可以多試試看。當然,一開始你學習某個領域的知識,可能效率沒那麼高,我建議你可以反覆地把某一節掰開了揉碎了看或者聽,直到看明白聽懂了為止,接著得怎麼做?如我前面說,我們們得要有輸出!
看過這樣一段話,”寫和想是不同的,書寫本身就是邏輯推演和資訊梳理的過程。“而且,研究表明,”人的記憶力會在 17-24 歲達到高峰,25 歲之後會下降,理解力的發展曲線會延後 5 年,也就是說在 30 歲之後也會下降。“
你看,這個也直接或者間接告訴我們,還是趁早多做記錄、多學習。文字也好,視訊也罷,到底啥形式不重要,適合自己能長久堅持的就行,我相信你一定能從中受益。畢竟,這些累積的,可都是你自己實實在在的經驗和思考沉澱!
話說回來,其實做筆記能花多長時間,就算在工作時間花半小時也有良效,而這時間並不會對自己的工作進度造成多麼大的影響,但!一定時日深久,受益良多。
構建知識體系,豐富思維模式
由於我們日常需要快速解決技術難題,很多時候從外界吸收到的知識點相對來說很零散,而知識體系是由點、線、面、體四個維度構造而成的。
那怎麼做能夠快速把知識串聯起來呢?這裡我舉個簡單的例子,方便大家理解。
以我們系統效能調優出發,首先我們需要了解系統相關效能瓶頸的業務場景是什麼?該功能是 I/O 密集型還是 CPU 密集型?如果是 I/O 密集型多數的效能瓶頸在資料庫,這個時候我們就得了解資料庫瓶頸的原因,究竟是資料量大還是壓力大?如果是資料量大,基於現有的業務場景應該選擇資料歸檔、臨時表還是分庫分表,這之間的方案優缺點有什麼不同?適用場景怎麼樣?假如是資料壓力大了,我們是否能用 Redis 做快取抗壓就行?
再接著從 Redis 這個點繼續思考,假如 Redis 記憶體滿了會怎樣?我們又瞭解到了 Redis 的記憶體淘汰策略,設定了 volatile-lru 策略,由於我們基本功紮實回憶起 LUR 演算法是基於連結串列的資料結構,雖然連結串列的寫的時間複雜度是 O(1),但是讀是 O(n),不過我們得先讀後寫,所以為了高效能又選擇 Hash 這種 O(1)的資料結構輔助讀的處理。
你看,我們是不是從問題出發到架構設計,再從資料庫優化方案到 Redis 的使用,最後到資料結構,這一些系統的知識就串聯起來了?
實質上,我之前招聘面試時,經常使用這種思路問過應聘者。反其道而思之,你是不是也可以在搭建自己的知識體系時,嘗試著模擬,面試場景下,面試官究竟會詢問哪幾個問題。
分享中,我多次提起知識體系構建的重要性,是因為這對我們們的思維蛻變起到非常重要的催化作用。想要進階或成為某個領域的專家,除了自身領域技能要硬之外,思維蛻變才是重中之重。
倆建議,一提醒
系統性學習
相比於書,不少朋友更喜歡看零散的文章。我個人建議,書還是得看,書中的知識是系統化的,特別是需要或者想要突破瓶頸時,還是得買些書進行系統性學習。
有時候階段性瓶頸想要快速突破,其實就差那知識點 A 跟點 F 之間沒關聯起來,看似不相干,實則有很強關聯性,甚至明晰了二者間的關係,能夠幫助我們解決工作中不少難題。
抓本質
其次,我們們這個領域知識更新太快了,每兩三年一小變,每五年一大變,對技術框架的追求,可以說是無窮無盡,然而人的精力、時間有限。我建議隨著工作年頭越來越長,越需要提高我們的抽象思維能力,把自己的基本功打紮實,鞏固牢靠,相對適當地減少技術細節上的過度關注。抓本質,也是一種正確的選擇。
避免跨度大
另外我再提醒一句,學東西,建議避免領域跨度過大,避免“盲頭烏蠅”亂碰亂撞,昨天學下機器學習,今天又研究 JavaScript 工作原理,這不可取,還是儘可能跟自己所在領域建立強關聯性吧。
十年磨一劍
在上文,我從"寫博"、"面試"、"構建知識體系"出發,與大家分享如何提高核心競爭力,希望可以作為大家日後破局與進階的有利的"武器"。
我相信螢幕前的你,或許是想成為系統架構師,或許想擔任管理者等等。任何事情都貴在堅持,這裡我送大家三個堅持:堅持夢想,堅持學習,堅持輸出。
或許在目前,我們的程式碼暫時無法改變世界,但是擁有一個良好的習慣,擁有一顆堅持的心,那必定能改變自己的現狀!
路漫其修遠兮,吾將上下而求索。漫漫長路,我,與你同行,讓我們沉澱過去,展望未來。