如果你想知道如何學習編程和轉行桐经,那么你不是在孤軍作戰(zhàn)。隨著科技熱潮對軟件工程師和計算機科學家需求的增加,?很多專業(yè)人士開始紛紛將自己的職業(yè)生涯轉移到一條更注重技術的康莊大道上?。
2016年偿渡,Glassdoor公布的前25種工作中,技術職位名列前茅霸奕。隨著來自于美國白宮的 TechHire 人才計劃的出臺溜宽,這個趨勢?不但?沒有停止的跡象,而且數字時代正在以閃電般的速度前進质帅。然而适揉,許多軟件工程和編程工作依然空在那里,因為企業(yè)招不到能夠讓他們快速雇用的合格候選人煤惩。
那么嫉嘀,在沒有傳統(tǒng)計算機科學的背景下,怎么樣才能成為一個受歡迎的程序員呢盟庞?
很多人認為,對于這樣的職位是不能通過培訓的汤善,尤其是——如果你沒有本科學位的話什猖。也許你有一個非科班出身,或者你已經走出大學校門很長一段時間卻沒有實踐過曾經學習的技能红淡。值得慶幸的是不狮,現在有很多資源允許你回到這個道路上,改變職業(yè)生涯在旱。
確定目標&開始解決問題?
首先要明確的是摇零,編程就是解決問題。
經驗豐富的程序員能夠學習任何語言桶蝎、解決任何問題驻仅,因為他們的教育和職業(yè)生涯已經經歷過如何最佳地解決問題谅畅。經驗豐富的程序員會使用這么多年實踐中發(fā)展出來的多種方法和流程。他們會從多種編程語言噪服,不同的數學概念和函數中選擇毡泻,以便找到有效的解決方案。
但是這些經驗豐富的程序員都是通過實踐才獲取了這些專業(yè)要點粘优。他們屢戰(zhàn)屢敗仇味,又屢敗屢戰(zhàn)。他們尋求幫助雹顺,他們尋找答案丹墨。當面對新的問題時,他們調查研究嬉愧,制定計劃贩挣,然后才開始編碼。
一開始英染,你的主要目標應該是建立一個解決問題的系統(tǒng)揽惹。當你學習你的第一門編程語言的時候,有很多需要學習的東西四康,但是在學習基礎知識的時候搪搏,你需要制定簡單和直接的項目目標。
從小項目開始闪金,這將有助于你學習邏輯思維疯溺;幫助你了解計算機的工作方式。?不要去一步登天地想著創(chuàng)建大網站哎垦,制作復雜的app囱嫩,以及3D視頻游戲,即使這些是未來某一天的最終目標漏设。網上的資源很豐富墨闲,如GitHub上充滿了新手程序員可以上手使用的小而簡單的項目。這些都是你在傳統(tǒng)的數據結構教科書上可以發(fā)現的各種問題——這是另一個選擇的途徑郑口。小小的實踐練習可以幫助你學習編程語言鸳碧,并訓練你用這些語言解決與計算機科學相關的問題。
還在懷疑自己是否能改變職業(yè)進入編程行業(yè)嗎犬性?有一個關于Reddit的故事瞻离,來自于一個原本對編程一無所知但在一年后卻被雇用了的程序員。他們自己也承認乒裆,他們花了很多時間專注于自己的技能套利,而且這個過程所需要的時間可能會更長,如果你只在晚上和周末學習的話。另一個例子是Colin Cross肉迫,一個MPCS畢業(yè)生验辞,在他決定得到必要的教育以便于追求全職事業(yè)之前,僅僅只是涉獵過計算機科學昂拂。
說明一下受神,我們并沒有貶低常規(guī)教育的意思。學習如何解決問題是你成功的第一步格侯。常規(guī)教育需要更長的時間鼻听。?首先你應該先看看自己是否能靜下心來坐在電腦前編碼問題的解決辦法。如果不行联四,那么你會覺得學習編程和轉行很難撑碴。?通過培養(yǎng)解決問題的技能并看看自己是否喜歡這種類型的工作,你才能更好地判斷自己是否適合吃技術這碗飯朝墩。
通過小型項目攀登這座高峰
對于絕大多數開發(fā)者而言醉拓,編程圍繞著World Wide Web展開。一個動態(tài)響應用戶輸入的網站可能在你的瀏覽器上看上去簡簡單單收苏,但是它需要大量富有技術含量的設計和工程亿卤,才能使其以這種方式工作。
有部分代碼涉及給你的瀏覽器信息以顯示并收到你的輸入鹿霸,這通常被稱為前端開發(fā)排吴。還有部分是處理所有這些信息,并執(zhí)行一些繁重的任務懦鼠。這是所謂的后端開發(fā)钻哩。?當代很大一部分開發(fā)人員工作于web開發(fā),并且他們使用的編程語言被設計得不但易于使用肛冶,而且具有強大的能力街氢。
學習簡單網站是如何工作的是你開始自學的好地方,并且有無數在線資源可幫助你睦袖。
就拿Odin Project為例珊肃。Odin Project是一個免費資源,旨在盡可能溫柔地給你介紹web編程馅笙。它用一種足夠簡單的語言來介紹很多專業(yè)人士使用的編程語言伦乔,同樣適合初學者。你可能以前曾聽說過JavaScript延蟹,Ruby on Rails评矩,和HTML叶堆。這些都是可以開始自學的好起點阱飘,并且最終可以成為你日常使用的工具。
EarlGrey:怎么能不提 Python呢?沥匈!
材料比時間表更重要蔗喂,所以啟動比擔心不能在承諾的時間提交更重要。
我需要更多教育嗎高帖?
編碼是一個行業(yè)缰儿,所以和任何行業(yè)一樣,它要求實踐散址、勤奮和專注乖阵,以便于真正掌握概念。在線資源可以幫助你啟動并取勝预麸。如果你通過自導的項目和工具工作瞪浸,那么你當然可以開始認為自己是正處于職業(yè)生涯早期階段的一個程序員。
既然編程是一種行業(yè)吏祸,那么讓我們看一看其他的行業(yè)——例如建筑和結構对蒲。早期的程序員會認為自己是一名造房子的建筑工人。造房子贡翘,并且造得很好蹈矮,這非常有價值。接受指令和規(guī)格鸣驱,用適合的技能打造一些東西泛鸟。
但是,也許你也會想要設計房子丐巫√缚觯或者想要了解是什么使得房子更有效或更強壯?那么你需要做什么呢递胧?
如果是編程碑韵,也許你會想要設計自己的軟件,為新的功能構建藍圖缎脾,或者從根本上改善系統(tǒng)的速度祝闻、效率和準確性。
這些類型的目標在追求更加正式的教育時可以給你額外的步驟遗菠,去真正成為該領域的領導者联喘。學位會幫助你發(fā)展事業(yè)和打造聲譽,聲譽可以帶給你中級的辙纬,高級的甚至是行政管理的專業(yè)機會豁遭。
如果你想要有那種程度的編程和軟件開發(fā)水平,就像很多程序員做的那樣的話贺拣,那么你最好認真考慮教育課程蓖谢。?學位會給予你教導和指導捂蕴,以及顯示你通過高層次嚴格訓練的文憑證書。
對于轉職業(yè)的正式教育有兩個選擇闪幽,即訓練營和碩士課程啥辨。下面讓我們來看看兩者之間的差異。
訓練營vs.碩士課程
現在美國的訓練營和密集課程被設計得會帶給你最新的一系列特定的技能盯腌。通常就像全職工作一樣溉知,所以你可能每周需要花40小時,用上幾個月的時間來與其他的學生一起學習腕够〖墩В可以認為這種課程類似于前面提到的自學,只不過它有一些額外的工具和動機來幫助你保持專注帚湘。很多人都表示這種課程更好卡者,學完出來你就會有滿腦子的知識,以及有著類似技能集的新的朋友圈客们。
這些課程并不等同于大學學位崇决,所以不要認為它們是一回事。課程計劃可以填補人才短缺的差距底挫,但你學到的會相對比較具體和有限恒傻。他們提供的信息可能會和例如The Odin Project這樣的項目非常相似,因此它更多的是自學材料而不是大學材料建邓。
訓練營肯定可以讓你勝任具體職位盈厘,因為他們傳授的是實用的計算機編程技能。缺點是官边,他們沒有時間深入到傳統(tǒng)的計算機科學沸手,也沒有時間對行為規(guī)則有一個基本的認識。?因此注簿,這可能會限制你未來幾年內的發(fā)展?jié)摿ζ跫⑶以诳吹饺魏我髮W位課程的角色時排除掉你。
追求計算機科學碩士學位是對于那些想要上升到行業(yè)頂端诡渴,并有機會進入這個行業(yè)可以提供的頂級公司捐晶,拿到高額薪水和高級機會的人而言的。旨在重定向你的職業(yè)生涯的碩士學位對于大數人而言是長期的妄辩,并且是最有利的目標惑灵。許多人會在職業(yè)培訓開始之前去上強化課程,類似于訓練營眼耀,以便于加快速度英支。
擁有計算機科學學位,或MSCS哮伟,對于那些擁有長期目標的人是最全面的方法干花。學習算法和域鸯屿,范圍從計算機圖形到聯網到用大數據工作。它也可以為你提供接觸行業(yè)中備受推崇的教師和導師的機會把敢,并且給你一些頂級高科技公司的強大校友圈子。
EarlGrey:假如你已經失去了攻讀計算機學位的機會谅辣,那么可以借助國外大學的公開課彌補修赞,如哈佛的CS 50
這是你可以做的最大投資,包括時間和金錢桑阶,并且只要你了解前因后果并準備充分利用它的話柏副,就應該投入進來。在獲得學位的同時你用來學習的時間越多蚣录,你用來磨礪編碼和解決問題的技能的時間越多割择,你在學校時拿到的實習崗位以及畢業(yè)時拿到的offer崗位越好。?
寫在最后的話
高科技產業(yè)正在不斷壯大萎河,而且聰明和有志于此的人完全有機會轉行荔泳。有大量的免費在線資源可幫助你跨出第一步。
在經歷過一些項目虐杯,或啟動和運行一些交互式網頁之后玛歌,問問自己這是否能讓你足夠喜歡并且保持決心堅定不移。如果你的回答是yes擎椰,并且想要加速理解的話支子,你可以考慮追求更多的正規(guī)教育。
當你準備好投入時間和金錢在這個有趣又有錢賺的行業(yè)中時达舒,學位課程可以幫助你達到最高的高度值朋。
如果您覺得此篇文章對您有幫助,歡迎關注微信公眾號:dayuQAQ巩搏,您的支持是對我最大的鼓勵昨登!共同學習,共同進步:)