編者按:在科技行業(yè),寫代碼是一項(xiàng)比較性感的工作,有人通過培訓(xùn)班學(xué)編程,也有很多人選擇自學(xué)編程。即使會寫代碼,要想在人才眾多的硅谷求一份工作也并非易事,本文作者從自身經(jīng)歷出發(fā),介紹學(xué)習(xí)編程的方法與求職經(jīng)歷。
一年前,我在田納西州的攀巖健身房作兼職,為健身房設(shè)置路線。今天,我在舊金山的一家網(wǎng)絡(luò)安全初創(chuàng)公司擔(dān)任軟件工程師。
我這樣的轉(zhuǎn)變對我來說是非常難忘的,同時(shí)也改變了我的一生。雖然這一切都非常具有挑戰(zhàn)性,但我認(rèn)為任何有充分動(dòng)力的人都可以做同樣的事情。
知識已經(jīng)變得民主化。你需要做的就是在你的領(lǐng)域付出大量時(shí)間并堅(jiān)持,這對于軟件工程師尤其如此。
當(dāng)我在2016年開始學(xué)習(xí)代碼時(shí),我的生活正處于一個(gè)巨大的困境中。
我作為一名擁有生物化學(xué)和人類學(xué)學(xué)位的預(yù)科學(xué)生考上大學(xué)。但我很快就對科學(xué)和醫(yī)學(xué)失去了興趣,隨后我就離開了大學(xué),前途一片迷茫。
我在攀巖健身房工作已經(jīng)差不多兩年了,但事情并沒有變好。我知道我需要改變了。
我已經(jīng)耽擱學(xué)習(xí)代碼很長時(shí)間了,但我知道這是我想要做的。最后,在我2016年的生日,我發(fā)誓要學(xué)習(xí)代碼,自那以后我就沒有再回頭。
在這個(gè)時(shí)候,我對過去幾年變得無處不在的編程行業(yè)很陌生。幸運(yùn)的是,我很快發(fā)現(xiàn)了免費(fèi)代碼營(Free Code Camp)。當(dāng)我意識到要完成課程需要為非營利組織編寫軟件時(shí),我馬上申請加入,因?yàn)槲液苡行判目梢蕴崆巴瓿晌业恼n程。
免費(fèi)代碼營很快成了我教育的核心。我同時(shí)補(bǔ)充了許多其他資源,如播客、教程、開放課件。
我的日常就是通過課程的挑戰(zhàn)和項(xiàng)目,這使我能夠逐步提高我的編程技能。當(dāng)編寫代碼變得沒有效率時(shí),我會通過其他渠道吸收知識——音頻、視頻等。我在不同的學(xué)習(xí)方法之間來回嘗試,這對保持很高的參與度并且抓住重點(diǎn)非常有用。這基本上是我的學(xué)習(xí)過程,它可以保證讓我投入更多的時(shí)間去學(xué)習(xí)。
以下是統(tǒng)計(jì)的數(shù)字(粗略估計(jì)):
總學(xué)習(xí)時(shí)間:少于12個(gè)月
總時(shí)數(shù):約2,500小時(shí)
項(xiàng)目總計(jì)完成:70多個(gè)
CS 課程觀看次數(shù):約10
GitHub(一個(gè)面向開源及私有軟件項(xiàng)目的托管平臺)提交量:超過1500
JavaScript 的總行數(shù):超過 20,000 行
那時(shí)候我住在田納西州的Knoxville,我在那里做了上面絕大部分的事情。我有很強(qiáng)烈的愿望要一個(gè)科技產(chǎn)業(yè)很發(fā)達(dá)的城市,所以有一天我醒來后就決定是時(shí)候去舊金山了。接下來發(fā)生的事情就是改變我一生的事情。
我那天晚上就動(dòng)身,大約三個(gè)星期后,我就到了Bay Area(舊金山灣區(qū))。在路上的時(shí)候,我有很多時(shí)間聽播客。
在抵達(dá)舊金山并完成核心課程(前端、數(shù)據(jù)可視化和后端認(rèn)證)之后,我大約發(fā)出了65份左右的工作申請——但是都沒有得到回應(yīng)。
你要知道,我開車穿越全美來到灣區(qū)。我不知道現(xiàn)在灣區(qū)的競爭有多激烈,也不知道我的能力能否值得雇主青睞。我在免費(fèi)代碼營獲得的經(jīng)驗(yàn)?zāi)軌蜻_(dá)到編碼需要的水平嗎?
這些想法讓我明白我不得不做更多。舊金山的市場是相當(dāng)有競爭力的。所以,我迅速修改了我的計(jì)劃,投入了更多的時(shí)間,同時(shí)加入免費(fèi)代碼營,開始了一個(gè)非營利項(xiàng)目。
我的 React 項(xiàng)目引起了Michael D. Johnson和Quincy Larson的關(guān)注,他們問我是否有興趣幫助撰寫他們的React課程。我還幫助一個(gè)針對婦女罪行的會議建立了的會議管理工具。
我非常高興有機(jī)會能夠回報(bào)這個(gè)可敬的社區(qū),所以我很快接受了這個(gè)挑戰(zhàn)。我的React和Redux的項(xiàng)目已被納入他們新擴(kuò)展的課程中,現(xiàn)在這個(gè)課程已經(jīng)有Beta版形式了。
此外,我選擇將申請工作的時(shí)間提前到2017年。我將繼續(xù)自己學(xué)習(xí),然后再申請工作。隨后,我離開舊金山,開車穿過波特蘭和西雅圖,然后到華盛頓的Bellingham。
在太平洋西北地區(qū)的這幾個(gè)星期,我不間斷地完成了React和Redux的項(xiàng)目。我與紐約的另一位叫Peter Weinberg的同事合作,這可能是讓我的簡歷脫穎而出的關(guān)鍵之一,因?yàn)槲彝瓿闪艘粋€(gè)重要的項(xiàng)目,而且還滿足了實(shí)務(wù)界的需求。
12月下旬,我們完成了初步草案,并將其轉(zhuǎn)化為正式的Alpha版本,直到現(xiàn)在還在不斷吸收當(dāng)?shù)厣鐓^(qū)的反饋。
回到舊金山,我再次投簡歷。我決定加入一個(gè)為軟件工程師面試準(zhǔn)備的快速課程Outco。我一直非常反對在編碼集中營花錢(部分原因是我沒有錢),但是我選擇加入這個(gè)課程,因?yàn)樵谖铱磥?,他們的目?biāo)是做一些很創(chuàng)新的東西。它專門針對軟件工程師的面試過程,因?yàn)檫@是一個(gè)為很多工程師造成障礙的過程,即使是對經(jīng)驗(yàn)豐富的技術(shù)工程師來說,也帶來了很多麻煩。
盡管我現(xiàn)在可以很好地寫JavaScript,但我絕對不會在白板上解決任意算法問題。這是Outco嘗試為學(xué)生準(zhǔn)備的關(guān)鍵領(lǐng)域之一,因?yàn)闊o論是好是壞,白板仍然是科技公司最喜歡用的面試策略。
我已經(jīng)以一個(gè)星期超過50個(gè)小時(shí)的時(shí)間強(qiáng)度來學(xué)習(xí)和編碼,而且我完全是背水一戰(zhàn)了,因?yàn)槲乙诿绹畎嘿F和最有競爭力的城市找到工作。
我已經(jīng)很努力地申請工作機(jī)會了,但是最終還是失敗了!在那個(gè)時(shí)候,我面臨的壓力是巨大的。
但我知道成功將在很大程度上取決于我未來幾個(gè)月的表現(xiàn)。
練習(xí)寫編碼的稿紙。
我開始在算法和數(shù)據(jù)結(jié)構(gòu)、白板問題、技術(shù)問題、配對編程、模擬電話屏幕、系統(tǒng)設(shè)計(jì)問題上更加努力地工作,同時(shí)當(dāng)然也沒有放棄找工作。
我每天都堅(jiān)持練習(xí)面試,雖然這很難。在真正的采訪中,他們會要求你站在白板前面,然后問你關(guān)于二叉樹(binary trees)的問題,而在我后來面試時(shí),他們真的問我這個(gè)問題了。
數(shù)字勝于雄辯,下面是我面試的數(shù)據(jù):
申請總數(shù):192個(gè)(包括2016年的65個(gè))
電話面試總數(shù):17
關(guān)鍵代碼挑戰(zhàn):6
現(xiàn)場面試:3
得到的Offer:1
時(shí)間總計(jì):6周
成功率:0.52%
那個(gè)唯一的Offer來自一家叫Trustar Technology的科技公司,我很高興加入他們的團(tuán)隊(duì)。這個(gè)公司正在建立一個(gè)平臺,讓企業(yè)共享網(wǎng)絡(luò)智能數(shù)據(jù),以避免并減少網(wǎng)絡(luò)攻擊。
我在他們應(yīng)用程序的前端工作,并使用我學(xué)的JavaScript技能。迄今為止,這樣的經(jīng)驗(yàn)對我來說是難以置信的,因?yàn)槲医K于可以利用我學(xué)到的東西來為公司創(chuàng)造價(jià)值了。
以下是我給想要學(xué)習(xí)軟件編碼工程師的建議。
你需要真實(shí)的技能,你需要學(xué)習(xí)很多。這意味著要投入很多時(shí)間,所以你必須有很大的熱情才可以。
做項(xiàng)目是一個(gè)很好的學(xué)習(xí)方式,一旦你熟練之后,開源項(xiàng)目或其他高難度的項(xiàng)目對你來說就不是一件難事了。
JavaScript和React非常有意思,同時(shí)也是當(dāng)下需求很大的技能,但你還是要學(xué)習(xí)你感興趣的東西。
不管是在你所在的城市還是網(wǎng)絡(luò)上的朋友,你必須有學(xué)習(xí)代碼或工程師的圈子。找機(jī)會跟他們一起合作,并且適當(dāng)尋求他們幫助,一起解決問題。
如果有可能的話,要有耐心。
以上就是我成為一個(gè)軟件工程師的過程。我相信每個(gè)人的路都會有所不同,但這也是其中樂趣的一部分。
找到自己的道路,如果你自己相信足夠強(qiáng)大,不要害怕忽視別人的觀點(diǎn),包括我的看法。
技術(shù)行業(yè)的機(jī)遇是非常真實(shí)的,你要有決心達(dá)到你的目的,你可以找到一種方式。
作為工程師,你的工作將是解決問題,如果你是自學(xué)的,你必須解決的第一個(gè)問題是如何教你自己。
希望你們有一個(gè)愉快地學(xué)習(xí)編程的旅途。
【編譯組出品】編輯:楊志芳
聯(lián)系客服