1-13 改行CS的常見問題討論
說是討論,不過是我自己的個人看法而已。
問題之一: 現在還來得及嗎?
有人在之前問:「現在刷題還來得及嗎?」我覺得這個問題問得很好,這裡回答一下:
- 如果我回答:來得及!絕對來得及!再不上車就晚了!無腦刷刷刷啊!——那麼我是搞CS職業培訓機構派來的救兵;
- 如果我回答:來不及了!市場已經飽和了!灣區遍地都是CS畢業生!——那麼我大概率是沒找到工作的OPT畢業生;
- 如果我回答:跟著來蹭什麼啊!CS不容易學的!你聽答主扯淡!——那麼我是知乎普通噴子;
- 真正的我的回答:
- 比前幾年難,競爭更激烈,前幾年阿貓阿狗混幾年,基本上至少Amazon沒問題;現在難了一些;
- 比前幾年苦,LeetCode 700題了,前幾年200道LeetCode甚至會3Sum都能進Google;現在就呵呵了;更別說系統設計越來越重要;
- 市場機會還是很多,對有經驗的非常友好,對新人相對差很多;
- 我沒有找到更好、更高效的其他道路,CS還是好選擇、第一選擇;
- 你的條件和強度如何,希望你自己思考決策;
問題之二: CS是否是青春飯
這個是常見問題,很多人詬病或是不敢轉CS的原因之一。我個人覺得,不是。在國內,或許是,但美國還是有大量的上了年紀的程序員的,甚至大公司中很多骨幹和領導是40多歲的人。有人為什麼50多歲60歲的程序員少見,拜託,請查查程序員這個職業,是什麼時候大規模興起的。
我承認的是(見前文),CS作為一個競爭激烈、進化很快的行業,的確壓力相對較其他行業要高。那麼自然而然地,隨著人年齡的增加,精力有所衰退,家庭、孩子等事情又不斷分散注意力和精力,所以感覺到壓力很正常。
但是我反對的是妖魔化。國人有一種「鐵飯碗」的情節,比如公務員、教授等就是鐵飯碗,就是正途,「能幹一輩子」;而CS就是偏門、苦力。以教授為例,且不說在美國當教授需要何等運氣和機遇,就說哪怕順利當上,還要熬tenure等,真熬出來,鐵飯碗就一定比CS舒服么?你普林斯頓或是耶魯出來的學霸,讀個五年博士畢業,去個中西部農村爛校熬AP,一年8、9萬,真的就比CMU一年讀出來的速成碩士但在FLAG吃香喝辣的強么?
然而我個人的想法,「鐵飯碗」思維,根本就是錯誤的。國企下崗的都是鐵飯碗們,再往前八旗子弟最後也被迫自謀生計。我的想法還是基於市場:儘管遠離市場的行業很穩定而且不講究效率包容懶人,但說不定有一天,這些固步自封的領域自己會最終崩塌。作為第一代移民,天生就應該是有開拓精神的人,是不應該過於安於現狀和安樂的。換句話說,錢多活少穩定簡單的工作,本地人早就蜂擁而至,也輪不到咱們不是?
然而,CS的現狀是,就算,是青春飯,又如何?不提頂尖校,說說普通人——一個博士後,大概可能將近30歲才入行,收入很可能也只有4萬;一個改行的CS,如果順利,很可能26歲就能開始工作,起薪不會低於7、8萬。 同樣過了5年,博士後還是4萬多或許增加到5萬,CS的很可能就在15萬,甚至20萬30萬了。
談什麼青春飯,光看賬面,人10年把你半輩子的錢都賺出來了!更別說,年少時有點閑錢,帶來的是眼界、信心和生活質量的全面提升,也許就學會了投資,也許就早早買房,也許就娶/嫁了同樣能賺錢的另一半,使得家庭收入進一步放大。難道,博士後如果當不上faculty,就不是青春飯了?難道,我看到過的40多歲苦苦煎熬的老博後,就不是青春飯了?
青春飯問題,其實是所有行業都有的問題,不獨CS有。我看過EE的抱怨漲工資慢、累、忙;我看到過其它行業的抱怨外包威脅工作安全、抱怨工作不穩定;我看過博士後抱怨國內的J1以低價來壓縮行業空間。
恕我直言,大多數考慮轉CS的人,是沒有資格擔憂青春飯的。CS所帶來的好處太巨大,大多數人完全無法抗拒;CS帶來的先發優勢太大,使人幾乎不願意去考慮15年、30年後的事情。
我不知道改行當程序員的上限年齡是多少,我猜應該是40歲吧。就是說,如果人已經40歲,就不要再改行CS了。可是特例很多。
我不懂別的行業,但我知道CS內部有很多職位也是消亡和走下坡路的:比如,測試,和DBA。無它,市場是上帝。測試曾經是錢多活少的典型職位,很多人一涌而上,最終慢慢拖垮了微軟,微軟不得不轉型,所有測試變開發;DBA在10年前的2007年,號稱「越老越值錢、永遠不失業」,結果僅僅10年,這個行業幾乎衰落得一塌糊塗。
無它,我的理解很簡單:CS行業是最普通的叢林法則:弱者,終究會被市場淘汰。10年前跟Test、DBA賺一樣錢但出力很多的開發(Dev)們,如今風生水起、日子越過越紅火,其實,是應該的。
擴大思路,很多非CS的專業其實也是叢林法則、 市場至上的。這些行業是否存在青春飯問題,也是需要考慮的。
綜上,CS本身有青春飯屬性,但並不嚴重,還言之過早(因為行業興起成熟才30年)。
問題之三:過多的改行者是否會很快供大於求
這個問題也很尖銳。既然市場至上,那麼供應原理必然適用。
我的想法是:這個答案是肯定的,但要詳細分析之。改行者不斷湧向CS相關領域是事實的,客觀上當然增加了找到工作的難度以及競爭激烈程度。但這只是定性分析,一個人分析自己的情況時,要相對定量。
首先就是供需關係:改行群體究竟有多麼龐大、科班畢業的又有多少,此為供應;需求則決定於CS行業本身。我個人認為,供應是大於需求的,但還在合理程度上——這是因為,供應在擴張,但需求也明顯在擴張(參見前文分析);
其次就是:假設一個改行者找到工作是零和遊戲,那麼他(她)究竟是「搶奪」了誰的工作,這個問題其實才關鍵。
顯然不是本地公民的,前文分析過。事實上,本地人如果學CS,非常搶手。我個人認為,搶走的職位是屬於實力較弱的科班和其他改行者的——或許「本來」應該屬於他們的職位,被你這個改行者橫刀奪愛、拿走了。
而我個人認為,「實力較弱的科班和改行者」其實主體是數量龐大的ICC印度人以及H4們。ICC可以輕鬆搬運印度國內只有大專水平的印度人,很多人雖弱但卻逐漸在職場中成長,最終佔據了大量職位,改行者其實搶走了他們的機會。
因為我簡化的模型是:假設所有科班和改行者排隊,像高考錄取一樣擇優;那麼,儘管這個隊伍要長於高校錄取總名額,但必須看到的是,排在後面的人實力也弱得可憐,很多人根本就缺乏最基本的編程能力和一個那怕是野雞的碩士學位。
改行者則是來插隊的。改行者不需要打敗排在隊頭的高手——也不現實,但只要勝於那些茫茫多的排在後面的人,自己爭取在隊中間,就很有可能被一個普通的高校——也就是公司——錄取了。
這個比喻我認為很恰當在於:中國人改行者雖然多,但是放在印度ICC面前依然是很少的。印度7-10倍於中國人的H1B工作簽證,大多數歸功於ICC,是有數據支持的;而中國改行者讀CS Master者居多——本來就是少數派。
換句話說,不改行,這個行業的機會往往就被印度人,排在隊尾較爛的那部分拿走——也相對惡化了CS行業生態環境——這也是我始終認為,為什麼中國出身的程序員和CS從業者應該大量鼓勵和幫助同胞改行CS,是因為改行者在痛擊印度ICC,帶來的好處遠遠大於帶來的相對的那一點點競爭。
那麼,改行者有多大程度上擠壓CS科班出身的人呢?我個人認為,對名校出身或是基礎深厚或是天資高或是努力的科班來說,幾乎沒有任何擠壓——畢竟功力差太多;但對於混日子、實力不佳的CS科班來說,的確存在著不小的競爭,事實如此而已。
所以,這個問題其實又回到了我之前的一些「中國人為什麼適合改行CS」等話題:中國人的天資和努力,以及相對改行門檻高(大多學Master等),就註定了中國人即使改行者,也很容易擊敗那些人數茫茫多的印度大軍。
因此,這個問題的正確答案在於:你有多強,你自己對自己的定位。
問題之四:是否應該保守行事
這個恐怕也是最常見的問題之一。很多人肯定要問:CS雖然好,我知道,但是改行有風險,萬一失敗了怎麼辦?如果我採取更保守代價更小的辦法,比如雙學位、利用閑暇時間、半職、不讀CS Master學位等方法如何?至少我現在有一份全獎或是收入很少的工作啊!
人生當然是自己選的,我不好太幫人獨斷。誠然,很多事情中庸一些,是中國人行事之道,很多時候也非常正確。以下不過是我個人的建議:
我個人是贊同比如讀PhD期間,如果有機會(比如導師允許甚至出錢等),讀一個CS學位的,但也僅此而已,其他情況均不推薦part time式改行。兩個原因:
第一,改行CS所需要的努力很多,未來可預見的競爭也會更加激烈,勝過了大多數專業,全力以赴尚不知鹿死誰手,何況三心二意乎?有人說別人兩年CS碩士畢業,我可以part time讀四年,問題在於,改行不是簡單的時間累加,刷題、準備面試等皆有時效性,越拖效果越差,最後往往失去的是機會成本,人也更加懈怠。此外,另一個好處就是人處於無退路狀態下往往奮鬥精神爆表——能達到自己新的高度;而自己先留退路,總想著改行只是一個bonus而不是生存相關,雖然減少了壓力,但實際效果必然要差不少。
第二,改行CS一旦走過來,所帶來的優勢和豐厚回報基本上碾壓之前的大多數專業,這就造成了——原來的專業或是行業完全無用,既然如此,那為什麼要在上面浪費時間呢?可以多問那些雙專業的人們比如生物、化學的PhD畢業者,可以看到,他們絕大多數應該都是用CS Master在找工作。
所以,我個人認為,有幾種情況是不需要考慮雙專業、part time改行或是類似的保守策略的,直接簡單明快地改行即可:
1. 剛入學,無論Master還是PhD,反正沒有什麼成本;
2. 本科;本科迴旋餘地非常大不提;
3. 能夠承受改行失敗——比如經濟暫時不會出現危機、可以退回原專業、身份無憂等;
當然,現實地講,當然有幾種情況必須考慮保守策略:
1. 身份可以加快。比如PhD快畢業了,EB1有望,沒必要太著急改行;先身份再改行也是光明大道;
2. 運氣非常好,找到了本行業好而且穩定舒服的工作——是否折騰,就要看個人選擇了,有時候不確定性太大的情況下,不如繼續干本行,或是可以「改改看」、慢慢嘗試著改行;
3. 完全不能承受改行失敗——因多種因素——家庭、子女等;
4. 缺乏改行的資金,只能保守策略,一邊籌集資金,一邊改行;
5. 非常熱愛當前專業;
6. 有很強的自我驅動力和堅持,可以長期為同一個目標努力,這樣的人part time改行也會成功;
人總是有惰性的,但比惰性還可怕的是看不到沉沒成本。很多時候一個人自以為穩重、考慮周全有退路有最低保障的道路,其實是沉沒成本很高的一條路——看得到的改行風險,其實比被忽視的沉沒風險要好處理很多——很多人不知道的是,讀完這個火坑專業的PhD,年輕的時光也就永久的失去了。人越長大,只能越趨向於保守和中庸,而很少有越來越激進者。這就導致了——有時候年輕的時候都不肯改行,再長几歲就更不肯了——這也是為什麼那麼幾個好專業大家都知道,但最後大多數人還是從事自己的行業,不管喜歡與不喜歡,收入高與低。
真正經歷過,我才發現,很多時候膽魄和眼光,其實比技能要
綜上,對於大多數改行者來說,應有奮力一搏、奮起一擊的覺悟和計劃,尤其是趁著年輕時,銳氣正盛,精力充沛,學習勁頭正足,更是要抓住機會。隨著在從前行業中沉沒越深,人越失去勇氣和改變的動力,最終往往改行成為畫餅,成為年邁後的談資和遺憾。
推薦閱讀: