如何學習程式設計和轉行
本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃!
如果你想知道如何學習程式設計和轉行,那麼你不是在單騎作戰。隨著科技熱潮對軟體工程師和電腦科學家需求的增加,很多專業人士開始紛紛將自己的職業生涯轉移到一條更注重技術的康莊大道上。
2016年,Glassdoor公佈的前25種工作中,技術職位名列前茅。隨著來自於美國白宮的TechHire人才計劃的出臺,不但這個趨勢沒有停止的跡象,而且數字時代正在以閃電般的速度前進。然而,許多軟體工程和程式設計工作依然空在那裡,因為企業招不到能夠讓他們快速僱用的合格候選人。
那麼,在沒有傳統電腦科學的背景下,怎麼樣才能成為一個受歡迎的程式設計師呢?
很多人認為,對於這樣的職位是不能通過培訓的,尤其是——如果你沒有本科學位的話。也許你有一個非科班出身,或者你已經走出大學校門很長一段時間卻沒有實踐過曾經學習的技能。值得慶幸的是,現在有很多資源允許你回到這個道路上,改變職業生涯。
確定目標&開始解決問題
首先要明確的是,程式設計就是解決問題。
經驗豐富的程式設計師能夠學習任何語言、解決任何問題,因為他們的教育和職業生涯已經經歷過如何最佳地解決問題。經驗豐富的程式設計師會使用這麼多年實踐中發展出來的多種方法和流程。他們會從多種程式語言,不同的數學概念和函式中選擇,以便找到有效的解決方案。
但是這些經驗豐富的程式設計師都是通過實踐才獲取了這些專業要點。他們屢戰屢敗,又屢敗屢戰。他們尋求幫助。他們尋找答案。當面對新的問題時,他們調查研究,制定計劃,然後才開始編碼。
一開始,你的主要目標應該是建立一個解決問題的系統。當你學習你的第一門程式語言的時候,有很多需要學習的東西,但是在學習基礎知識的時候,你需要制定簡單和直接的專案目標。
從小專案開始,這將有助於你學習邏輯思維;幫助你瞭解計算機的工作方式。不要去一步登天地想著建立大網站,製作複雜的app,以及3D視訊遊戲,即使這些是未來某一天的最終目標。網上的資源很豐富,如GitHub上充滿了新手程式設計師可以上手使用的小而簡單的專案。這些都是你在傳統的資料結構教科書上可以發現的各種問題——這是另一個選擇的途徑。小小的實踐練習可以幫助你學習程式語言,並訓練你用這些語言解決與電腦科學相關的問題。
還在懷疑自己是否能改變職業進入程式設計行業嗎?有一個關於Reddit的故事,來自於一個原本對程式設計一無所知但在一年後卻被僱用了的程式設計師。他們自己也承認,他們花了很多時間專注於自己的技能,而且這個過程所需要的時間可能會更長,如果你只在晚上和週末學習的話。另一個例子是Colin Cross,一個MPCS畢業生,在他決定得到必要的教育以便於追求全職事業之前,僅僅只是涉獵過電腦科學。
說明一下,我們並沒有貶低常規教育的意思。學習如何解決問題是你成功的第一步。常規教育需要更長的時間。首先你應該先看看自己是否能靜下心來坐在電腦前編碼問題的解決辦法。如果不行,那麼你會覺得學習程式設計和轉行很難。通過培養解決問題的技能並看看自己是否喜歡這種型別的工作,你才能更好地判斷自己是否適合吃技術這碗飯。
通過小型專案攀登這座高峰
對於絕大多數開發者而言,程式設計圍繞著World Wide Web展開。一個動態響應使用者輸入的網站可能在你的瀏覽器上看上去簡簡單單,但是它需要大量富有技術含量的設計和工程,才能使其以這種方式工作。
有部分程式碼涉及給你的瀏覽器資訊以顯示並收到你的輸入,這通常被稱為前端開發。還有部分是處理所有這些資訊,並執行一些繁重的任務。這是所謂的後端開發。當代很大一部分開發人員工作於web開發,並且他們使用的程式語言被設計得不但易於使用,而且具有強大的能力。
學習簡單網站是如何工作的是你開始自學的好地方,並且有無數線上資源可幫助你。
就拿Odin Project為例。Odin Project是一個免費資源,旨在儘可能溫柔地給你介紹web程式設計。它用一種足夠簡單的語言來介紹很多專業人士使用的程式語言,同樣適合初學者。你可能以前曾聽說過JavaScript,Ruby on Rails,和HTML。這些都是可以開始自學的好起點,並且最終可以成為你日常使用的工具。
材料比時間表更重要,所以啟動比擔心不能在承諾的時間提交更重要。
我需要更多教育嗎?
編碼是一個行業,所以和任何行業一樣,它要求實踐、勤奮和專注,以便於真正掌握概念。線上資源可以幫助你啟動並取勝。如果你通過自導的專案和工具工作,那麼你當然可以開始認為自己是正處於職業生涯早期階段的一個程式設計師。
既然程式設計是一種行業,那麼讓我們看一看其他的行業——例如建築和結構。早期的程式設計師會認為自己是一名造房子的建築工人。造房子,並且造得很好,這非常有價值。接受指令和規格,用適合的技能打造一些東西。
但是,也許你也會想要設計房子。或者想要了解是什麼使得房子更有效或更強壯?那麼你需要做什麼呢?
如果是程式設計,也許你會想要設計自己的軟體,為新的功能構建藍圖,或者從根本上改善系統的速度、效率和準確性。
這些型別的目標在追求更加正式的教育時可以給你額外的步驟,去真正成為該領域的領導者。學位會幫助你發展事業和打造聲譽,聲譽可以帶給你中級的,高階的甚至是行政管理的專業機會。
如果你想要有那種程度的程式設計和軟體開發水平,就像很多程式設計師做的那樣的話,那麼你最好認真考慮教育課程。學位會給予你教導和指導,以及顯示你通過高層次嚴格訓練的文憑證照。
對於轉職業的正式教育有兩個選擇,即訓練營和碩士課程。下面讓我們來看看兩者之間的差異。
訓練營vs.碩士課程
現在美國的訓練營和密集課程被設計得會帶給你最新的一系列特定的技能。通常就像全職工作一樣,所以你可能每週需要花40小時,用上幾個月的時間來與其他的學生一起學習。可以認為這種課程類似於前面提到的自學,只不過它有一些額外的工具和動機來幫助你保持專注。很多人都表示這種課程更好,學完出來你就會有滿腦子的知識,以及有著類似技能集的新的朋友圈。
這些課程並不等同於大學學位,所以不要認為它們是一回事。課程計劃可以填補人才短缺的差距,但你學到的會相對比較具體和有限。他們提供的資訊可能會和例如The Odin Project這樣的專案非常相似,因此它更多的是自學材料而不是大學材料。
訓練營肯定可以讓你勝任具體職位,因為他們傳授的是實用的計算機程式設計技能。缺點是,他們沒有時間深入到傳統的電腦科學,也沒有時間對行為規則有一個基本的認識。因此,這可能會限制你未來幾年內的發展潛力,並且在看到任何要求學位課程的角色時排除掉你。
追求電腦科學碩士學位是對於那些想要上升到行業頂端,並有機會進入這個行業可以提供的頂級公司,拿到高額薪水和高階機會的人而言的。旨在重定向你的職業生涯的碩士學位對於大數人而言是長期的,並且是最有利的目標。許多人會在職業培訓開始之前去上強化課程,類似於訓練營,以便於加快速度。
擁有電腦科學學位,或MSCS,對於那些擁有長期目標的人是最全面的方法。學習演算法和域,範圍從計算機圖形到聯網到用大資料工作。它也可以為你提供接觸行業中備受推崇的教師和導師的機會,並且給你一些頂級高科技公司的強大校友圈子。
這是你可以做的最大投資,包括時間和金錢,並且只要你瞭解前因後果並準備充分利用它的話,就應該投入進來。在獲得學位的同時你用來學習的時間越多,你用來磨礪編碼和解決問題的技能的時間越多,你在學校時拿到的實習崗位以及畢業時拿到的offer崗位越好。
寫在最後的話
高科技產業正在不斷壯大,而且聰明和有志於此的人完全有機會轉行。有大量的免費線上資源可幫助你跨出第一步。
在經歷過一些專案,或啟動和執行一些互動式網頁之後,問問自己這是否能讓你足夠喜歡並且保持決心堅定不移。如果你的回答是yes,並且想要加速理解的話,你可以考慮追求更多的正規教育。
當你準備好投入時間和金錢在這個有趣又有錢賺的行業中時,學位課程可以幫助你達到最高的高度。
譯文連結:http://www.codeceo.com/article/how-to-programming-change-career.html
英文原文:How to Learn Programming and Change Careers
翻譯作者:碼農網 – 小峰
[ 轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]
相關文章
- 半路轉行學程式設計還來得及嗎?半路轉行如何學程式設計?程式設計
- 程式設計如何學習程式設計
- 用Delphi進行OpenGL程式設計學習心得 (轉)程式設計
- 笑侃程式設計學習 (轉)程式設計
- 設計師如何去借鑑和學習?
- 轉行學程式設計推薦學什麼?程式設計
- 如何學習shell程式設計?Linux運維學習shell程式設計是什麼程式設計Linux運維
- 《Windows 程式設計》學習筆記(五) (轉)Windows程式設計筆記
- 《Windows 程式設計》學習筆記(四) (轉)Windows程式設計筆記
- 《Windows 程式設計》學習筆記(三) (轉)Windows程式設計筆記
- 半路轉行如何學程式設計?0基礎半路轉行學技術還來得及嗎?程式設計
- 程式設計學習MarkDown學習程式設計
- 【LINUX 學習】使用find和xargs[轉摘自《shell程式設計和unix命令》]Linux程式設計
- 關於程式設計:學什麼和如何學程式設計
- 我是如何學習計算機程式設計的計算機程式設計
- 《自然》:如何更有效學習計算機程式設計?計算機程式設計
- 程式設計師的學習和積累程式設計師
- XML 程式設計思想: 學習物件後設資料(轉)XML程式設計物件
- 如何開始函式程式設計的學習?函式程式設計
- Vacanti:我是如何學習程式設計的程式設計
- 請學習程式設計程式設計
- 好好學習程式設計程式設計
- .NET多執行緒程式設計(4):執行緒池和非同步程式設計 (轉)執行緒程式設計非同步
- Matlab學習-視覺化和程式設計Matlab視覺化程式設計
- 如何用深度學習將前端設計模型自動轉換為程式碼?深度學習前端模型
- Java 併發程式設計學習筆記 05 :如何暫停執行緒?Java程式設計筆記執行緒
- 從學生到程式設計師(三) 關於學習 (轉)程式設計師
- Java程式設計師學習Rust程式設計 - infoworldJava程式設計師Rust
- 運維人員如何學習python程式設計運維Python程式設計
- 程式設計師如何在小公司成長和大公司學習程式設計師
- 我今天才知道:學習程式設計和學習程式語言是兩碼事程式設計
- 碼農如何學設計 - Web UI 設計學習心得WebUI
- 學習程式設計 vs 學習電腦科學程式設計
- Rust 程式設計,Option 學習Rust程式設計
- Python 程式設計學習Python程式設計
- iOS程式設計學習十三iOS程式設計
- 轉行學Java,如何才能成為年薪50萬的Java程式設計師呢?Java程式設計師
- kingofark關於學習C++和程式設計的50個觀點 (轉)GoC++程式設計