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