程序員中的老司機們,30后的路該開向哪里?
我是程序員,也是老司機。我已過而立之年,也還沒過而立之年——年紀是到了,卻還沒有立,不論是立德、立言還是立功。你問我慌不慌,我問你路在何方。
我當程序員數數日子,八年有余,自封老司機也不算太過分,至少寫過的代碼比吃過的鹽多。那些碰到過的臭蟲,被指派的需求,請求的網頁,搜索的問題,都是沿路的風景。你問我風景美不美,我問你前路在何方。
我寫過客戶端、做過網站、寫過后端服務,踩過的坑,多過別人埋過的地雷。網頁開發很無聊,客戶端適配也枯燥,服務器高并發只能靠重啟。你問我焦慮不焦慮,我問你午夜加班鍵盤聲,是不是如同窗外蛙鳴焦躁不安。
你問我迷茫不迷茫,我問你前方該左移還是右移。
30 了,寫代碼十年八年了,老司機們coding的時候很熟悉左移和右移,但是開車到這個年紀......想想當年讀著侯捷的書,看著人家「左手程序右手詩」,羨慕著他的功成名就,文筆風流。到如今,開始流行「左手右手一個慢動作」,動作一慢下來,就開始在想:
30 歲以后的路,該怎么走?是該繼續碼代碼,還是轉管理?還是左手程序,右手做點其它的營生?那幾年以后,左邊的手藝是不是該放下了?還是勇敢創業?30歲后的路,該左移還是右移?
代碼能寫一輩子么?這是個問題。英國的莎士比亞并沒有告訴我們答案。85 年的我,身邊不少30歲左右的程序員。一起看看,在寫代碼的這條大路上,老司機們的焦慮和迷茫。
左:做工程?右:轉算法?
我雖然工程出身,不過也涉獵算法,面試過的算法候選人也有幾百個了。有一個面試的原則是,算法得在白板上寫寫代碼。不寫代碼,那是耍流氓。不是說模特都開始學習 Python 了么,光簡單寫寫 Python 腳本,就敢號稱自己是深度學習的高手,那我們找一個數學系的學生得了。
人到 30, 雖然還不算人到中年,還不需要保溫杯,不過前路到底如何走,也是操碎了心。身邊有不少朋友,覺得自己寫不動代碼了,打算轉算法。
總結了一些寫代碼的人想轉算法的理由:
- 算法工資高,年薪幾百萬美金的科學家不少。
- 算法可以長久做,很多科學家都是大器晚成。
- 擔心自己再過幾年寫代碼真寫不動了。
- 寫代碼的市場競爭力在走低。
- 寫代碼有點過時了,現在人工智能和深度學習這么火,應該趁熱打鐵。
- 目前是算法工程師溢價的最佳時期,正如是人工智能泡沫最大的時期(假如有泡沫的話)。
有個朋友他目前所在的團隊,工程是他從業的公司里最好的,比一些大公司還出色。跟我說基于一些考量,想找個專注做算法的工作機會。我說,其實我身邊不少做工程的人,都能拿到年薪一兩百萬。你身邊專門做算法的,現在能拿到年薪百萬的有幾個?朋友已經做了決定,怎么勸都沒用。
很有意思的是,我之前面試過一個學生,算法基礎很好,在微軟實習過。但是他覺得做算法很無聊,學不到太多工程的經驗,大部分時間在調整網絡結構,調試模型參數,跑實驗,改腳本。想找一個能好好寫代碼的工作。
可見,你想往東走,可能東邊的人正想往西走。如同圍城,城外的人想沖進去,城里的人想逃出來。各有各的苦惱。做工程就一定比做算法差么?事實并不見得:
1.工程的工資也不低。
谷歌傳奇 Jeff Dean就是偏工程的大佬,他的工資可不見得比任何機器學習的大佬低。能搞出谷歌三大神器(Bigtable, Mapreduce, GFS),做出機器學習平臺 Tensorflow,照樣牛逼。算法不夠好,我們不妨了解算法專注工程啊。算法也需要訓練、GPU、分布式、存儲、嵌入式,都是工程師的機會。
國內不少牛人,也主要是工程出身。像阿里巴巴合伙人多隆,級別 P11,他一個人能頂一個高效頂尖的團隊。看他做過什么——文件系統 tfs、key-value 系統 tair,cache、搜索、通訊框架...別告訴我這些是算法或者深度學習的活兒。百度出過戴文淵這樣的算法牛人(目前第四范式創始人),也有林仕鼎這樣的工程好手。你問我誰比較厲害,我只能說各有春秋。
2.不見得每個做算法的都可以長久
算法干得長久的固然有,但不見得每個做算法的都長久。舉個簡單的例子,大家回顧一下整個數學發展,出過的少年英才多,還是大器晚成的數學家多?高斯,歐拉,伽羅瓦,阿貝爾,哪個不是少年成名?
算法更新較快,更需要創造性。我敢說,國內的大部分公司,并不需要科學家,也請不到稱得上“家”稱號的科學家。原因很簡單,聰明的工程師看看論文也能實現出來。做得快,訓練快,調試快,各種超參數、網絡結構等快速做實驗,靠工程能力,快速高效搞定優質的大數據,效果比什么都管用。
3.工程師究竟能寫到幾歲
就看操作系統和編程語言的幾個大佬吧。Linux 之父 Linus 雖然成名早,現在也快 50 了,他不寫代碼了么?C++ 之父,1950年出生,依然活躍在技術圈。
Python 之父,1960年出生,這會兒依然在技術公司任職,目前應該在Dropbox。你可能說這些人都是大佬,沒有參考意義。我身邊接觸過的幾個 CTO, 目前依然在寫一些代碼,能加班,能 Review 代碼。
C++ 之父
4.寫過的代碼,都是你的財富
寫過的代碼版權歸公司,但都是你的財富。寫一百遍一樣的代碼,沒法增值,但是踩過一百個不同的坑,就是你獨有的經驗和價值。剛畢業的人沒法有,正如剛畢業的人沒法有歲月雕刻的皺紋一樣。
有一個很有意思的問題,我面試的大部分工程師,哪怕比較資深的,對機器學習都沒什么概念,別說DNN,CNN,LSTM等,對決策樹,SVM,CRF也完全陌生。相反很多北大清華的應屆生,對這些目前熱門的機器學習算法都比較熟悉,不少在相關的領域中,使用這些算法發表過論文。換句話說,年輕人搞新算法更有優勢。
5.人工智能和深度學習這么火,工程要趁熱打鐵
人工智能是很火熱,但人工智能公司里大部分都是工程師,科學家和研究員沒幾個。老板不會給你那么多時間搞研究,能跟上最新的研究成果,就足夠在業界領先了。最好的百度可能需要最牛逼的科學家,但是Top 10靠牛逼的工程師就夠了。人工智能創業百花齊放,AI + 傳統行業的機會多多,目前人工智能的機會,肯定不是一家兩家贏者通吃。
6.泡沫總會過去
泡沫,總是容易過去的。等你學好了吳恩達的機器學習課程,做好了面試準備,可能到時候你的競爭力還不如普通架構師值錢。
上面潑了這么多冷水,不是說做工程的轉算法就不行。什么樣的鞋子適合自己,穿一穿就知道了。給幾個自己的看法:
- AI 公司很多,這些公司的工程師職位更多。
- 不要什么熱搶著去做什么。安卓熱,你做安卓,小程序熱,你怎么不轉小程序?
- 算法好的,不妨學學寫好代碼。代碼的優化,對算法的效果也很重要。
- 工程好的,不妨學學算法,看看機器學習的資料和論文,了解常見的 Task 使用的算法,了解主流的機器學習算法、工具、平臺。
- 是武學奇才的話,不妨練練老頑童的雙手互搏,算法和工程兼修。向谷歌大牛 Jeff Dean 看齊。
- 擅長什么,不要放棄。擅長工程,就不要眼紅人家搞算法的。堅持到底,路才能更寬,走得更遠。
Google 大神 Jeff Dean
左:打工賺錢? 右:創業冒險?
當技術積累到一定程度的時候,大部分人都會技癢難耐,考慮創業。原因有幾個:
- 給別人寫代碼,期權從幾千股到幾萬股, 比例從毫不知情到萬分之幾、千分之幾就不錯了。自我感覺很好,但并不是創始人,也不是早期員工。高回報和自己關系不大。
- 公司發展很快,不代表自己發展很好。
- 你需要給自己一次超越領導的機會,需要一次彎道超車的機會。
- 你喜歡什么事情你來安排,你說了算。你不喜歡別人指指點點,尤其是那些不那么讓你服氣的人。
- 你喜歡冒險,未知的世界真刺激。
- 你喜歡挑戰,挑戰技術、管理、產品、運營。在全方位的挑戰中,你的閱歷得到豐富,思考得到升華。
- 你有好的產品想法,想要讓它在你手里變成現實。讓用戶喜歡、受益、著迷享受,你喜歡著用戶的喜歡,你憂傷著用戶的不便。
- ……
30 了,寫過的代碼如同作家,早已著作等身。30歲的你,坐在冷板凳上,可能寫過了網站,寫過了 Java,寫過了 C++,甚至也趕上了機器學習、深度學習的熱潮。你發現,你需要更大的挑戰。于是,很多人創業了——不管是萬事俱備,還是僅憑一腔熱血,總之,你沖上去了。聽說創業成功的比例萬中無一,但是你管不了那么多,且行且走吧。
一些朋友,是連續創業者。十個人以內的小團隊,堅持好幾年,這個項目不見起色,就換另一個項目。什么都需要自己干——融資自己想,項目自己拉,招聘自己做,核心代碼自己上——真累啊。有些人堅持了幾年,產品沒用戶,收入不見增長,終于放棄了。這類朋友,可能加入 A 輪后的公司,當個技術負責人。也許了此余生,也許只是短暫的休息,等待下一次的創業旅程。
一些朋友,在 BAT待過三四年,級別不太高(T5 到 T6)年薪四五十萬。眼看著在大廠加薪升職希望渺茫,他們開始尋求捷徑去創業。找個早期公司,有 BAT 背景,加上溝通能力,以及帶隊經驗,和創始人一拍即合,第二天就開干。但多數創業沒有太好的起色。盡管給了CTO 的職位,除了技術以外也不擅長別的,也不好意思和老板提加薪。幾年下來,薪資是高了一些,并不比同期專攻技術的朋友薪資高。創業幾年,有的朋友從四五十萬發展到了年薪百萬,運氣好的去了美團、頭條、小米,期權價值更是翻了好幾倍,或許早身家上千萬了。
面試過幾個候選人,在創業公司當過 CTO或者合伙人 ,技術深度一般,擅長的是技術廣度。其實很多創業公司的產品,技術含量并不高,哪怕你做了前端,又管理后端,你的能力在市場上不見得比 BAT T6 以上的高。加上天天會議,代碼生疏,技術深度并不夠,大公司的高管你搞不定;A 輪+明星創業公司,技術總監你也搞不定。這幾年忙各種需求,人工智能的算法也完全陌生。這類候選人,也許三四年前在 BAT 是 T6 的級別,面試過后我們也只能給到 T6 的待遇。因為沒有人會為你全面但不突出的能力買單。
每個人都有自己的路,別人的路不一定合適你,適合你的路也不一定適合別人。大家都需要根據自己的能力,心態,綜合決策,再做出是繼續給別人打工,還是單槍匹馬出去闖江湖。
張愛玲說,“出名要趁早”。你看00 都開始創業了,再不創業,眼看就成老老一輩了。不過,成名的畢竟少數,創業成功更是鳳毛麟角。30 歲左右的我們,在放棄穩定的工作之前,也先別慌,了解下行業,了解下商業,再決定要不要踏上創業這條孤獨的不歸路。
不創業,也沒問題。平凡之路,也有其幸福,有其榮耀。
結語
30 歲了,我們有過榮耀,有過痛苦,有過迷茫,正如樸樹的《路途》唱到:“我們路過高山,我們路過湖泊,我們路過森林,路過沙漠,路過人們的城堡和花園,路過幸福,我們路過痛苦,路過生命中漫無止境的寒冷和孤獨”。
這是個旅途。路途多歧路,歧路中有幾個困惑和選擇:做工程還是轉算法?打工賺錢還是創業冒險?
30 歲了,不管是否三十而立,總歸我們都是成年人了。面對困惑,我們都應該深思熟慮,做出成年人的選擇。
這世界真好。
每個選擇和機遇的岔路口,轉身都會迎來截然不同的精彩人生。此刻你若有所思的時候,有人在更新簡歷,有人在準備面試,有人拿了offer走在升職加薪的路上。