程式設計師到底能不能幹過30歲?

被擱淺的魚發表於2017-04-06

程式設計師為什麼高薪?從經濟學上來說是因為稀缺性!但是現在世界上軟體行業的從業者並不在少數,從這個角度來說,程式設計師並不稀缺,但換個角度,程式設計師這個行業的薪資差距卻有如雲泥之別,為什麼?

在回答這個問題前,先談一個前段時間讓我感到職業生涯恐慌的事件,華為被爆出開除年齡大於34的員工,當時不禁算了算自己年齡,如果自己就職於華為,那麼也快到了被開除的年紀了,剛工作時和許多之前不同專業的同學聊天時,他們也總會時不時勸我,別看你現在賺的比我多,程式設計師是吃青春飯的,幹不過30歲,我現在雖然賺的少,可是我穩定,你應該考慮轉行之類的云云,說句實話,以前在聽到這些時,我的心裡多少還是有一些恐慌的,因為我實在想不出,那時的自己出去除了寫程式碼,還能幹啥?

正如馬雲談實體經濟的一句話:“不是實體經濟不行了,而是你們家的實體經濟不行了!” 同理,不是30歲的程式設計師不行了,而是你不行了。

軟體行業之所以高薪,是因為這個行業技術更新發展之快,遠超其他普通行業,在這個行業,技術幾乎每五年就翻新一輪,這帶來一個結果,就是在這個行業每一位從業者,其實,都有一個統一的別稱:學生!

經濟學十大定理之一,選擇之後必有代價,我們選擇這個行業,享受了它帶來相比於其他大多數行業的高薪酬,就該承受與之而來的不斷學習,不要等到掉隊那天,不自己反省自己的不作為,反而給這個行業貼上不該有的標籤,對於這種人,其實任何一個需要不斷學習的行業,估計都幹不過30歲,而那些哪怕入門很艱苦,但學成不需要在學習,吃老本的行業,請放心,它一定是低薪酬的。即使它開始一段時間高薪,也不可持久。

學習的意義是什麼?我想借用一句自己很喜歡話來說明:

“不是說學習本身特了不起,而是學習這個行為意味著你沒有完全認同於這個現世和現實,你還有追求,還在奮鬥,你還有不滿,你還在尋找另一種可能性,另一種生活方式”  

也曾經像許多人一樣幻想過,如果自己能像武俠小說中主人公一樣,有一個德高望重的前輩,把自己的本領毫無保留的傾囊相授,讓自己一躍成為技術大牛!可是現實和武俠小說最大的區別就是,這樣的前輩有,也願意毫無保留傾囊相授!但是自己卻領悟不了!這是何等的絕望?但這確是鐵錚錚的現實!

比如高德納老爺子的《計算機程式設計藝術》,以高老爺子在計算機中的地位以及知識存量來說,可以說很難有出其右者,絕對可以稱的上是德高望重,而這部著作,以老爺子現在的高壽,估計絕對是把這本書當做墊棺之作,傾注了畢生所學之精華,絕對可以說是傾囊相授,可是我們當中又有幾人能夠完全領悟其中的至理?

我想這便是讀書意義了吧!讀書(除去閒書)的好處之一便是可以借比自己牛的人但還可以勉強理解的視角,去看待許多自己現階段不可能遇到,或者經常忽略的問題!去給自己大腦的作業系統升級!

而另一個好處就是,我們不是總有機會和比自己牛逼的人一起共事,所以讀書就是我們和那些比我們牛逼的人學習和交流的途徑,當然不止有讀書這一條路,在軟體這個行業,還有一條更好的選擇就是看原始碼!

程式設計師們經常戲稱自己為碼農,做為程式設計師之間的幽默確實挺好,但是在自己內心,我一直把自己定位成為一個職業人。

大前沿一在他的《專業主義》中,對職業人有過這麼一段論述:

“對上帝發誓,以此為職業的人!”

在這個信仰缺失的年代,而且是東方人,對上帝的幾乎沒有什麼敬畏之心,其實我想說這裡的上帝並非傳統意義上聖經中的耶穌,而是自己內心中的本我!它是我們內心中最原始的渴望,不需要任何外力的監督,自然而然產生的一種本能!

當然,做到這點很難,但是卻不是不可以鍛鍊後天形成,這是一種對自己所從事職業的榮譽感,借用貓膩小說《將夜》中寧缺師傅顏瑟的一段話:

“修行首重心性,在於敢想敢認,長路漫漫,你自己若都不相信自己能夠走到最後,你怎麼邁過修行路上那些艱難奇崛的險峰?越優秀的修行者越自信,而最優秀的那些修行者必然自信到極誇張的境界,大概也就是你所說的自戀。”  

雖然這是本網路小說,可讀這本書,唯獨這句對我的感觸最大,記憶也最深刻,回到現實中,若不對自己所從事的行業報以極高的榮譽感,認同感,又豈能在自己的行業內有所建樹?可以說我們是極致自戀,但這種職業人的精神,反過來卻使我們在艱難中不斷前行!如果你只是抱著某個行業高薪酬,好找工作,內心對這個行業始終充滿不屑,那幾乎可以肯定,你在這個行業終走不長遠!

