程式設計師生涯第一生存法則

發表於2017-07-04

程式設計師的職業生涯,第一生存法則是什麼?

追求理想、興趣與愛好? 不免有點奢侈。堅守道德、信仰與純粹? 也許太高尚了。

平衡生活與工作、兼顧家庭與公司、妥善處理人際關係、熟練掌握溝通能力與談判能力、擴大社交圈、耐得住寂寞、熬得了夜、活到老充電充到老、懂得取捨與妥協、低調做人高調做事… 本文暫不打算灌輸這類心靈雞湯。

開啟格局、擴大視野、開闊眼界、看準趨勢、遠見卓識,成為華爾街的寬客、CEO、CTO、首席科學家、首席架構師… 不幸的是,90%的量產程式設計師窮極一生,也註定無緣賴此生存,因為這個領域,天賦與機遇缺一不可。

資料結構、設計模式、演算法架構、模型抽象、作業系統原理、編譯器原理、概率統計、數論、代數、幾何、微分… 相信我,90%的量產程式設計師程式設計10年,賴此生存的時間也不超過10天。


那程式設計師生涯的第一生存法則是什麼?

很簡單,擁抱開源,擁抱變化。遠離遠離開源的公司,遠離技術落伍許久的團隊。

職業生涯,無論做什麼,第一要務是生存,而且應該是越過越舒適的生存。譬如律師、醫生,程式設計師亦是如此。

程式設計師,到 34 歲了,被公司直接或變相辭退了,是挺悲催的。

但更悲催的是,離開這裡,居然無法找到(至少)和之前同水平待遇的工作…


原因何在?

因為不少程式設計師都固執的認為自己所在的公司、所在的部門、所在的團隊會基業長青,自己只需要埋頭苦幹,耕耘好自己的一畝三分地就能安享太平。

可現實是,你的工作並不是你想象的那樣不可替代,你的業務程式碼也許一個初出茅廬的畢業生就可以接手,你的團隊、部門、甚至公司也可能會在你想象不到的時刻宣佈解散。

如果你的工作只是基於公司內部的閉源框架或陳舊的架構體系,呼叫一下介面,寫寫業務程式碼,修復一下bug,離開這裡,還剩多少競爭力呢?

試想一下,同樣是業務系統開發,一個基於Spring(稱得上Java第一開源框架)、Spark(大資料開源框架)、Kafka(訊息中介軟體)開發的程式設計師,和一個基於Spriii、Spaaa、Kafff(泛指公司內部專用的框架)開發的程式設計師,能力相當,走出這家公司誰更吃香?

再試想一下,同樣是應用開發,一個玩轉 Spring、Struts、Hibernate(Java開源老三樣)的程式設計師,和一個玩轉 Spring、SpringMVC、Mybatis (Java開源新三樣)或 Spring Boot 的程式設計師,水平相當,出去面試誰更可受歡迎?

即使只是一顆螺絲釘,也要做一顆技術領先,在外界受歡迎的螺絲釘。去哪都能如魚得水、暢快優遊。

這也是90%的普通程式設計師,首要應該思考的問題。

當然,這不是讓你心猿意馬,而是要時刻保持危機感,否則一不小心就走入了職場死衚衕。


職場上,最好的生存保障是,走出這家公司,我依然能過得很好,或更好。

公司實行成本優化,開始清退 34+ 的程式設計師了?挺好,對面那家公司正想雙薪挖人。

專案市場反饋不行,團隊面臨解散?沒事,另外團隊的 Leader 前幾日剛找我聊了,正希望我加入。

Salesforce 來推銷他們的 SaaS(企業軟體即服務)服務了,IT部門又可以優化幾個人員了。正好,那家18薪出國遊的公司正在招人,技術要求很匹配…


在一家遠離開源的公司,或技術落伍許久的團隊,即使你是首席架構、技術總監,熟練掌握公司或團隊內部的各種框架,配置和介面倒背如流,還能一一填埋這些框架的各種坑,那又如何?

35歲了,換了一家公司,也許你又歸零成了小白,因為別人不玩你這一套。

諾基亞塞班系統的專家,別說去微軟了,即使去諾西(諾基亞西門子通訊的簡稱),很多都得從頭再來。

百度 Pyramid(細節自行百度)專案組的大拿,還不如一個精通 Hadoop 配置的工程師更有市場。

SAP、Oracle EBS 開發的資深工程師,選擇公司的餘地遠比不上一個初級 React 工程師。

