半路學程式設計,可以成為大牛嗎?

zhihu發表於2015-08-14

  不說雞湯,談談現實:半路轉行做軟體工程師的人,他們的職場現狀是怎樣的?

  一、為什麼會要改做程式設計師?

  因為工作原因,在日常生活中,有很多人向我諮詢職業生涯的抉擇。他們大都對自己的職業現狀不滿意,打算學習程式設計成為一名程式設計師。

  我問,為什麼想要做工程師?

  答案五花八門,其中“工資高”、“好找工作”、“有職業發展”是很常見的理由。

  二、半路轉行做程式設計師,在求職市場上的現狀如何?

  拋開其他因素,先只討論薪水:業界標杆 BAT 的薪水如下(圖表為100offer 製作)

  百度 

百度.jpg

  阿里

阿里.png

  騰訊

騰訊.jpg

  但對於大多數半路決定做程式設計師的人來說,上圖這樣的薪資是很難達到的。

  多數半路學程式設計的人,是通過培訓班來速成的。在開發的求職市場上,如果你是通過 IT 培訓班學習的,那一定會面臨尷尬的境地:不管真實水平如何,都會在求職過程中受到“隱形的歧視”。

  為什麼企業不願意給培訓班學生 offer,甚至連面試機會也不安排?

  我摘錄幾個招聘者對此的看法—— 

  • 某創業公司 CTO :“X智、X馬的學生沒有基礎,在實際工作中後勁不足,學新東西慢。”

  • 某網際網路巨頭 HR :“IT 培訓班的老師本身水平就層次不齊,程式碼能力強的人不會去當培訓老師。”

  如果深究根本原因,“優秀人員率”是關鍵。

  企業招開發,好比在籃子裡挑雞蛋(人才)。北郵這樣的計算機名校,好比一籃子雞蛋,只有10個質量次等的;培訓班,好比一籃子雞蛋,只有 10 個質量優等的。

  如果你是公司的技術 leader 和 HR,在要保持招聘效率的情況下,會如何選擇呢?

  實際情況是殘酷的:儘管很多培訓班在招生收費時,一再承諾“培訓完包找到月薪 XXXX 的工作”,但很多培訓班的學生進入求職市場時,卻遲遲找不到工作。找到的工作的人中,平均薪資也不高。

  當然,培訓班或者自學的程式設計師,也有不少非常優秀的人,論薪資完全不輸於北郵這種名校的學生。如何成為這樣的人?

  三、如果不是名校科班出身,怎麼使自己脫穎而出?

  一個有趣的現象:有些去上培訓班的學生,其實是正兒八經的四年本科計算機專業畢業生。為何還要去上培訓班?因為在四年的大學中,他們並沒有掌握應有的能力。

  相反,有些自學成才的人,也成了同事眼中的大牛,我舉兩個例子:

A,中學時對計算機和數學感興趣,大學學習數學,畢業時放棄了國外數學專業的 offer,進了國內網際網路巨頭做程式設計師。在大學期間的 ACM 經歷、和同學合夥創業做網站的經歷,是他求職網際網路公司時 offer 拿到手軟的核心競爭力之一。

