半路學程式設計,可以成為大牛程式設計師嗎?
不說雞湯,談談現實:半路轉行做軟體工程師的人,他們的職場現狀是怎樣的?
一、為什麼會要改做程式設計師?
因為工作原因,在日常生活中,有很多人向我諮詢職業生涯的抉擇。他們大都對自己的職業現狀不滿意,打算學習程式設計成為一名程式設計師。
我問,為什麼想要做工程師?
答案五花八門,其中“工資高”、“好找工作”、“有職業發展”是很常見的理由。
二、半路轉行做程式設計師,在求職市場上的現狀如何?
拋開其他因素,先只討論薪水:業界標杆 BAT 的薪水如下
百度:
阿里:
騰訊:
但對於大多數半路決定做程式設計師的人來說,上圖這樣的薪資是很難達到的。
多數半路學程式設計的人,是通過培訓班來速成的。在開發的求職市場上,如果你是通過 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。現在,我可以幫一個網站做出互動式原型了。
還是在 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 相關功能,學習影像、動畫、部落格的技術,在網上瀏覽別人的交流學習經驗。
以上便是我的全部經歷,希望對你有啟發。
相關文章
- 半路轉行學程式設計還來得及嗎?半路轉行如何學程式設計?程式設計
- 學歷不高可以學程式設計嗎?程式設計
- 學歷低可以學程式設計嗎程式設計
- 天天寫業務程式碼的程式設計師,怎麼成為技術大牛程式設計師
- 程式設計師何苦為難程式設計師?程式設計師
- iOS程式設計師如何成為程式設計高手,並以此創業iOS程式設計師創業
- 程式設計師也難逃的二八定律,成為頂級程式設計師真的有那麼難嗎?程式設計師
- 成為更好的程式設計師必須學習的 4 種程式設計結構程式設計師
- java程式設計師學歷重要嗎?Java程式設計師
- 阿里P10:Java大牛程式設計師的學習成長經歷阿里Java程式設計師
- 都28了,半路轉行學程式設計還來得及嗎?程式設計
- 0基礎半路轉行學程式設計還來得及嗎?程式設計
- 成為最好的程式設計師的迷茫程式設計師
- 如何成為高階java程式設計師Java程式設計師
- 半路轉行如何學程式設計?0基礎半路轉行學技術還來得及嗎?程式設計
- 如何從初級程式設計師變成高階程式設計師?程式設計師
- 程式設計好學嗎?零基礎能學程式設計嗎?程式設計
- 【1024程式設計師節】程式設計師,你學程式設計的初衷是什麼?程式設計師
- 35歲的人還可以學習程式設計,從事程式設計師這個行業嗎?前景怎樣?程式設計師行業
- Java程式設計師學習Rust程式設計 - infoworldJava程式設計師Rust
- 學Python的程式設計師,程式設計能力都“退化”成什麼樣了?Python程式設計師
- 程式設計師大牛必備的英文詞彙程式設計師
- 為什麼要成為「無敵」程式設計師?程式設計師
- 為什麼成為一名程式設計師?程式設計師
- 女程式設計師,為什麼比男程式設計師少???程式設計師
- 程式設計師程式設計入門一定知道!程式設計師需要學什麼?程式設計師
- 如何成為真正專業的程式設計師程式設計師
- 如何成為更好的Java程式設計師?- javarevisitedJava程式設計師
- 初學Java,如何成為年薪50萬的程式設計師?Java程式設計師
- 程式設計師成為大佬必須學的演算法程式設計師演算法
- 轉行學程式設計還能成為技術大牛嗎?現在學習還來得及嗎?程式設計
- 普通程式設計師該如何成為全棧工程師程式設計師全棧工程師
- 大學教程式設計的老師為何不去當高收入的程式設計師?程式設計師
- 程式設計師的路好走嗎程式設計師
- 程式設計師,你焦慮嗎?程式設計師
- 你為什麼成為一名程式設計師?程式設計師
- 如何自學UI設計?如何成為UI設計師?UI
- 成為全棧程式設計師的技能表 - dev全棧程式設計師dev
- 那些學了 Python 的程式設計師,程式設計能力都“退化”成什麼樣了?Python程式設計師