羅振宇的節目中曾經有一期,論述過對學習的定義:他說讀書有三個區域:舒適區、學習區和恐慌區,其中學習區又稱為:逃離舒適區!但是舒適區其實是我們人類的本能,我們太習慣重複我們自己,而錯過了許多進步的機會!這或許就是牛人之所以牛,而我們現在卻一直平庸的原因!

我工作已經四年多了,見過的程式設計師幾乎沒有一個願意逃離自己學習的舒適區,總是在不斷的重複著自己之前的技術!積累著使用這些技術的所謂經驗,但是他們忘了,在這個行業,技術的迭代速度之高,有可能過一年,你所積累的經驗就將一文不值,而那時的你,學習能力和價效比又如何和剛畢業的大學生比?我想,這便是華為開除34歲以上那批程式設計師的真實寫照。在爆出華為開除員工訊息後,我偶然在微信公眾號中看到一位華為員工寫的微文《華為之惡》,裡面詳盡敘述了華為是如何將員工當成螺絲釘用的,雖然我認同這篇文章部分觀點,但卻決不贊同他的結論!

一個人的職業生涯,一般要遠超一個公司的壽命,這其實給我們選擇公司提供了一個指明燈,對於職業人來說,在選擇工作時,薪水的豐厚是放在第二位的,而自己的職業發展是第一位,當然,我必須承認現實有時比較殘忍,在這種情況下,我們其實可以先委屈自己一年,但在這一年絕對不要放棄自己的進步,可以抽一定時間自學,不讓自己的技術差距平均水準太遠,一年後相信你絕對有一定的經濟基礎和經驗可以跳槽!誠然,這對任何人來說都是一個需要勇氣才能做出的決定,但這也是你成為職業人,必須要走的道路,向華為這樣的公司,雖然它剝奪了你職業生涯的發展,可同時也給予了你超越一般程式設計師的薪資,你既然沒有選擇離職,證明你也認可這種協議,等同於你願意用自己以後的職業生涯去換前幾年高於一般同齡人的薪資,那最後被開除了,又有何好抱怨?還是引用經濟學的那句話:“選擇之後,必有代價!”,太多的人只願意接受選擇過後,所帶來的好處,而不願意承擔它所帶來的後果!

相較於華為,其實最不可容忍的,是自己葬送自己的職業生涯,但不幸的是,大多數程式設計師都是這麼幹的,我見過太多隻願意重複做自己熟悉東西的程式設計師,他們對外來的一切新技術都抱有本能排斥,與其說害怕學習新東西,倒不如說是懶!或是假勤奮,在公司我團隊有3個剛畢業的大學生,本來打算自己去培訓他們,讓他們在技術上少走一些彎路,可是嘗試過幾次後,我徹底放棄了自己這個想法,你永遠無法叫醒一個裝睡的人,對於那些不想學習的,覺得只要完成工作,單位每月按時發工資就行,雖然他們工作也很辛苦,幾乎天天加班,但卻根本得不到應該有的回報!

由此,我自己領悟了一個道理,在軟體這個行業不存在教會徒弟,餓死師傅的問題,對於那些渴望進步的職業人,即使你不告訴他們,他們也遲早也會知道,而對於那些不願意去進步的,你即使傾囊相授,掏心掏肺,也不會有一絲效果。所以大膽的去分享自己的所學、所思、所悟吧!畢竟我們都是一群有點自傲的孤獨者!在這個大多數人都信仰“老闆給多錢,我就幹多錢活”的時代,我們承受了太多人的不理解,但我相信,時間會給我們最公正的答案!

我對自己的要求是,在可能條件下,強迫自己用已經驗證可靠的新技術去完成工作,對自己編碼的要求是,相同的程式碼,絕不寫第二遍,即使第二遍只是命名比第一遍規範一點。

時刻在內心告誡自己,小心被昨天自己的經驗所束縛,佛門三障之一稱之為:所知障!我在技術上對它的認識,還比較淺薄,總結一下就是“一次偶然的成功,比一次必然的失敗更可怕!”。在以前的工作中,我不止一次遇到,最終被自己谷歌百度解決掉的問題,但是有一些第二次遇到,用之前相同的做法,卻不能如前一次解決。而往往只有在第二次不能解決時,我才對這個問題有比較深入的研究和認識,引申而來,在技術中我們見過太多的理所應當,而不去探究它的本源,記得上學時,教我們程式設計的老師,有時候教我們時就會說:”這是固定寫法,你這麼寫就對了“。當然我不是讓大家去質疑一切知識本身,而是想告訴大家,在解決或者設計一個問題解法時,一定要注意,避免陷入自己的所知障,敢於打破自己以前的思維定式,做到這點很難!但每一次打破,就意味著你自己的進步!

下面說說自己的學習方法吧!以前自己的學習方法就是買書,死磕,由於前期自己的知識存量不足,看不下去,就強迫自己去記筆記,說好聽是在記筆記,說不好聽就是在抄書,因為只有在這種情況下我的精神才能高度集中,漸漸也就愛上這種學習模式!

