2-3 目標
來自專欄 改行CS導論
前文算是心靈雞湯,本文回歸現實。
現實對改行者是很不利的。如果我說,你隨便轉個行就能比科班的人強,那我一定是騙子,或者是培訓機構。我不願意騙你們,我可以說,改行者的現實是很不利、很殘酷的。
我深有體會的是以前看過一個CS科班出身寫的一段話,大概意思是:科班出身(本科學CS的,下同)看似沒有什麼優勢、在本科也浪費了很多時間、最後找到的工作跟改行者可能也差不多;但哪怕即使是水平一般的科班,其基礎和積澱也不是優秀的改行者所能媲美的。
這段話怎麼理解?我不覺得是歧視,說出了一些事實。
就我自己而言,我到今天,已經畢業多年,也一直感覺基礎是自己最弱的一環(當然,這裡是跟同級別、身邊的程序員比,對二線三線大公司的普通程序員應該還是碾壓的)。無論是刷題準備面試,還是工作中。 當然,現實工作中並沒有受太大影響倒是真的。畢竟工業界和學術還是有距離的,簡單的來說,有時候閱讀能力、學習能力遠比基礎重要:不會不要緊,現學現賣么。
其中的道理其實超級簡單:人多學了4年,而且還是在好學、精力集中、年輕時的本科階段。想靠兩年碩士學習就打敗4年本科+2年碩士出身的科班,其實根本不現實:說到底,就算你牛,人CS科班也是牛人很多對吧?你努力,人CS科班的難道在睡覺?而且,必須承認本科CS出身有很大的先發優勢,改行者其實追趕得非常累,比如CS科班就容易找到實習,改行的就很難,所以兩者的距離是進一步放大的。
所以我反對兩個極端:(1)學習CS需要循序漸進,不能一蹴而就;(2)CS不需要基礎,培訓培訓編程高中生就能上手。
反對(1),是因為改行者來不及,除非從本科學起,實效性差,時間和金錢資源消耗太大;
反對(2),是因為類似飲鴆止渴,短期有一定效果,長期來看發展受阻;
我個人認為的折中道路是:早期重視面試和實用技術,快速找到第一份工作,快速解決最基本的金錢和生存問題;找到工作後的中期反而注重基礎和進階的知識,同時刷題、系統設計等慢慢跟上;到後期時因為基礎、工作、面試方面都不弱,綜合起來可以開始衝擊一線大公司或是創業公司,此時的實力才趕上科班出身。
整個過程應該至少給5-7年的時間,更多也不奇怪。有人限於資質和努力,但主要是個人追求不同,一生可能就停留在早期或是中期,也是很正常的。
早期大概是0-2.5年,主要是讀書期間,以找到第一份「正經」工作為結束標誌;
中期大概是2.5年-5年甚至8年,主要是工作早期,H1B時期,兼排綠卡,加強基礎的時期;
後期就很靈活了,每個人都有自己的玩法,不提;
天資高或是機遇好的人很可能極大地縮短這個過程,比如名校改行的畢業就進一線大公司很正常,相當於是早中後期一起同時完成了,不在討論範圍內。
有人肯定會說有沒有捷徑或是其他路線。當然是有的,可惜我不知道、不清楚、沒試過。知之為知之,不知為不知。我之所以建議這樣,也是因為當前(2018)形勢下,這條路應該說最中規中矩,並且按投入產出來說,回報的數學期望很高。
那麼我試著定一下最基本的明確目標:(Primary是必須完成的,Secondary是可選(optional)的目標)
早期:
(1) (Primary)找到一份Developer的工作;
(2) (Primary)該工作支持H1B抽籤;
(3)(Primary)該工作是永久性(FTE)工作,非contractor;
(4) (Secondary)該工作年收入大於80K(灣區標準,其他地方自己調整,下同);
解釋:(1)中對developer的要求是為了職業前景,暫時不考慮Support,DevOps,QA,Tester等情況,後面具體討論;(2)是為了不浪費OPT,儘可能地最大化H1B概率,移民的重要步驟之一;(3)是為了保證工作穩定性;
早期階段的整體難度:很高。
中期:
(1)(Primary)找到一份支持辦綠卡的Developer/Engineer工作;
(2)(Primary)年收入大於120K;
(3)(Secondary)該工作是至少2、3流大公司;
(4)(Secondary)該工作技術是主流;
解釋:(1)是關鍵,移民的重要步驟之二;(2)不解釋;(3)2、3流大公司有助於build resume;(4)技術主流很重要,對後面自身的市場價值有利、跳槽有利等,是長期投資;
中期階段的整體難度:一般。
後期:
(1)(Secondary)找到一流大公司,熱門startup或是舒服的大公司;
(2)(Secondary)年收入大於240K;
(3)(Secondary)技術先進;
(4)(Secondary)Work/Life Balance好;
解釋:後期沒什麼可說的了,基本上都是optional的目標。
後期階段的整體難度:無,因為沒有必須完成的。如果實現全部Secondary,很高。
所以整體來說,最困難的是早期:早期看似時間多,有全職找工作的2.5年甚至可以拖得更長,但也是難度最大的,因為基礎和經驗都是從0開始的。學習相對低效,很多東西都不會,連聽都沒聽說過,更別說建立成熟、有效、適合自己的學習方式了。
同時,這一階段往往也是剛到美國後生活、語言等方面的轉變時期,所以要花費很多額外時間。
這個階段還因為資金有限,經濟上的壓力也很大,必須規劃好財務(假設錢很有限的情況下),防止在找到工作前生活費燒乾的困窘情況。有人可能說可以打工啊。的確如此,但是個人不推薦,除非萬不得已。畢竟打工消耗了大量時間和體力,短期解決資金,長期看則消耗了大量機會。
很多心智不夠堅毅的人在早期的壓力也是最大的。無論是適應一個新領域,還是面對自身以及周圍的壓力都是很有挑戰性的。
一旦找到第一份工作,一切就會好很多。因為一旦有工作經驗,就開始了正反饋過程:經驗帶來了更多的機會,更高效的學習,更優越的環境和更好的起點。後面的難點可能來自於需要花費大量的下班時間加強自身。CS是一個終身學習的行業,這個恐怕是共識。那些技能簡單陳舊、「簡單而且能幹到老」的職業很可能在接下來30年中面臨失業的挑戰,被自動化和AI所取代。
心靈雞湯
知乎上年輕人多。其實20多歲的年紀,膩煩或是喜歡心靈雞湯都是正常的。膩煩,是因為逆反心理、年輕有活力、夠反叛;喜歡,是因為年輕,還有夢想,喝雞湯當汽油燒。
很多知乎大神也都燉得一手好雞湯。我不善於這個,但想藉機說說:的確,尤其是改行早期,因為比較痛苦和煎熬,是需要一定心靈雞湯的,換句話說,執著的態度和堅持。
人的精神是可以調整的。為什麼這麼多改行者生存下來並且活得很好?雖然很多不利,但是這些人大多能堅持、善鼓舞自己,逐漸就柳暗花明了。
喝雞湯差不多是最廉價的興奮劑了,還沒副作用,為什麼不喝呢?到我這個年紀,雞湯基本上就無效了。在早期學會激勵自己,是蠻重要的技能。
推薦閱讀: