如果你想知道如何學(xué)習(xí)編程和轉(zhuǎn)行,那么你不是在單騎作戰(zhàn)。隨著科技熱潮對軟件工程師和計(jì)算機(jī)科學(xué)家需求的增加,很多專業(yè)人士開始紛紛將自己的職業(yè)生涯轉(zhuǎn)移到一條更注重技術(shù)的康莊大道上。
2016年驱犹,Glassdoor公布的前25種工作中,技術(shù)職位名列前茅足画。隨著來自于美國白宮的TechHire人才計(jì)劃的出臺雄驹,不但這個趨勢沒有停止的跡象,而且數(shù)字時代正在以閃電般的速度前進(jìn)淹辞。然而医舆,許多軟件工程和編程工作依然空在那里,因?yàn)槠髽I(yè)招不到能夠讓他們快速雇用的合格候選人象缀。
那么蔬将,在沒有傳統(tǒng)計(jì)算機(jī)科學(xué)的背景下,怎么樣才能成為一個受歡迎的程序員呢央星?
很多人認(rèn)為霞怀,對于這樣的職位是不能通過培訓(xùn)的,尤其是——如果你沒有本科學(xué)位的話莉给。也許你有一個非科班出身毙石,或者你已經(jīng)走出大學(xué)校門很長一段時間卻沒有實(shí)踐過曾經(jīng)學(xué)習(xí)的技能。值得慶幸的是颓遏,現(xiàn)在有很多資源允許你回到這個道路上徐矩,改變職業(yè)生涯。
確定目標(biāo)&開始解決問題
首先要明確的是叁幢,編程就是解決問題滤灯。
經(jīng)驗(yàn)豐富的程序員能夠?qū)W習(xí)任何語言、解決任何問題,因?yàn)樗麄兊慕逃吐殬I(yè)生涯已經(jīng)經(jīng)歷過如何最佳地解決問題鳞骤。經(jīng)驗(yàn)豐富的程序員會使用這么多年實(shí)踐中發(fā)展出來的多種方法和流程窒百。他們會從多種編程語言,不同的數(shù)學(xué)概念和函數(shù)中選擇豫尽,以便找到有效的解決方案贝咙。
但是這些經(jīng)驗(yàn)豐富的程序員都是通過實(shí)踐才獲取了這些專業(yè)要點(diǎn)。他們屢戰(zhàn)屢敗拂募,又屢敗屢戰(zhàn)。他們尋求幫助窟她。他們尋找答案陈症。當(dāng)面對新的問題時,他們調(diào)查研究震糖,制定計(jì)劃录肯,然后才開始編碼。
一開始吊说,你的主要目標(biāo)應(yīng)該是建立一個解決問題的系統(tǒng)论咏。當(dāng)你學(xué)習(xí)你的第一門編程語言的時候,有很多需要學(xué)習(xí)的東西颁井,但是在學(xué)習(xí)基礎(chǔ)知識的時候厅贪,你需要制定簡單和直接的項(xiàng)目目標(biāo)。
從小項(xiàng)目開始雅宾,這將有助于你學(xué)習(xí)邏輯思維养涮;幫助你了解計(jì)算機(jī)的工作方式。不要去一步登天地想著創(chuàng)建大網(wǎng)站眉抬,制作復(fù)雜的app贯吓,以及3D視頻游戲,即使這些是未來某一天的最終目標(biāo)蜀变。網(wǎng)上的資源很豐富悄谐,如GitHub上充滿了新手程序員可以上手使用的小而簡單的項(xiàng)目。這些都是你在傳統(tǒng)的數(shù)據(jù)結(jié)構(gòu)教科書上可以發(fā)現(xiàn)的各種問題——這是另一個選擇的途徑库北。小小的實(shí)踐練習(xí)可以幫助你學(xué)習(xí)編程語言爬舰,并訓(xùn)練你用這些語言解決與計(jì)算機(jī)科學(xué)相關(guān)的問題。
還在懷疑自己是否能改變職業(yè)進(jìn)入編程行業(yè)嗎贤惯?有一個關(guān)于Reddit的故事洼专,來自于一個原本對編程一無所知但在一年后卻被雇用了的程序員。他們自己也承認(rèn)孵构,他們花了很多時間專注于自己的技能屁商,而且這個過程所需要的時間可能會更長,如果你只在晚上和周末學(xué)習(xí)的話。另一個例子是Colin Cross蜡镶,一個MPCS畢業(yè)生雾袱,在他決定得到必要的教育以便于追求全職事業(yè)之前,僅僅只是涉獵過計(jì)算機(jī)科學(xué)官还。
說明一下芹橡,我們并沒有貶低常規(guī)教育的意思。學(xué)習(xí)如何解決問題是你成功的第一步望伦。常規(guī)教育需要更長的時間林说。首先你應(yīng)該先看看自己是否能靜下心來坐在電腦前編碼問題的解決辦法。如果不行屯伞,那么你會覺得學(xué)習(xí)編程和轉(zhuǎn)行很難腿箩。通過培養(yǎng)解決問題的技能并看看自己是否喜歡這種類型的工作,你才能更好地判斷自己是否適合吃技術(shù)這碗飯劣摇。
通過小型項(xiàng)目攀登這座高峰
對于絕大多數(shù)開發(fā)者而言珠移,編程圍繞著World Wide Web展開。一個動態(tài)響應(yīng)用戶輸入的網(wǎng)站可能在你的瀏覽器上看上去簡簡單單末融,但是它需要大量富有技術(shù)含量的設(shè)計(jì)和工程钧惧,才能使其以這種方式工作。
有部分代碼涉及給你的瀏覽器信息以顯示并收到你的輸入勾习,這通常被稱為前端開發(fā)浓瞪。還有部分是處理所有這些信息,并執(zhí)行一些繁重的任務(wù)语卤。這是所謂的后端開發(fā)追逮。當(dāng)代很大一部分開發(fā)人員工作于web開發(fā),并且他們使用的編程語言被設(shè)計(jì)得不但易于使用粹舵,而且具有強(qiáng)大的能力钮孵。
學(xué)習(xí)簡單網(wǎng)站是如何工作的是你開始自學(xué)的好地方,并且有無數(shù)在線資源可幫助你眼滤。
就拿Odin Project為例巴席。Odin Project是一個免費(fèi)資源,旨在盡可能溫柔地給你介紹web編程诅需。它用一種足夠簡單的語言來介紹很多專業(yè)人士使用的編程語言漾唉,同樣適合初學(xué)者。你可能以前曾聽說過JavaScript堰塌,Ruby on Rails赵刑,和HTML。這些都是可以開始自學(xué)的好起點(diǎn)场刑,并且最終可以成為你日常使用的工具般此。
材料比時間表更重要,所以啟動比擔(dān)心不能在承諾的時間提交更重要。
我需要更多教育嗎铐懊?
編碼是一個行業(yè)邀桑,所以和任何行業(yè)一樣,它要求實(shí)踐科乎、勤奮和專注壁畸,以便于真正掌握概念。在線資源可以幫助你啟動并取勝茅茂。如果你通過自導(dǎo)的項(xiàng)目和工具工作捏萍,那么你當(dāng)然可以開始認(rèn)為自己是正處于職業(yè)生涯早期階段的一個程序員。
既然編程是一種行業(yè)空闲,那么讓我們看一看其他的行業(yè)——例如建筑和結(jié)構(gòu)照弥。早期的程序員會認(rèn)為自己是一名造房子的建筑工人。造房子进副,并且造得很好,這非常有價(jià)值悔常。接受指令和規(guī)格影斑,用適合的技能打造一些東西。
但是机打,也許你也會想要設(shè)計(jì)房子矫户。或者想要了解是什么使得房子更有效或更強(qiáng)壯残邀?那么你需要做什么呢皆辽?
如果是編程,也許你會想要設(shè)計(jì)自己的軟件芥挣,為新的功能構(gòu)建藍(lán)圖驱闷,或者從根本上改善系統(tǒng)的速度、效率和準(zhǔn)確性空免。
這些類型的目標(biāo)在追求更加正式的教育時可以給你額外的步驟空另,去真正成為該領(lǐng)域的領(lǐng)導(dǎo)者。學(xué)位會幫助你發(fā)展事業(yè)和打造聲譽(yù)蹋砚,聲譽(yù)可以帶給你中級的扼菠,高級的甚至是行政管理的專業(yè)機(jī)會。
如果你想要有那種程度的編程和軟件開發(fā)水平坝咐,就像很多程序員做的那樣的話循榆,那么你最好認(rèn)真考慮教育課程。學(xué)位會給予你教導(dǎo)和指導(dǎo)墨坚,以及顯示你通過高層次嚴(yán)格訓(xùn)練的文憑證書秧饮。
對于轉(zhuǎn)職業(yè)的正式教育有兩個選擇,即訓(xùn)練營和碩士課程。下面讓我們來看看兩者之間的差異浦楣。
訓(xùn)練營vs.碩士課程
現(xiàn)在美國的訓(xùn)練營和密集課程被設(shè)計(jì)得會帶給你最新的一系列特定的技能袖肥。通常就像全職工作一樣,所以你可能每周需要花40小時振劳,用上幾個月的時間來與其他的學(xué)生一起學(xué)習(xí)椎组。可以認(rèn)為這種課程類似于前面提到的自學(xué)历恐,只不過它有一些額外的工具和動機(jī)來幫助你保持專注寸癌。很多人都表示這種課程更好,學(xué)完出來你就會有滿腦子的知識弱贼,以及有著類似技能集的新的朋友圈蒸苇。
這些課程并不等同于大學(xué)學(xué)位,所以不要認(rèn)為它們是一回事吮旅。課程計(jì)劃可以填補(bǔ)人才短缺的差距溪烤,但你學(xué)到的會相對比較具體和有限。他們提供的信息可能會和例如The Odin Project這樣的項(xiàng)目非常相似庇勃,因此它更多的是自學(xué)材料而不是大學(xué)材料檬嘀。
訓(xùn)練營肯定可以讓你勝任具體職位,因?yàn)樗麄儌魇诘氖菍?shí)用的計(jì)算機(jī)編程技能责嚷。缺點(diǎn)是鸳兽,他們沒有時間深入到傳統(tǒng)的計(jì)算機(jī)科學(xué),也沒有時間對行為規(guī)則有一個基本的認(rèn)識罕拂。因此揍异,這可能會限制你未來幾年內(nèi)的發(fā)展?jié)摿Γ⑶以诳吹饺魏我髮W(xué)位課程的角色時排除掉你爆班。
追求計(jì)算機(jī)科學(xué)碩士學(xué)位是對于那些想要上升到行業(yè)頂端衷掷,并有機(jī)會進(jìn)入這個行業(yè)可以提供的頂級公司,拿到高額薪水和高級機(jī)會的人而言的柿菩。旨在重定向你的職業(yè)生涯的碩士學(xué)位對于大數(shù)人而言是長期的棍鳖,并且是最有利的目標(biāo)。許多人會在職業(yè)培訓(xùn)開始之前去上強(qiáng)化課程碗旅,類似于訓(xùn)練營渡处,以便于加快速度。
擁有計(jì)算機(jī)科學(xué)學(xué)位祟辟,或MSCS医瘫,對于那些擁有長期目標(biāo)的人是最全面的方法。學(xué)習(xí)算法和域旧困,范圍從計(jì)算機(jī)圖形到聯(lián)網(wǎng)到用大數(shù)據(jù)工作醇份。它也可以為你提供接觸行業(yè)中備受推崇的教師和導(dǎo)師的機(jī)會稼锅,并且給你一些頂級高科技公司的強(qiáng)大校友圈子。
這是你可以做的最大投資僚纷,包括時間和金錢矩距,并且只要你了解前因后果并準(zhǔn)備充分利用它的話,就應(yīng)該投入進(jìn)來怖竭。在獲得學(xué)位的同時你用來學(xué)習(xí)的時間越多锥债,你用來磨礪編碼和解決問題的技能的時間越多,你在學(xué)校時拿到的實(shí)習(xí)崗位以及畢業(yè)時拿到的offer崗位越好痊臭。
寫在最后的話
高科技產(chǎn)業(yè)正在不斷壯大哮肚,而且聰明和有志于此的人完全有機(jī)會轉(zhuǎn)行。有大量的免費(fèi)在線資源可幫助你跨出第一步广匙。
在經(jīng)歷過一些項(xiàng)目允趟,或啟動和運(yùn)行一些交互式網(wǎng)頁之后,問問自己這是否能讓你足夠喜歡并且保持決心堅(jiān)定不移鸦致。如果你的回答是yes潮剪,并且想要加速理解的話,你可以考慮追求更多的正規(guī)教育分唾。
當(dāng)你準(zhǔn)備好投入時間和金錢在這個有趣又有錢賺的行業(yè)中時鲁纠,學(xué)位課程可以幫助你達(dá)到最高的高度。