當有了一定基礎之後,我自己記筆記就少了,基本上都是花時間去迅速看,瞭解更多知識!

第三個階段,也是現在處在的階段,我重新去審視了自己以前的學習方法,以及學到的知識,帶著解決一個具體問題和批判的角度去重讀一些知識點。最新成就是帶著質疑自己看原始碼研究整理了部分的Java基礎,看了Spring IOC核心的程式碼!

其實在這裡我最想說的不是自己的學習方法,其實每個人都有自己的學習方法,沒有最好的方法,任何人也無法說你的學習方法是否是正確的,但只有你自己開始行動,開始不斷的去積累,你就會總結出自己獨有的學習方法,或許剛開始的方法是最笨的,可是沒有之前的笨方法,你就不會在重複一段時間後,去找到更好的,與其糾結什麼樣的學習方法好,還不如現在就開始學,如果你還是要問,什麼樣的學習方法好?我會回答你,自己悟出來的最好!

一般我自己學一門知識,會買至少與這個知識相關的兩本書,比如,我最近在看網路相關的內容,我買了圖靈的《網路是怎樣連結的》和《計算機網路:自頂向下方法》兩本,前一本比較易懂而後者相對比較難點,一般我會把前一本看到大概一半的位置,再去看第二本,這樣我其實有了第一本淺顯的認識,看起來能比較輕鬆點,第二本會看到自己看不太懂的章節,在返回來看第一本,這時我會發現第一本內容對我來說簡直太簡單了,一般這次會一口氣讀完第一本,然後在回第二本!有時自己學習同一個技術甚至會買5本或者更多,因為每個作者的認知和思路不同,對同一問題表述還是有一定差異的,有助於我理解比較難理解的一些概念,同時,又能相互印證,其實還是發現有很多書,在同一個知識點,表述上有所欠缺或不一致的情況(有時和翻譯本身和作者理解有關)。

而下一個階段就是質疑了,孟子說過:”盡信書,而不如無書!“!學姐也不止一次說:”自己越來越不迷信權威了!“ 而到這步,其實我們就培養了自己獨立的認知,質疑哪怕被冠以權威的東西。這能讓我們更容易看清技術的本質!不在被一些技術廣告忽悠!在這裡我引用《Scala函數語言程式設計》作者的一句相類似的話來表述自己的想法:

”沒有那個現有的庫是權威的,或不需要再去推敲的,哪怕它們都是專家們設計的,還冠以”標準“的名頭。很多庫都存在一些隨意的設計選擇,儘管大多都是無心的。去重新審視那些已存在於設計庫中的基本假設,從不同的角度發現別人從未想過的問題“

既然提到圖靈的學姐,這裡就多說兩句,在圖靈社群與學姐結識,其實是一件偶然,當第一次得知學姐時,自己多少是有點不服氣的,現在看來當時的自己還是很傲嬌的說,可是逐漸熟悉後,我不得不承認,他高出我太多,可能我盡畢生之力,也趕不上他的步伐,他值得我發自心底的尊重,我是一個對技術很自傲的人,所以不存在刻意逢迎。是真不如也!說趕不上是因為,我在進步的時候,他也在進步,而且進步速度絕對要比我快!就好比,你如果天賦和Linus一樣,但只要你不是小學時就開始程式設計,而是稍晚的時候。你是很難在技術上超越他的,這是真正的起跑線,每一個職業人一旦認清自己,開始啟程,一般後跑的就只有仰望!而無法超越,無他!這個緯度是時間決定的。是很難繞過的,除非天賦比他高不少,或是他中間停止了職業生涯的前進!

但借用王安石《遊褒禪山記》所說的:

” 然力足以至焉, 於人為可譏, 而在己為有悔; 盡吾志也而不能至者, 可以無悔矣, 其孰能譏之乎?“

雖不能至,吾心嚮往之!如果因為不能超越而不去努力,只會讓更多的人超越自己!況且,職業人首先對自己負責,根本沒必要去羨慕別人!追求更好的自己就好!

由於在學網路這塊知識,最近一直在研究林沛滿的《Wireshark網路分析就這麼簡單》從我現在對學姐知識體系的淺見,他現在的程式設計技巧,超越了許多一般的程式設計師,下階段若想在進一步成為《Wireshark網路分析就這麼簡單》這本書提及的Patrick那種大神的話,應該從更多元的角度去了解技術,在生產環境中任何一個問題產生,幾乎不太可能是單一的,打一個比方,你程式碼寫的很優雅,線上出現了問題,可能是網路的也可能是JVM本身的還有可能是釋出環境中作業系統內部的一些bug,導致你的程式出現偶然不可重複原因異常,而這時,要定位並解決這種問題,就必須要求自己有多元化的知識結構,因為現今計算機技術本身就是一層一層技術的堆疊,我們在做好自己本身那塊的同時,也要了解其他模組的設計理念以及侷限性!當然這是我讀這本書時一些粗淺看法和建議!僅供參考!

相關文章