之前參加過一些創業專案的路演,遇到過一個專案,創始人是兩位博士,號稱研發了最先進的深度學習演算法,用於醫學掃描成像的癌症診斷。

但是,TensorFlow(谷歌)、CNTK(微軟)等深度學習開源框架的影像識別演算法,在癌症檢測方面也許可以碾壓小創業團隊所謂的絕門祕笈。挺替他們的投資人擔心的…


目前為止,只說了 90% 的普通程式設計師,那還有 10% 精英程式設計師呢?

毫無疑問,精英程式設計師更應該擁抱開源,因為那才是實現個人價值,提升個人影響力的最佳途徑。

如果 Spring 沒有開源,就不可能獲得如此廣泛的應用,Rod Johnson(Spring 之父)的影響力也會大打折扣。

如果 Lucene、Hadoop 沒有開源,很多人可能都不知道 Doug Cutting(Lucene、Hadoop 之父)為何許人也。

如果 Linux、Git 沒有開源,也許就沒有 Linus Torvalds(Linux、Git 之父)的享譽世界。更重要的是,這個世界可能會被更多的蝗蟲入侵。

注:“突然間,到處都是微軟的產品了,被蝗蟲入侵了似的。我並不是說蝗蟲是壞蛋,我喜歡所有的動物和昆蟲。” —— 摘自 Linus Torvalds 語錄:

誠然,如上的大神畢竟鳳毛麟角。但大牛級別的程式設計師走向開源,帶來的個人影響力、聲譽、技術夥伴、收入、成就感等,都是實實在在的。


說了這麼多,也許你也挺無奈的,因為你所在的專案所用的技術體系,剛好是公司專有且閉源的,那怎麼辦?

你可以默默的把這篇文章轉給你們技術領導看看,看他有沒有這個思想覺悟。

如果領導悟性不夠,半晌沒有回應,你可以提點他一下:無論實習碼農,還是技術大牛,現在優秀的人才都擁抱開源去了,我們再這樣下去,會招不到優秀的人才的…


如果非常不幸,你從事的是銀行、基金、保險、電信、電力、石油等領域的業務,而且還是古董級別的專案,領導說穩定才是第一位的。那你也有三條路可以走:

1、祈禱自己早日實現財務自由(據年初的胡潤報告,一線城市財富自由門檻是 2.9億)

2、祈禱所在的公司(部門)能夠基業長青

3、更新一下簡歷,準備跳槽吧~

那這種古董級別的專案怎麼辦?總得有人維護吧?

加薪!加薪!加薪!不能給予錦繡未來,就給予更猛烈的薪水吧!


最後,即使是第一生存法則,也不是金科玉律。因為世上總存在一些奇葩的人,碼農這個群體也不例外。

譬如我找人,最關注的還是邏輯思考能力。寫一個新演算法,學一門新語言,用一套新框架,不過幾周的事情,何必那麼糾結。

不過,玩過 Tensorflow 影像識別與目標檢測,跑過 ResNet、Inception 等網路的優先…


題外話

本文通篇都是從務實的角度來談開源的好處,事物都有兩面性,那開源的壞處在哪裡?

其實前面也提到了一點,TensorFlow、CNTK 等開源框架的演算法,完全可以碾壓大多數人工智慧創業團隊所研發的所謂獨門祕訣,特別是通用演算法領域。

也就是說,不少創業團隊、研究院、實驗室裡,一門心思研究底層演算法(包括影像識別、語音識別、翻譯、NLP等前沿領域)造輪子的精英程式設計師、研究員可能會因此荒廢多年的心血…

譬如,兩個月前,百度推出阿波羅計劃,將自家的自動駕駛平臺開放。這同時意味著,國內自動駕駛領域的不少創業團隊可能會面臨被洗牌、解散。如果今後谷歌也來這麼一出,行業震盪可想而知。

前些日子,還聽我一位在某大廠研究院視覺識別組的同學說:谷歌物體檢測與影像識別的API一開放,他們視覺組辛苦了3、4年的研發心血又白費了…

可開源是人類社會進化的最優選擇,因為只有開源,才能實現人類頂級智慧的充分共享與協作。除了谷歌、臉書,連一貫封閉的微軟、蘋果兩大巨頭都已走向開放。

開源大潮,浩浩蕩蕩,順之者勢如破竹,逆之者舉步維艱。

也許自然規律如此,人類宿命如此吧。

相關文章