如何學習編程和轉行?
103 2017-04-19
如果你想知道如何學習編程和轉行,那么你不是在單騎作戰(zhàn)。隨著科技熱潮對軟件工程師和計算機科學家需求的增加,很多專業(yè)人士開始紛紛將自己的職業(yè)生涯轉移到一條更注重技術的康莊大道上。
2016年,Glassdoor公布的前25種工作中,技術職位名列前茅。隨著來自于美國白宮的TechHire人才計劃的出臺,不但這個趨勢沒有停止的跡象,而且數(shù)字時代正在以閃電般的速度前進。然而,許多軟件工程和編程工作依然空在那里,因為企業(yè)招不到能夠讓他們快速雇用的合格候選人。
那么,在沒有傳統(tǒng)計算機科學的背景下,怎么樣才能成為一個受歡迎的程序員呢?
很多人認為,對于這樣的職位是不能通過培訓的,尤其是——如果你沒有本科學位的話。也許你有一個非科班出身,或者你已經(jīng)走出大學校門很長一段時間卻沒有實踐過曾經(jīng)學習的技能。值得慶幸的是,現(xiàn)在有很多資源允許你回到這個道路上,改變職業(yè)生涯。
確定目標&開始解決問題
首先要明確的是,編程就是解決問題。
經(jīng)驗豐富的程序員能夠學習任何語言、解決任何問題,因為他們的教育和職業(yè)生涯已經(jīng)經(jīng)歷過如何最佳地解決問題。經(jīng)驗豐富的程序員會使用這么多年實踐中發(fā)展出來的多種方法和流程。他們會從多種編程語言,不同的數(shù)學概念和函數(shù)中選擇,以便找到有效的解決方案。
但是這些經(jīng)驗豐富的程序員都是通過實踐才獲取了這些專業(yè)要點。他們屢戰(zhàn)屢敗,又屢敗屢戰(zhàn)。他們尋求幫助。他們尋找答案。當面對新的問題時,他們調查研究,制定計劃,然后才開始編碼。
一開始,你的主要目標應該是建立一個解決問題的系統(tǒng)。當你學習你的第一門編程語言的時候,有很多需要學習的東西,但是在學習基礎知識的時候,你需要制定簡單和直接的項目目標。
從小項目開始,這將有助于你學習邏輯思維;幫助你了解計算機的工作方式。不要去一步登天地想著創(chuàng)建大網(wǎng)站,制作復雜的app,以及3D視頻游戲,即使這些是未來某一天的最終目標。網(wǎng)上的資源很豐富,如GitHub上充滿了新手程序員可以上手使用的小而簡單的項目。這些都是你在傳統(tǒng)的數(shù)據(jù)結構教科書上可以發(fā)現(xiàn)的各種問題——這是另一個選擇的途徑。小小的實踐練習可以幫助你學習編程語言,并訓練你用這些語言解決與計算機科學相關的問題。
還在懷疑自己是否能改變職業(yè)進入編程行業(yè)嗎?有一個關于Reddit的故事,來自于一個原本對編程一無所知但在一年后卻被雇用了的程序員。他們自己也承認,他們花了很多時間專注于自己的技能,而且這個過程所需要的時間可能會更長,如果你只在晚上和周末學習的話。另一個例子是ColinCross,一個MPCS畢業(yè)生,在他決定得到必要的教育以便于追求全職事業(yè)之前,僅僅只是涉獵過計算機科學。
說明一下,我們并沒有貶低常規(guī)教育的意思。學習如何解決問題是你成功的第一步。常規(guī)教育需要更長的時間。首先你應該先看看自己是否能靜下心來坐在電腦前編碼問題的解決辦法。如果不行,那么你會覺得學習編程和轉行很難。通過培養(yǎng)解決問題的技能并看看自己是否喜歡這種類型的工作,你才能更好地判斷自己是否適合吃技術這碗飯。
通過小型項目攀登這座高峰
對于絕大多數(shù)開發(fā)者而言,編程圍繞著WorldWideWeb展開。一個動態(tài)響應用戶輸入的網(wǎng)站可能在你的瀏覽器上看上去簡簡單單,但是它需要大量富有技術含量的設計和工程,才能使其以這種方式工作。
有部分代碼涉及給你的瀏覽器信息以顯示并收到你的輸入,這通常被稱為前端開發(fā)。還有部分是處理所有這些信息,并執(zhí)行一些繁重的任務。這是所謂的后端開發(fā)。當代很大一部分開發(fā)人員工作于web開發(fā),并且他們使用的編程語言被設計得不但易于使用,而且具有強大的能力。
學習簡單網(wǎng)站是如何工作的是你開始自學的好地方,并且有無數(shù)在線資源可幫助你。
就拿OdinProject為例。OdinProject是一個免費資源,旨在盡可能溫柔地給你介紹web編程。它用一種足夠簡單的語言來介紹很多專業(yè)人士使用的編程語言,同樣適合初學者。你可能以前曾聽說過JavaScript,RubyonRails,和HTML。這些都是可以開始自學的好起點,并且最終可以成為你日常使用的工具。
材料比時間表更重要,所以啟動比擔心不能在承諾的時間提交更重要。
我需要更多教育嗎?
編碼是一個行業(yè),所以和任何行業(yè)一樣,它要求實踐、勤奮和專注,以便于真正掌握概念。在線資源可以幫助你啟動并取勝。如果你通過自導的項目和工具工作,那么你當然可以開始認為自己是正處于職業(yè)生涯早期階段的一個程序員。
既然編程是一種行業(yè),那么讓我們看一看其他的行業(yè)——例如建筑和結構。早期的程序員會認為自己是一名造房子的建筑工人。造房子,并且造得很好,這非常有價值。接受指令和規(guī)格,用適合的技能打造一些東西。
但是,也許你也會想要設計房子?;蛘呦胍私馐鞘裁词沟梅孔痈行Щ蚋鼜妷眩磕敲茨阈枰鍪裁茨??
如果是編程,也許你會想要設計自己的軟件,為新的功能構建藍圖,或者從根本上改善系統(tǒng)的速度、效率和準確性。
這些類型的目標在追求更加正式的教育時可以給你額外的步驟,去真正成為該領域的領導者。學位會幫助你發(fā)展事業(yè)和打造聲譽,聲譽可以帶給你中級的,高級的甚至是行政管理的專業(yè)機會。
如果你想要有那種程度的編程和軟件開發(fā)水平,就像很多程序員做的那樣的話,那么你最好認真考慮教育課程。學位會給予你教導和指導,以及顯示你通過高層次嚴格訓練的文憑證書。
對于轉職業(yè)的正式教育有兩個選擇,即訓練營和碩士課程。下面讓我們來看看兩者之間的差異。
訓練營vs碩士課程
現(xiàn)在美國的訓練營和密集課程被設計得會帶給你最新的一系列特定的技能。通常就像全職工作一樣,所以你可能每周需要花40小時,用上幾個月的時間來與其他的學生一起學習??梢哉J為這種課程類似于前面提到的自學,只不過它有一些額外的工具和動機來幫助你保持專注。很多人都表示這種課程更好,學完出來你就會有滿腦子的知識,以及有著類似技能集的新的朋友圈。
這些課程并不等同于大學學位,所以不要認為它們是一回事。課程計劃可以填補人才短缺的差距,但你學到的會相對比較具體和有限。他們提供的信息可能會和例如TheOdinProject這樣的項目非常相似,因此它更多的是自學材料而不是大學材料。
訓練營肯定可以讓你勝任具體職位,因為他們傳授的是實用的計算機編程技能。缺點是,他們沒有時間深入到傳統(tǒng)的計算機科學,也沒有時間對行為規(guī)則有一個基本的認識。因此,這可能會限制你未來幾年內的發(fā)展?jié)摿?,并且在看到任何要求學位課程的角色時排除掉你。
追求計算機科學碩士學位是對于那些想要上升到行業(yè)頂端,并有機會進入這個行業(yè)可以提供的頂級公司,拿到高額薪水和高級機會的人而言的。旨在重定向你的職業(yè)生涯的碩士學位對于大數(shù)人而言是長期的,并且是最有利的目標。許多人會在職業(yè)培訓開始之前去上強化課程,類似于訓練營,以便于加快速度。
擁有計算機科學學位,或MSCS,對于那些擁有長期目標的人是最全面的方法。學習算法和域,范圍從計算機圖形到聯(lián)網(wǎng)到用大數(shù)據(jù)工作。它也可以為你提供接觸行業(yè)中備受推崇的教師和導師的機會,并且給你一些頂級高科技公司的強大校友圈子。
這是你可以做的最大投資,包括時間和金錢,并且只要你了解前因后果并準備充分利用它的話,就應該投入進來。在獲得學位的同時你用來學習的時間越多,你用來磨礪編碼和解決問題的技能的時間越多,你在學校時拿到的實習崗位以及畢業(yè)時拿到的offer崗位越好。
寫在最后的話
高科技產(chǎn)業(yè)正在不斷壯大,而且聰明和有志于此的人完全有機會轉行。有大量的在線資源可幫助你跨出第一步。
在經(jīng)歷過一些項目,或啟動和運行一些交互式網(wǎng)頁之后,問問自己這是否能讓你足夠喜歡并且保持決心堅定不移。如果你的回答是yes,并且想要加速理解的話,你可以考慮追求更多的正規(guī)教育。
當你準備好投入時間和金錢在這個有趣又有錢賺的行業(yè)中時,可以訪問計蒜客幫助你提高學習效率。
掃一掃
獲取更多福利
獵學網(wǎng)企業(yè)微信
獵學網(wǎng)訂閱號
獵學網(wǎng)服務號