不說雞湯,談談現實:半路轉行做軟件工程師的人,他們的職場現狀是怎樣的?
一、為什麼會要改做程式員?
因為工作原因,在日常生活中,有很多人向我諮詢職業生涯的抉擇。他們大都對自己的職業現狀不滿意,打算學習編程成為一名程式員。
我問,為什麼想要做工程師?
答案五花八門,其中「工資高」、「好找工作」、「有職業發展」是很常見的理由。
二、半路轉行做程式員,在求職市場上的現狀如何?
拋開其他因素,先只討論薪水:業界標桿 BAT 的薪水如下(圖表為100offer 製作)
百度
阿里
騰訊
但對於大多數半路決定做程式員的人來說,上圖這樣的薪資是很難達到的。
多數半路學編程的人,是通過培訓班來速成的。在開發的求職市場上,如果你是通過 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 相關功能,學習圖像、動畫、博客的技術,在網上瀏覽別人的交流學習經驗。
以上便是我的全部經歷,希望對你有啟發。
本文為 100offer 互聯網人才拍賣原創 ,首發自知乎@luckystar 的回答。
From luckystar
半路學編程,可以成為高手嗎