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