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