職業規劃:專屬程序員的巡禮之年
百度百科:巡禮之年是由三組鋼琴獨奏組曲組成的一套專輯,由法蘭茲·李斯特(Franz Liszt)作曲。一般被認為是李斯特最傑出的作品,為李斯特音樂風格的集大成之作。第三組曲特別被認為代表了李斯特的晚期風格。
文章起名為「巡禮」,多少有點回顧的意思。當然,你說我受了村上《沒有色彩的多崎作和他的巡禮之年》的影響,我覺得也行。
一、程序員是個好職業
工作了十幾年,到今天為止,我依然認為程序員是這個時代很好的職業。是不是最好,不敢確認,畢竟沒離開過互聯網行業,就像你只懂中文就很難說中文是世界上最好的語言一樣。不過最好的之一,總歸是有的。無論程序員自嘲也好,被誤解也罷,甚至被其他領域的人黑到了喜馬拉雅山的高度,但不可否認的是,大部分程序員都是在空調房裏敲敲鍵盤就有可能冷不丁改變了世界,並且,大部分時候,我們都讓這個世界變得好了一點點。與很多職業相比,程序員的投入產出比都算高的,稍有智力門檻,也沒比其他行業高多少。而這個時代,給了程序員們大展宏圖的機會,給我們足夠的自由度去創造我們想要的東西。
至於傳說中的「程序員職業病」,其實和程序員這個職業並沒有多大關系。越來越多的互聯網公司為員工提供了各種福利,免費的健身房,舒適的桌椅,香濃的咖啡,甚至一些娛樂設施。自己不運動,其實很難怪到這個職業頭上。另外,程序員的工作也「並沒有想象的那麽辛苦」,所以,遇到頭腦清楚邏輯清晰又喜愛計算機並且沒有遠大的誌向進入其他領域的年輕人,我總是對他們說,來做個程序員吧,這是個能讓你的生活變得精彩的職業。
二、程序員是一個具備長久生命力的職業
我大學剛畢業的時候,程序員還是一個稚嫩的職業,那個年代,身邊的人們沒見過35歲以上的程序員。於是很多人告訴我,程序員是吃青春飯的,你在國內見過35歲的程序員嗎?我說,沒有。
就是嘛,所以要盡早轉行呀……
這種話聽得著實不少,事實上也真的有很多程序員早早轉行了,我沒轉不是因為內心強大,而是比較單純。35歲,聽起來像光年一樣的距離,誰會考慮那麽遙遠的事情。所以我什麽都沒想就繼續編程了。
35歲轉瞬即至,除了過了個普通的生日之外,什麽都沒有發生。我依然在活蹦亂跳的編寫程序,偶爾向周圍稍稍四顧,身邊的朋友要麽在某個技術領域成為行家裏手,要麽在做產品的同時寫書分享,有的設計出了千萬人使用的軟件,有的則成為了一個純粹的管理者,經營著上千人的機構。這些人從前是程序員,現在也是。
隨著互聯網行業的成熟,程序員在成為風口浪尖人物的同時,也逐漸規範和傳統化,與其他行業的工程師一樣,程序員們在自己的領域有深耕,有轉化,有思考,有沈澱,穩步前行。
毫無疑問,程序員是一個具備長久生命力的職業。
三、程序員不一定要寫一輩子程序
以前人們總是說年齡大了就不要寫代碼了,或者說寫不動代碼了。現在多少有點矯枉過正,比如 CTO 怎麽能不寫代碼呢,寫代碼可是一輩子的事呀。在我看來,這個問題根本沒什麽可以爭論的,一個階段一種做法。如果你寫代碼是最有價值的,就去寫代碼。如果你做產品是最有價值的,就去做產品。如果你去管理公司是最有價值的,就去管理公司。去年參加極客邦矽谷行的時候和七牛雲的創始人許式偉聊天,我說老許你還在寫線上代碼麽?老許說,不碰代碼半年多了,我需要從更高的層面上去把握七牛的方向、人和事。
老許比我牛得多,是一位非常資深的程序員,熱愛編程,可以說寫了半輩子代碼,即便如此,在這個階段,顯然有比寫代碼更重要的事情等著他。前一陣子看過一篇文章「紮克伯格開發筆記:打造 Jarvis 的日子」,紮克伯格在文章裏寫到:
2016年我給自己制定了一個挑戰:打造一個像鋼鐵俠裏 Jarvis 那樣的家庭 AI 助手。
在這一年裏,我打造了一個可以通過手機和電腦進行對話的 AI 系統。它能夠控制我家裏的燈光、溫度、電器、音樂和安防系統,而且這個 AI 還能了解我的品味和習慣,可以學習新的詞匯和概念,甚至可以逗我的女兒 Max 開心。Jarvis 是由 Python、PHP 和 Objective-C 編寫的,運用了包括自然語言處理、語音識別、面部識別以及強化學習在內的人工智能技術。
紮克伯格是為了編程而編程麽,顯然不是。除了保持技術的敏感度,他主要是為了了解人工智能發展的現狀。通過挑戰熟悉 Facebook 的工程師們使用的內部技術,同時了解智能家居。而且,這些工作僅僅占用了他很少一部分時間。
實際情況也是這樣,與我一起成長起來的七零後程序員,差不多有超過一半,他們的工作重心已經不再是編碼,而是其他工作事務,另外一半則依然以編程為主要任務。這兩種狀態,都是很好的存在。
四、入行三五年
以我並不豐富的程序員閱歷來看,入行三到五年的經歷對程序員以後的職業生涯有非常重要的作用。互聯網時代學習環境開放,資料浩如煙海,很多大學生在走出學校大門的時候,很可能在某項專業技能上已經達到了很高的水準,但是這三到五年的探索,依然是不可或缺的。
順便在這裏給大家推薦一個架構交流學習群:650385180,裏面會分享一些資深架構師錄制的視頻錄像:有Spring,MyBatis,Netty源碼分析,高並發、高性能、分布式、微服務架構的原理,JVM性能優化這些成為架構師必備的知識體系。還能領取免費的學習資源。相信對於已經工作和遇到技術瓶頸的碼友,在這個群裏會有你需要的內容。
很多人喜歡制定學習計劃,但這些計劃大都無法執行下去。不是計劃出了問題,而是人學習和提升的方式很難按部就班,很多時候我們都是在摸索前行。就像你今天按計劃要耕完一畝田,作業進行到一半的時候,你發現一塊土質的異常,於是深挖下去,用鐮刀割去雜草,用鐵鍬鏟除泥土,用鉆頭鉆出深洞,最後發現了一口油井。如果你按照計劃耕完這一畝田,可能永遠發現不了那口井。
我相信每個人身體裏都有某種特質,這種特質讓你在某個領域取得成就的可能性遠遠大於其他,這種特質也能讓你異於他人。但是,人們並不是生來就知道自己擅長幹什麽的,需要花時間去尋找,找到它,然後去做自己最擅長的事情,這對你漫長的職業生涯是一筆巨大的財富。
需要五年這麽久的時間嗎?依我個人的經歷,恐怕更長也說不定。無論程序員也好,軟件工程師也罷,叫著簡單,領域知識卻是浩如煙海。進入現代互聯網階段,程序員的領域細分到了令人發指的程度,比如 XX 語言工程師,前端工程師,後端工程師,架構師,大數據工程師,安全工程師,運維工程師,移動開發工程師,DBA 等等,叫法繁復,甚至職能重疊,這些角色最初都叫做程序員,最終他們像一棵大樹,枝條粗壯,蜿蜒生長,然後在樹冠分開,並結出了各種各樣的果實。同時,每個細分的領域又會衍生出浩瀚的領域知識。
比如編程語言,常用的編程語言就有幾十種,靜態語言,動態語言,腳本語言,函數式編程,面向對象編程,過程式編程等等,從平臺角度,Java VM 上有 Java,Scala,Groovy,Clojure,Jython,Ceylon 等,.Net 平臺上有 C#,J#,F#,VB.Net,VC#,ASP.Net,移動平臺有 iOS,Android,WindowsPhone……
即便我們把目光聚焦在一門語言或技術上,Java,你也不可能僅僅掌握它的語法特性和函數庫,然後寫寫業務表單和增刪改查就完了。Java 的虛擬機、性能、並發編程、Jit 技術、垃圾收集、集群、分布式、異常、日誌服務,還有大量的 Java 平臺開源項目,都需要深入了解。除此之外,一些數據結構和算法也是程序員們應該掌握的內容,比如棧、隊列、鏈表,二叉樹、紅黑樹、B 樹,散列表,排序算法,查找算法,最小路徑,最小生成樹等等……
這麽看來,五年的時間並不長是不是?
當然,還有一種可能,你花費了五年的時間,發現自己並不適合做程序員,雖然這聽起來有點悲哀,但也不失為一件好事,因為你還有時間轉型啊。程序員幾乎可以轉型為其他任何角色,反過來卻很難。我們聽說過很多優秀的產品經理,創業者,管理者最初都是程序員,卻很少聽說哪個頂尖的程序員是從產品經理轉過來的,有嗎?反正我不知道。
寫到這我必須給你舉一個例子,他就是杭州濱江區吳彥祖、MacTalk 出境小王子、二爺鑒書的作者邱嶽。這位邱二爺當年也是少年英俠,編程領域的快刀浪子,上學時屢獲計算機競賽獎,畢業後一頭紮進了嵌入式編程領域潛心耕耘,最後驚喜的發現,「原來自己真的不是編程這塊料啊」,二爺仰天長嘆,擦掉鼻涕和淚水,毅然淪為一個產品經理,不也挺成功的嗎?
當然,最近他失業了,不過,你能想象他會一輩子找不到工作嗎?如果是那樣,回來做編程,倒也未嘗不可。
寫累了,今天就此擱筆,關於這個話題,下一篇再說。
職業規劃:專屬程序員的巡禮之年