工作六年感悟 (1):程式設計師的選擇

LeftNotEasy發表於2016-08-15

工作六年感悟 (1):程式設計師的選擇

前言

很多年前,剛剛從大學畢業的時候,很多公司來校招。其中最爛俗的一個面試問題是:“你希望你之後三到五年的發展是什麼?”。我當時的標準回答是(原話):“成為在某一方面能夠獨當一面的技術專家“。後來經歷了幾家不同的公司,換了不同的方向,才知道這個真是一個很難的問題。因為兵無常勢,什麼東西都是在不斷的變化,一早的時候看好的東西可能會被淘汰。

(幾乎)沒有人能夠看準技術的下一個方向,因為這個問題實在是太難了,能夠做到這一點的你就成為了技術界的巴菲特了。比如說01年加入Google,07年加入Facebook,00年加入阿里巴巴。做到這一點的人肯定有資本也有眼光去做風險投資,就算不做風險投資那麼財務自由也是妥妥的。

現在畢業六年,從北京到上海到矽谷,從國內網際網路公司外企,看到了公司好的地方和壞的地方,這裡只是根據自己的經歷寫一些大方向選擇建議,僅供參考。

哪種程式語言?

語言是每個程式設計師做出的第一個選擇,經常能夠看到各種討論說這個語言NB那個語言SB,其實每個流行語言本身都沒有什麼問題,因為它們都是來自一群超級大牛的努力。絕大部分的語言之爭都是來自於懶惰不願意去學習新的語言而已,不過那麼作為學習的時候,什麼語言最重要呢?

我的建議是:

對於你想做的方向,看看哪個語言有最多的成功的專案就是了。比如說你想做前端,就學JS,參考Angular.js/React.js,如果想做大資料,就學Java,參考Hadoop。對於一些語言如果只是看起來簡單好用但是沒有什麼成功的專案的支撐,那麼對不起了會這種語言的平均工資肯定上不去,因為能給出好價錢的公司不太會用這種語言。

另外建議至少會一種指令碼語言,比如說 Python/Bash 之類的,能夠讓你在開發的時候事半功倍。

金錢還是興趣?

是選擇可能讓你掙到更多錢的方向呢,還是選擇一個自己更加喜歡的方向?

遊戲一直是伴隨著我學習的朋友,尤其是暴雪的遊戲,玩了六年的星際/CS,玩了三年的魔獸,玩了八年的Dota(1/2)。 在大學的時候,做了一些3D遊戲的專案,瞭解關於3D遊戲引擎和遊戲AI的知識,所以在大學畢業的時候,希望自己未來的事業是能夠參與一些NB的遊戲,比如說GTA、使命召喚之類的。

校招的時候投了好多公司的遊戲崗位,比如說騰訊、網易、還有當時很火的Popcap。為了準備校招,我還裝上了好幾個網遊體驗了一下(我不玩網遊)。這些遊戲低齡化的設計和對人民幣玩家的趨之如騖讓我感覺自己未來要做的事情是精心設計一套系統然後吸引未成年人上鉤,這種感受讓我對國內這個行業產生了徹底的懷疑,除開一些獨角獸級別的團隊(比如說Minecraft、Supercell)能夠在遊戲性和賺錢中雙豐收,其他大部分的網遊,特別是手遊,都是披著遊戲外衣的吸血工具。

遊戲行業最大的吸引是薪資,當時市場上最好的薪資待遇,基本上是遊戲公司給出來的。當時內心裡面很糾結,到底要不要為了五斗米折腰呢?後來看到了雲端計算、資料探勘這個方向,對於裡面的技術非常感興趣,也覺得這個方向能夠真真正正的改變我們的生活。所以在拿到了某雲端計算公司的Offer後(比遊戲公司能給出的低不少),毫不猶豫的放棄了遊戲這個方向。

回頭看來,自己當時的選擇真的很對,每天上班做著自己不喜歡的事情只是一種煎熬,不管是做什麼,只有興趣才能成為自己正常的動力。而且從長期來看,帶著興趣工作能夠讓你對這一塊的技術迅速的瞭解,未來增加的收益可以彌補掉當前虧的那一部分,也不會覺得工作那麼辛苦,畢竟工作時間佔了你除掉睡覺時間的一半多。

開源還是閉源?

首先看看平臺是開源還是閉源。比如說做資料庫開發的是選擇Oracle還是MySQL,做伺服器開發的是選擇Windows還是Linux。在現在這個時代稍有實力的企業都會選擇成熟的開源產品而不會選擇閉源軟體,因為用了閉源軟體等於把自己給鎖在裡面了。

然後對於你正在做的這個專案,如果它是一個開源專案的話,爭取能夠為它做出一些貢獻,如果能夠為成熟的開源專案作出貢獻可以讓你的簡歷加分不少。另外一個明顯的好處是,如果專案開源的協議是Apache或者MIT之類的話,你跳槽之後也可以沒有任何顧慮的用之前的程式碼了。所以有機會的話,說服老闆把你正在做的專案開源吧!

參考一篇文章:《開源軟體正在蠶食這個世界》。另外連微軟都在擁抱開源了,你還在等什麼呢?

值得說一下,只是把專案原始碼放到Github,沒有使用者的反饋,沒有其他開發者的參與,沒有版本釋出的專案不是一個合格的開源專案。還有回覆郵箱才給程式碼的行為跟種子回覆可見是一樣的惡劣!

工作還是生活?

這個是很難平衡的一個地方,整日加班會讓你過度疲勞,很難有時間去思考。要知道好的方向的好的程式碼都需要在大腦比較輕鬆的狀態下得到。過於關心生活容易讓人死於安樂,過了幾年市場變化之後一裁員就發現自己已經很難找工作了。

個人覺得一個重要的標準是來自於,加班的動機是什麼?是老闆畫了大餅後打的雞血,是老闆不喜歡員工早點回家,還是因為自己真正喜歡做這個事情。如果只是因為老闆畫的大餅(比如說期權),如果一旦沒有實現很容易會心理失衡。如果是老闆不喜歡員工早點回家,你最好還是換一家公司吧。

如果加班不是出自於自己內心對技術的熱愛,還是最好少加班,因為你在犧牲自己的家庭的生活、精力來做自己不喜歡的事情,完全是得不償失的行為。

總結

個人最重要的是,在碰到任何選擇的時候都要自己獨立的思考,隨大流的意見往往是最差的意見(參考《烏合之眾》)。多給自己時間去思考,用開放的態度去看待自己碰到的事情。那麼這樣的選擇往往是不錯的。

相關文章