這是發生在我身上的一個故事:從一個零起點學習編程的小白,到成為Udacity的一名全棧工程師。(Udacity是一家致力于編程在線教育的創業公司)。
在找第一份工作之前,幾乎每個招聘初級網絡工程師的帖子都要求“計算機科學學位或兩年的工作經驗”,而我沒有人任何工作經驗,但我與其他人不同的時,我并沒有放棄,雖然異常艱苦,但是我堅持了下來。
在探索計算機編程的這條路上,我經歷了許多磨難,與親人之間的關系一度非常緊張,我也耗盡了我的積蓄,曾經一度失去自信,甚至還中途放棄。后來,經過一年的反思,我以一種新的心態再次嘗試,并取得了成功。
今天,我領導著一個由10名工程師組成的團隊,負責多個核心系統的開發,包括入學系統、學生項目代碼評審系統和論壇等。成千上萬學生在我們的平臺上參加免費課程或者參加付費的Nanodegree項目。在付費項目中,如果通過了我們的Nanodegree認證,他們將有機會獲得在計算機行業尖端領域的工作機會,包括React、iOS和Android等主流平臺的軟件工程師職位,以及更前沿的AI、機器學習和自駕駕駛汽車等領域的軟件工程師職位。
下面是我的故事:
我的失敗經歷
我已經厭倦我干了七年的工作,我不能忍受我的余生一直從事這份職業。我想要成為一名軟件工程師。但我不知道我為什么想成為一名軟件工程師,只是覺得它對我有一種吸引力,我想要創建某種東西。
但是,我的數學不好,我也不認識任何一個程序員,我對這個工作缺乏了解,也不知道自己是否會喜歡它。好心的朋友向我提出了兩點意見:第一,我的這種想法是瘋狂的,第二,我太老了。
所以建議你們學習要乘早合理利用自己每一分每一秒的時間來學習提升自己,不要再用“沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!
2014年1月,我參加了General Assembly的一個訓練營,學習編程。訓練營在當時是一種比較新鮮的事物,其培訓系統很不成熟。我們的班級很大,班級成員的學習起點很不相同,課程也在不斷變化,培訓過程讓人感覺很混亂。幾個星期過去了,我們開始聽到有些從這畢業的學生仍然沒有找到工作。一種明顯的焦慮感在我們中間出現了:我們放棄了原來的工作,花費一萬美元來這里學習新東西,真的能成為一名軟件工程師嗎?
終于,在第二學期開始之前,我還是選擇了離開。當然,我也在訓練營中學到了很多知識,也認識了一些很好的講師,我的幾名同學也在畢業后成功當上了網絡工程師,或者找到了其他好工作。但是,就整體培訓效果而言,并不理想。
離開培訓營后,我花費一個月時間創建了一個前端設計作品集,并開始接一些小型項目,做Javascript開發。這些早期的努力是有成效的,我確實獲得了一些兼職工作,我開始變得樂觀起來。但是,幾個月過去了,我的工作依然很不穩定,我不得不再次懷疑自己。·
我發現,我用在尋找工作上的時間和編程的時間一樣多。獲得的項目斷斷續續,在編寫程序的過程中,也得不到很多技術反饋,同時收入不穩定,給家庭造成壓力,而更要命的是,沒有人能告訴你,你是否在學習正確的東西。在這些因素的影響下,我沒有了安全感。
我開始留意怎樣才能找到全職工作。我聽說硅谷有很多自學成才的程序員,但是,所有招聘啟事都都明確要求有相關的學歷和資歷,為此我感到困惑和沮喪。每個招聘初級網頁工程師的帖子似乎都要求具有“計算機專業學位或兩年工作經驗”。如果需要學位才能獲得工作機會,那么沒有學位的人又怎能獲得兩年工作經驗?自學的工程師怎樣才能得到工作機會?
盡管如此,我也開始投簡歷。我開始研究面試試題,希望能得到一個機會。在此過程中,我也意識到自己對數據結構和算法一無所知,也不知道如何開始學習。突然間,我再次陷入絕望。對于我想要的工作,我不符合它們的要求,我懷疑我即使獲得了面試機會也不會通過。
這是一段艱難的歲月,六個月來,我的財務狀況和家庭關系都十分緊張。我是一個訓練營的輟學者,一名兼職Javascript開發者,我不得不面對事實,所以我做了一個很現實的決定——放棄成為一個軟件開發者。
我告訴朋友和家人,我之前的行為是一時沖動,并且已經為此付出了昂貴的代價,我已經重新找了一份與我以前的職業生涯有關的、更好的工作。
我是怎么成功的
只有當你放棄的時候,你才是真的失敗了,而我已經放棄了。面對我放棄后的生活與工作,我很快就后悔了。
時間過得很快,一年過去了,我發現我還是不能釋懷。于是,我繼續利用空閑時間編程。編程成了我一個煩惱的興趣,它消耗了我很多時間,而結果往往令人沮喪,我沒有獲得什么成果。但是,我無法抗拒那種吸引力,我想要創造某種東西,而不僅僅是去欣賞別人的工作成果。
同時,我總結了上一次失敗的原因:首先,我放棄了;其次,我不知道自己的方向,也無法得到高質量的工作經驗或反饋。
于是,我制定了一個應對方案:
不要中途放棄
找一個導師
不計報酬,找一個好的實習機會
告訴每一個人,我知道自己失敗了,但我還要再做一次
那么第一步,我需要積累工作經驗。但我該怎樣獲得一個實習機會呢?我想或許可以去尋求朋友的幫助。
一年以前,我閱讀了Loren Sands-Ramshaw發表在Hacker News上的一篇關于網絡安全的文章。我們是曾是大學同學,但當我還在忙著拿學分的時候,他已經去國家安全局(NSA)上班了。讀完他的文章后,我立馬寫信給他,詢問我學習編程的可行性,隨后,他也給我寫了一封經過深思熟慮的、鼓舞人心的回信。
一年后,我在LinkedIn上再次看到了他的資料,他創建了一個名為Parlay的移動***公司。 我馬上給他寫信,申請成為他的一名實習生。經過簡短的面試,他同意接受我,并愿意給我一點補貼。
這件件事完全改變了我的人生軌跡。現在,我終于可以投入真正的工作了。
那么我應該如何做好自己的第一份編程工作,成為一名優秀的實習生呢?上一次的工作經驗給了我答案。我來自服務行業,我的本能就是把這些經驗應用到實習中:
迅速反饋信息,盡量在五分鐘內獲得確認信息。
不要輕易拒絕,盡可能回答“yes”。
保持積極狀態,以充沛的精力投入工作,你的導師將看到你的工作強度。
問問題時也要保持思考,在你努力去發現、閱讀和理解之前,不要問導師某一行代碼有什么用處、如何突出某個特征。就算努力研究后你還是有問題,那也會是更有建設性的問題。
你要不計報酬地工作。我發現,如果你沉浸于工作,你將學得很快,沉浸是快速學習的秘訣。
根據我的經驗,學習一門語言和學習編程一樣,關鍵都在于沉浸。我在俄羅斯的一所大學呆過幾個月。面對完全陌生的語言環境,我曾失去對周遭事物的理解能力,簡直令人絕望。但在這種環境里沉浸了幾個星期后,我的語言能力飛快提升。
我試圖用相同的方式去學習編程。
沉浸,意味著100%集中精神。如果可能的話,不交朋友,不喝酒,不看電視,你的生活只剩下看代碼和寫代碼。如果你花5分鐘來閱讀新聞,請注意你正在打破沉浸狀態。你應該保持專注,保持耐心,你的心靈會適應這種狀態,消除所有的分心。你可能會發現,懷疑是最讓人分心的,沉浸是成功和失敗之間的分水嶺。
那么,你怎么知道你是否達到了沉浸狀態?很簡單,如果你不是做夢都在寫代碼,那么你就還沒成功。
如何獲得第一份正式工作?
當我離開實習崗位,開始尋找全職工作崗位時,我開始創建一個新的編程作品集,重點突出React編程和Node編程。
很多招聘網頁開發人員的帖子都要求具有React和Node編程能力,我很高興進入這個領域,而且我認為這個領域大有機會在。我在實習期間就是從事Node編程工作,我還在在線教育網站Udemy上學習了React + Redux課程。經過密集的Javascript開發訓練后,我發現我比以前更高效,更有信心 。無論是React、Redux還是Graphql,我都能輕松地學習,沉浸原則以及找一個導師,這兩種方法奏效了。
同時在導師的建議下,我還利用空閑時間學習了強類型語言(Strong-Type Language),于是我報名參加了一個iOS項目,并學習Swift語言。在此我也強烈建議,編程學習者一定要學習一種強類型的語言 。
在Swift語言課程接近尾聲時,我終于獲得了一份全職工作的面試機會。我要面試的是Udacity-Blitz(為Udacity學生介紹外包工作的平臺)的React開發工程師。招聘人員稱,我有三個月從事Javascript開發的實習經歷,加上我的React編程作品集,所以我得到了這次面試機會。我認為,對于一般的編程工作,你的編程作品集會比你為技術面試所做的準備更重要。
同時,我也在努力尋找更多的工作機會。六個星期后,我又面試了Udacity的一個全職崗位。我花了兩個星期的時間準備,專門研究了Udacity的技術面試培訓課程。在精心準備下,我如愿通過了面試。
此后,我在工作中學習了數據架構,并在Udacity成長為一名高級工程師。
回顧我為成為軟件工程師走過的這條路,有很多錯誤,當然也有很多經驗,比如在那失業的一年多時間里,我學會了謙遜、堅持不懈和專注。
我很幸運,能夠與很棒的同事一起工作,能夠為一家我喜歡的公司服務,做我喜歡的工作。而我給大家的建議就是:沉浸,找一個導師,不要回頭。我可以很肯定地告訴你,這些都是不容易做到的。
-
工程師
+關注
關注
59文章
1569瀏覽量
68504
發布評論請先 登錄
相關推薦
評論