B,學習任何東西都很快,大學學的工商管理,畢業去某跨國軟體巨頭做銷售,年入幾十萬。後來突發心血學程式設計,完全是通過網路資源自學。通過幾個有影響力的個人專案,成功應聘開發職位,同樣成長很快。

  藉由上面兩個例子,我想說的是:學程式設計並不是一件輕鬆的事。如果你本來就對此感興趣,或者學習能力強且有毅力,成為一個高薪的開發並不難。如果你對程式設計不感興趣,學新東西效率低下,只是奔著程式設計師工資高(其實有很多工資不高的程式設計師),去報個培訓班學程式設計,那麼希望自然是渺茫的。

  在能力突出又非科班出身的情況下,可以通過影響力大的個人專案、閃亮的 github 個人頁、ACM 等來為自己的能力背書。也可以在程式設計師聚集的社交網路活躍,得到其他大牛的認同,他們自然願意幫你內推。

  四、半路學程式設計的前輩們,他們的成功經驗

  寫了江民防毒的王江民先生,三歲時因患小兒麻痺後遺症而腿部殘疾;他初中畢業後,回到老家從一名街道工廠的學徒工幹起,最後成為擁有 20 多項創造發明的機械和光電類專家。38 歲的時候,江民開始學習計算機。幾年後,他就成為中國最早的反病毒專家,創立了影響力巨大的江民防毒。

  王江民先生,就是我前面說的那種學習任何東西都很快、又有毅力的人。這樣的人,無論做什麼事都能成功。或許對於王江民的故事,你早已爛熟於心——

  那我再說一個 22 歲學程式設計,最終進了 Facebook 的程式設計師的故事

  他的天賦和經歷,和我們常人的差距不算很大,是很好的學習榜樣。事情的緣由是這樣的:有人在 Quora 上提問,"如果我想成為一名頂級軟體工程師,17 歲開始學程式設計,還來得及麼?"曾經在 Facebook 做開發的 Don Pinkus 在這個問題下,分享了他從 22 歲開始學習程式設計的經歷。

  原文見When are you too old to become an engineer? ,現翻譯如下(Don Pinkus 自述視角):

  我,Don Pinkus,22 歲才開始學習程式設計,以下是我學習經歷中的里程碑:

  • 22 歲 – 我學會了什麼是 if 條件判斷語句;

  • 24 歲 – 我進入 Facebook,成為了一名分析師;

  • 25 歲 – 我在 Facebook 的職位變成了工程師;

  • 26 歲 – 我用業餘時間做了個小專案,賺到一大筆錢。我覺得自己繼續留在 Facebook 拿死工資,永遠也不可能賺這麼多錢,於是我便離開了 Fackbook,用這筆錢開了一家創業公司,並從一家頂級風投公司處獲得一大筆投資。

  我今年 26 歲。我很幸運,但我並不特別。只要你也像我一樣,全身心投入到一件事中,你一定也能成功。接下來,我將敘述我的經歷,希望可以激勵你去做感興趣的事。永遠不要因為覺得“太晚了”而放棄一個新機會,放棄學習新知識。

  • 2007 年(18歲):我進入 Vassar College,成為醫學預科班的大一新生;

  • 2008年(19歲):大二這年,我轉專業,開始學習經濟學;

  • 2009 年( 20 歲 ):大三這年,我感染了 mono 病毒,大部分時間都躺在病床上,不能去學校上課;

  • 2010 年 7 月( 22 歲):這一年,我大學畢業了,進入 Morningstar 公司工作,從事資料分析。我在 Morningstar, 一家金融公司,做一名資料分析師,那時的我還完全不懂程式碼;

  • 2010 年 8 月( 22 歲):我為 Morningstar 的新主頁出了個 idea,他們很喜歡。

  我提出為公司開發一個新主頁,公司的人很喜歡這個 idea,因此給我安排了一個 五人團隊來完成此事,雖然這五人都是新招進來的兼職員工。 

  我常常會冒出新想法,但沒有能力自己實現,因此只能求助其他團隊成員來幫忙。他們是兼職員工,除了我的專案外,還有自己的本職工作要完成。我希望加快專案的進度,於是便開始學習程式設計。

  2010年12月(22歲):開始學習程式設計,專案:FindData

  我開始學習 HTML、CSS 和 Javascript,這三種語言可以構建網站,不論是部落格、普通的網站、還是 Facebook —— 所有這些網站都可以用這三種語言寫成。

  我開啟www.w3schools.com開始學習。通過在這個網站的學習,我掌握了 HTML 和 CSS,並幫我父親的公司開發了公司主頁。現在看來,這個主頁完成得非常差勁,所以我父親沒用——哈,這真是個明智的選擇。

  接著我去http://lynda.com,掌握了 jQuery,本質上它其實是 javascript。現在,我可以幫一個網站做出互動式原型了。

  還是在http://lynda.com上,我又掌握了 PHP 和 MySQL。這樣,我就可以把資料存在資料庫中,網站就有了後端。到這時為止,我算是成為了一個全棧程式設計師,可以搭建自己的完整 web 應用了。

  從對程式設計一無所知,到能搭建一個完整的 web 應用,我只花了兩個月時間。雖然這個 web 應用看上去還不夠好,但至少能用了。

  2011年(23歲):Morningstar 沒使用我的專案。同時在這一年,我完成了四個網站,專案:FindData、BarCraft、Morningstar 圖形互動、Amuse

  我的產品 FindData 完成後,Morningstar 卻不喜歡,所以他們最終沒有使用。後來我意識到,這其實是個明智的選擇,即使是現在的我來選,也不會使用這個不完善的產品。

  但當時的我,對這件事耿耿於懷。我申請轉去了新團隊,新的工作裡,我每天都要和 Excel 打交道。

  我真不喜歡這樣的工作,於是我每週用一天時間完成本職工作,另外四天都拿來學習程式設計。我幾乎每個月都會完成一個新的網站,這樣持續了五個月的時間。

  2012 年(24歲):我進入 Facebook ,成為一名分析師。專案:Tickur、Lookgr、Roomidex、Searchnwork

  我在 Facebook 最初申請的職位是專案經理,但幾輪面試後,我被拒絕了。幸運的是,Facebook 的資料分析團隊對我很感興趣。也許是因為我著迷於網站,懂數學,同時還有金融行業背景。幾輪面試後,他們錄用了我。

  在 Facebook 的那段時間,工作環境促使我快速成長。周圍的同事都比我厲害,因此我不得不盡最大的努力,讓自己跟得上團隊的腳步。

  在 Facebook,我學到了世界上最優秀的科技公司的運作祕訣。Mark Zuckerberg 做決策時,從不盲從“資料驅動 data driven ”、“最小化可行產品 minimum viable product”這些流行術語。

  白天,我學著如何運作一款產品、一個專案、甚至是一個公司。晚上,我繼續學習寫程式碼,實現自己的想法。現在想想,我當時的程式碼非常糟糕,但程式碼水平在快速進步。我從中獲得了很多經驗,建網站的速度也越來越快了。

  2013 年(25歲):我成了一名Fackbook的工程師。專案:DataFinder,一個 Facebook 的專案

  我不是個優秀的工程師。雖然我知道什麼是 inheritance,在構造個人專案時,也能用 PHP 完成,但也僅此而已了。我甚至不知道什麼是排序 sort,並且對演算法和資料結構一無所知。我知道的僅僅是:分析團隊使用的內部資料工具,還可以做哪些改進,同時我還知道該如何做。因此,我以工程師的身份加入了資料團隊。

  雖然,我寫程式碼的速度可能只有科班出身的工程師的十分之一,但感謝我分析師的職業經歷,同時在互動及設計上的能力,所以團隊內部對我的評價很不錯。

  2013 年 4 月:業餘時間,我開始做http://Blockspring.com。專案:Blockspring

  在業餘時間,我和高中同學 Paul 合作一個專案 Blockspring。他是個聰明又努力的人,但在程式設計上比我還業餘,只懂一點基礎。那時候,他剛辭去了諮詢師的工作,開始創業。

  我們專案的其他創始人都是兼職的,Paul 是第一個全職加入的。那時候我已經接過很多私活了,但 Paul 是我第一個真正意義上的合夥人。其他幾個創始人常常對網站的設計,還有是否要加入一些小功能而爭論,這浪費了大量的時間和精力。

  我並非想說我的第一批創始人不好,錯誤主要在於我:不知道如何處理與他們的關係,也不懂如何為大家設定預期目標。當你管理一家創業公司時,你要做的最重要的事情之一,就是為公司設定好目標及所有權。最終,我們還是完成了 Blockspring 專案。

  2014 年 3 月(26歲):為 Blockspring 找到了客戶

  我們嘗試向許多公司推銷 Blockspring,但都以失敗告終。我們在部落格上公開了產品簡介,一個來自紐約的人認為它挺有潛力,於是我們便飛去紐約向他推銷。我們最終還是沒能將產品賣給他,但他承諾出錢讓我們留在紐約一週,好繼續開發Blockspring。 

  我向 Facebook 申請了一個星期的假,留在紐約繼續開發 Blockspring。

  Facebook 允許員工業餘兼職。很多工程師都有自己的業餘專案或興趣愛好,如果公司想留住那些有創業精神的員工,就必須允許他們追求自己的夢想。同時你也可以把公司環境建設得更有吸引力,讓他們覺得相比兼職,他們更喜歡這份本職工作 —— 這是不是很酷炫的想法?去Fackbook 工作,體驗一下吧!

  但無論是我推廣 Blockspring,還是花時間繼續擴充套件它的功能,都分散了我的精力,讓我無法集中精力做好 Facebook 的本職工作。我認為這無論對公司,還是對團隊都不公平。如果我還想繼續開發Blockspring——雖然這個網站幾乎沒有使用者——我就不得不離開 Facebook。於是,我便辭去了 Fackbook 的工作。

  感謝 Facebook 給我提供了全世界最好的工作,不僅有高額薪水和非常好的福利,還讓我交到了很多好朋友。

  2014 年 6 月:Y-Combinator公司

  我們加入了Y-Combinator公司,這家公司提供資源幫助初創公司快速發展,是家非常棒的孵化器。我們忙碌了三個月,每天的工作時間長達 16 個小時。 

  多數人在一個專案上,連續工作兩天就會感到厭倦了。在剛加入 Y-Combinator 的時候,我們在白板上寫下了一個數字:85。這意味著從那時算起,到產品演示,我們總共只有 85 天時間來完善產品。我們夜以繼日地工作,最終在約定的時間內完成了產品,也因此獲得了投資。

  2014 年 8 月:回到正常生活

  我們結束了與 Y-combinator 的合作,搬到了舊金山的新辦公室。我休息了一個月,週末去做些自己的事情而不是 Blockspring。現在我又忙碌起來了,完善一些 Blockspring 相關功能,學習影象、動畫、部落格的技術,在網上瀏覽別人的交流學習經驗。

  以上便是我的全部經歷,希望對你有啟發。

相關文章