如果這個世界上有這樣一瓶藥水,喝下後能夠立馬回到十年前,回到我剛畢業參加工作那會,我一定會毫不猶豫地喝下去。因為這十年來,我走了太多的彎路,要不也不可能成為小夥伴們調戲的“人生導師”哈。
請肆無忌憚地點贊吧,微信搜尋【沉默王二】關注這個在十三朝古都洛陽苟且偷生的程式設計師。
本文 GitHub github.com/itwanger 已收錄,裡面還有我精心為你準備的一線大廠面試題。
當然了,在重走職場前,我一定會送自己 8 個錦囊,要不回去了等於白回去,對吧?我們不能把踩過的坑再踩一遍。
01、選擇和努力同樣重要
努力決定了人生的下限,選擇才決定了人生的上限——十年前,我是不懂這點的,只知道,“蒼天不負有心人,只要肯攀登”;十年後,我明白,攀登之前,得選擇好攀什麼。
我是幸運的,隨了一小部分同學的波,去了蘇州,最後找到了一份自認為還可以的工作。但假如讓我重新來選的話,我會選擇更大一點的城市,上海或者北京。
去大城市,當然不是奔著高昂的房價去的,沒人會傻到那種程度,去,只有一個目的,就是——機會。人這一輩子,不會平步青雲,一直走上坡路。但如果走的坡太矮,到了坡頂,很快就下來了。
如果坡是陡峭的,儘管衝下來的速度會很快,但坡長是足夠的。這就會應了那句話,“瘦死的駱駝比馬大”。
我有一個大學同學,叫海洋。哥們上學的時候學習就是最勤奮的,和我一樣,去的也是蘇州,只不過現在還在蘇州,已經在那邊買房了,並且年薪很誘人。
還有一個大學同學,叫小龍。哥們 2014 年的時候去了上海,工資直接是蘇州時的 2 倍還要多,發展前景賊好,但 2016 年的時候“衣錦還鄉”似地回了鄭州,結果呢?工資減了一多半不說,累成狗的同時,是一眼望不到頭的“只長年紀不漲薪”。
我已經在洛陽生活了六七年了,過得不算差吧,經常有小夥伴羨慕我,說我生活愜意,過得美滋滋。但說心裡話,還是會後悔回洛陽得太早,沒有去更大的城市拼一把,沒有把自己的能力發揮得淋漓盡致,有點不甘心啊。
有一個因為寫作認識的朋友,和我一樣,出過書,之前在長沙做技術總監,前幾天發資訊給我說,“二哥,有機會來杭州啊,我安排,洗腳啥的沒問題。”我就納悶,哥們在長沙混得不差啊,怎麼下這麼大的決心,重新出發了呢?
要知道,他和我一樣,結了婚,有了孩子,家裡人都反對他去,去了就要在杭州那邊買房,重新開始。但我支援他,能做出這個決定,他就是我心目中的英雄!
人這一輩子,就怕的就是留有遺憾,他去杭州那邊,薪資直接翻了翻,這是廣闊無垠的天地,以他的能力,能夠闖蕩出新的成績,這一點我是深信不疑的。
與其在長沙不溫不火,真不如選擇重新出發,去杭州燃燒一把。
我之前提到過,參加工作的第二年,女朋友放棄鄭州大學的研究生保送名額,去了上海考同濟大學的建築系研究生。雖然最後遺憾差了幾分沒有考上,但如果重新來選的話,她說,“我還是會做出同樣的選擇。”
我佩服她的勇氣。同時,如果再給我一次機會的話,我一定會給她提供一個更好的住宿環境,讓她心無旁騖的考研,以她的學習能力,一定能考得上。她留在上海,而我也會選擇去上海打拼。
以我們兩個人的能力,在上海一定會比在洛陽好,哪怕是在上海混得不好迫不得已最後回洛陽,也會比沒有在上海待過好很多,我是有這方面的蜜汁自信的。
退一萬步說,我們去蘇州的這些同學,遠比畢業後留在鄭州的過得好。每次有同學結婚,大家聚在一塊的時候,留在鄭州的同學就這樣感慨:“還是你們這群去蘇州的明智啊!”
明智啥呀,我們只是莫名其妙做了一個選擇而已。
02、領導讓你上就上
之前收到過一個小夥伴的私信,說,“二哥,有個領導離職了,於是領導的領導就臨時決定讓我上,但我自認為能力還不到,有點猶豫不決,怕做不好,怎麼辦呢?”
還能怎麼辦?上唄!
機會雖然是留給有準備的人,但更是留給那些領導肯器重的人啊。想一想,是不是這個道理。假如你的領導不走的話,你有機會出頭?你領導的領導能讓你上?這話雖然粗俗了點,但是真理啊。
體育場上有很多名不見經傳的小將,因為主力受傷,臨時被派上場,然後,然後就爆發出了驚人的潛力,等主力養傷回來後,發現已經沒有了位置。
小將上場前,總不能給教練說,“教練,我沒準備好,你換下一個人上吧!”假如這樣的話,這小將就永遠只能是板凳球員了,一輩子也沒有出頭之日。
在職場上,也是同樣的道理,領導讓你上就上。假如你在領導眼裡沒有位置的話,也不會讓你上,他一定是發現了你身上其他同事沒有的優點。
只有上了,才有做事的機會,才有機會肩負起更重要的職責。李誕知道吧?以前就是個幕後編劇,被迫走到了臺前,結果火得一塌糊塗。火的結果,就是廣告無數,賺錢賺到手軟。
有小夥伴擔心說,萬一做不好,替領導背鍋了,不就竹籃打水一場空了。瞧瞧這前怕虎後怕狼的,領導還怕被你拉下水呢?想啥呢?遇到自己不懂的,多和領導溝通交流反饋就行了。領導不是吃素的,選擇你有他選擇的理由,這一點,我們就不替領導瞎操心了。
我之前也提到過,工作的第二年,就被提拔做了 Team Leader,比公司很多學歷高的同事都晉升得快。我那時候就特別好奇,心想,領導難道是發現了我身上某些優點,雖然我自己都沒發現?
儘管有些擔憂,但最後還是硬著頭皮上了,給新人培訓啊(話說我還是個新人呢),研究原始碼啊,做程式碼校審啊,攻堅技術難點啊,一年多時間下來,發現成長特別特別快,和我一塊來的那些同事再也沒趕上我的腳步。
03、不要過早離開一線
我 24 歲就回洛陽了,說實話,回頭再看的話,有點過早了。考研的小夥伴可能 24 歲還沒有畢業,對吧?
24 歲的年紀,正是打拼職場的青春年華啊。我有兩個好朋友,一個叫慶哥,一個叫小鹿,小夥伴們應該在留言區經常看到他們的身影。他們倆今年差不多也是 24 歲的年紀,慶哥去了杭州,小鹿去了北京。你瞧,我和他們之間是多麼大的反差。
回三線城市洛陽是有好處的,比如說房價低(不覺得),消費標準低(不覺得),生活節奏慢(不覺得)。但弊端更多,比如說工作機會少,你看我就很少提在洛陽的職場,因為乏善可陳,真的是。
作為程式設計師的我們,應該很清楚,網際網路是聯通世界各地的,我們村的大爺大媽們都會抖音直播。但是,網際網路是有地域差別的,我們村就沒有軟體開發的工作。
小鹿之前說,他找工作時投了幾十份簡歷。我回洛陽那會,就沒有投幾十份簡歷的機會,大概投了四五份吧,就覺得(可以去掉)沒公司可投了。
有不少小夥伴問過我,“二哥,洛陽有沒有好的工作機會啊,想回去,在外面漂時間久了,累。”說實話,在洛陽,做 C++ 的,有一家公司待遇還不錯,我可以內推,但做 Java 的好公司寥寥無幾。
我在洛陽過得不錯,是有原因的。第一,我技術還過得去,也肯學習,肯輸入,沒有掉隊;第二,我會寫作,有一定的影響力,和大廠程式設計師有交流切磋的機會。小夥伴們可以羨慕我的生活,但也要看到我背後付出的努力(我四點多就起來寫這篇文章了)。
04、只全棧不縱深要不得
我 2019 年的時候出版過一本黃皮書,名叫《Web 全棧開發進階之路》,這本書的稿子早在 2016 年就動筆寫了,只不過出版的進度比較慢。說實話,我現在不太喜歡提這件事。因為“全棧”就意味著什麼技術都會,但又什麼都不精通。
想想是這個道理。為什麼說大廠的程式設計師都是一顆螺絲釘,只需要負責自己擅長的就夠了?因為不需要面面俱到啊,大廠講究的是團隊的配合,前端幹前端的事,後端幹後端的事,前後端又可以細分出很多領域,每個人只需要把自己手上的活幹好,幹明白就完事了。
小公司沒有那麼多人力,所以一個開發要肩負起很多的職責。往往一個專案的開發,從需求溝通,到產品設計,到程式碼研發,到測試,到運維,到後期維護,基本上是一肩挑。
人的時間和精力是有限的,幹得多了,就沒辦法深入研究一個領域,做到專家的程度。與此同時,不可替代性就降低了。
關注我比較久的小夥伴應該可以看得到,我這一年多時間裡,一直在 Java 的領域深耕,研究得越深,就越發現,可寫的內容越來越多;甚至有些話題,每研究一次,就能發現一些新的技術細節。
我第一次閱讀 HashMap 的原始碼時,瞭解到 HashMap 難的不是 Map 而是 Hash;第二次閱讀的時候,瞭解到 HashMap 是通過拉鍊法解決的雜湊衝突;第三次閱讀的時候,瞭解到 HashMap 裡不只有陣列和連結串列,還有紅黑樹;第四次閱讀的時候,瞭解到紅黑樹可以提高連結串列的查詢效率。
縱深,其實是戰略上的一個用詞,指的是軍隊作戰地域縱向的深度。深度的量決定了防禦體系的堅固程度和攻擊體系的出擊強度,是近代戰爭立體化的體現。這個詞,也可以用到職場上,那就是我們不要一味追求技術的覆蓋面,更應該注重技術的縱深度。
尤其是進入職場的前五六年,一定要縱得深一點,這樣才能安身立命。等到這個技術壁壘建立了以後,隨著工作經驗的累計,就可以在廣度上花一些功夫了,因為技術是要更新迭代的。
05、趁早打造影響力
JavaGuide, 應該有不少小夥伴認識,他早在大三的時候就維護一個叫“JavaGuide”的開源專案,截止到目前,這個專案在 GitHub 上的 star 數已經超過 88k 了,排名非常靠前。這個專案還衍生出了一份內容非常棒的 PDF,名叫《JavaGuide 面試突擊》,我前前後後看了兩遍,真的是感慨良多:要出名,趁早啊!
像 Guide 哥這樣,不僅建立了影響力,還真真正正地幫助了他人,自己優秀的同時帶著他人一塊優秀,才是真正的優秀啊。
按照往年這個時候,金九銀十,正是找工作的黃金檔期,為了小夥伴們著想,我把這份 PDF 的下載地址放到了百度網盤,小夥伴們順帶下載一波,我也趁這個機會幫 Guide 哥宣傳一波。
連結:https://pan.baidu.com/s/1S_qZ8ouXHGOI_Ghy1BNk0Q 密碼:369n
06、精通一門外語
我在蘇州的時候,是在一家日企,但不會日語,吃了很大的虧。第一次去日本出差的機會就是因為這個泡湯的,說起來後悔死了。
當時護照都辦好了,特意從蘇州跑回戶口所在地洛寧辦的。結果領導臨時決定,讓另外一個同事替我去,因為同事的日語比我好一些。
小夥伴們可能有所不知,在日企,去日本出差可是一項美差——不光這邊的工資照發,那邊還有相當高額的補貼,基本上去一趟,一年的獎金就賺回來了。
我在技術上是沒法挑剔的,這個領導心裡一清二楚,畢竟專案的核心程式碼都是我帶著團隊寫的。可我那時候就是討厭學日語,提不起半點學日語的興趣。
由於每個專案組都會配備一名專職的翻譯小姐姐,所以遇到看不懂的文件我都會找她們翻譯,況且日常工作中還有一款非常強大的翻譯軟體——靈格斯詞典。日語中有不少漢字,只要掌握一些語法,結合著翻譯詞典,基本上的意思都能看得大差不差。
於是呢,每週的日語課我也不怎麼花心思。上課的老師都是平常工作時候的翻譯小姐姐,關係很熟,每當我被提問的時候,我都會窮盡心思用蹩腳的日語造個句子調戲一下小姐姐。
後來從日企離職了,確實用不著日語了,但偶爾看一些動漫的時候還是會後悔,要是懂日語的話,就知道他們究竟在說些什麼,不用再翻譯成中文了。
日語不好,問題還不算太大。但如果英語不好的話,對於程式設計師來說,就是個巨大的劣勢。因為技術上的一手資料,大多數時候來自於外文網站。
如果你想在程式設計師這條路上走到黑的話,抓緊時間把英語能力提上去。
07、基礎還是要紮實
不害臊地說,我就吃了很多基礎知識薄弱的虧,以至於最近一段時間,不得不瘋狂地補。《一文了解 8 種資料結構》這篇文章我寫了差不多 3 天時間,寫完後真的感覺自己在這方面進步很大。
計算機基礎知識包括:演算法和資料結構、計算機作業系統、計算機網路、計算機組成原理等等。這些基礎知識,就像我們的內功,如果在未來想要走的更遠,這些內功是必須要修煉的。
技術是層出不窮的,框架是千變萬化的,但那些通用的底層知識是亙古不變的,掌握了這些基礎知識,不僅可以幫助我們更快地學習一門新的語言,還能讓我們在效能方面做出更好的優化。
演算法的思維導圖如下所示:
資料結構的思維導圖如下所示:
計算機作業系統的思維導圖如下所示:
計算機網路的思維導圖如下所示:
計算機組成原理的思維導圖如下所示:
有些小夥伴可能還在上大學,覺得學校的計算機專業課程比較落後,比較枯燥,但這些基礎課程還是要好好學的。也許上學的時候感覺不到有多大的用處,但實際開發工作中,基礎知識的紮實程度決定了一名程式設計師的上限。
很多大點的網際網路公司無論校招還是社招,就喜歡考察這些基礎知識。此外,很多平時開發中用到的技術都會涉及到這些基礎知識,比如說為了提高查詢效能需要使用的快取技術。
08、好好保重身體
提起程式設計師,總免不了和一些段子關聯上,比如說“要變強,必變禿”,再比如說:
零基礎學程式設計→某程式語言入門→某程式語言進階→技術專家→頸椎病
這些段子聽上去是不是莫名有一股心酸,對於大多數程式設計師來說,生活沒有那麼多詩和遠方,只有加不完的班,寫不完的需求和改不完的 bug。
小夥伴們平常也要抽時間鍛鍊會,真的,我們們不像人家張朝陽了,張康陽了,每天只需要睡四個小時就足夠了,我覺得他們(可能)不是人。
古人有句話說得好,“身體髮膚,受之父母,不敢損傷,孝之始也。”我們的身體不僅僅是自己的,還是父母和愛你的人的,所以如果能夠回到十年前,我那時候就開始鍛鍊,決不懈怠。
我是沉默王二,一枚沉默但有趣的程式設計師,關注即可提升學習效率。喜歡這篇文章的,請不要忘記四聯啊,點贊、收藏、轉發、留言,你最美你最帥!