本文由管理員:福州-IT-jaylin? ?選送
????編者按:新的一年,很多人都會想要有一個新的開始。在Andrei Neagoie看來,人們應該選擇一個非常有前景而且能夠從中獲得樂趣的職業(yè),他認為這個職業(yè)就是學習編程,而且是學習Javascript,為什么他要這樣說?又該怎么去學習?他發(fā)表在Medium上的一篇文章詳細闡述了背后的原因,也給出了相關(guān)的學習規(guī)劃供人參考學習。文章由36氪編譯。
????2018年,你應該花5個月時間去學習編程,并找到一份好工作
????如果你是一個初學者,初級開發(fā)人員,或者對這個行業(yè)很好奇,這篇文章就是為你準備的。如果你是一個成熟的開發(fā)者,你可能會在這里找到一些有用的鏈接,因為我列出了最好的資源,能給你的技能提升帶來巨大好處。
????利用在線課程和大多數(shù)免費工具,你可以獲得一項有價值的技能,讓你在一個有回報、充滿挑戰(zhàn)的行業(yè)中工作。2018年,需要有技術(shù)素養(yǎng)的人的工作領(lǐng)域?qū)絹碓蕉唷_@也是我第一次進入這個行業(yè)的原因。我想要控制自己的生活,并對自己從事什么類型的工作有發(fā)言權(quán)。直到今天,我還在堅持自己的觀點:如果這是你的目標,這是一個最好的行業(yè)。
????重要提示:這篇文章看起來可能像是指導你一步一步成為開發(fā)者的指南,但如果你仔細觀察,這背后有一種你可以應用于任何領(lǐng)域?qū)W習的策略。
????為什么要編程?
????在我們進入真正成為一名開發(fā)者的步驟之前,必須要先了解一下為什么你要沿著這條路走下去。每一個需要你付出生命中重要時間的決定都應該是合理。畢竟,時間是我們擁有的最重要的資源:
????A、你想要在這個行業(yè)中工作,在這個行業(yè)里,對技能的需求很大,而且有很多機會成為食物鏈頂端的非常重要的角色。
????B、你喜歡獨立。你想要一種能讓你在世界上任何地方都能輕松找到工作的技能。如果你決定明天搬到冰島去,你想確保在找工作方面不會遇到麻煩。
????C、你已經(jīng)注意到了2003年和2018年之間的區(qū)別,以及我們在短短15年里取得的技術(shù)進步有多大。你想處于一個影響世界進程的行業(yè)的最前沿。
????D、過去幾年,最大的行業(yè)增長是在加密貨幣(比特幣)和人工智能(機器學習)領(lǐng)域。我們不希望在這些事情在未來占據(jù)主流的時候被拋在身后。你想要了解并且能夠掌握這些技能。
????E、你認為改變是好的,學習永無止境。那么為什么不做點新東西呢?
????但我沒有計算機科學學位,我甚至不知道互聯(lián)網(wǎng)是如何運作的!別擔心,我們會考慮到這一點的。繼續(xù)閱讀……
????當你選擇一條新的職業(yè)道路時,這里有一些不錯/必須的衡量指標:
????1、在接下來的10多年里,它必須是有用的。這項技能在未來的許多年里都應該被重視,來保證你的工作是安全的。
????2、對有這種技能的人的需求必須多于供給。行業(yè)中技能熟練從業(yè)者的數(shù)量越少,你對你的工作和你所工作的公司的控制力就會越強。
????3、無論你在行業(yè)中有多少年的工作經(jīng)驗,都能獲得高薪。你肯定不希望在過上體面的生活之前,還要在公司的職位晉升上花幾年的時間。
????4、一個不需要大學專業(yè)學位的行業(yè)。你不會想要在開始賺錢之前去讀研究生課程,然后在接下來的4年里負債累累。是的,我認為有比更昂貴的編程訓練營更好的選擇。
????5、能夠在最短的時間內(nèi)趕上行業(yè)中表現(xiàn)最好的人。沒有什么經(jīng)驗能幫你快速就業(yè)?你能以最快的速度縮小與該領(lǐng)域的資深專家之間的差距嗎?
????6、它必須能夠給你提供基礎(chǔ)技能。無論未來如何,你都有多種職業(yè)可以選擇。例如,通過學習編程,你就能更好地理解新的或即將到來的技術(shù),比如分布式應用、區(qū)塊鏈和云計算,然后選擇你想要進入的領(lǐng)域。
????7、要開心。最重要的是,你每周都要工作40個小時。你當然不希望是枯燥乏味的。
????根據(jù)我的經(jīng)驗,編程符合上面的每一個要點。你的經(jīng)歷可能會有所不同。我最喜歡的一本書是《太好了,他們不能忽視你》(So Good They Can’t Ignore You)。在書中,他們認為你不應該因為喜歡旅游就去從事旅行行業(yè)。大多數(shù)人都是通過奮斗和努力去掌握一項技能來找到激情的。一旦人們開始承認你的技能有價值,并且你能夠因為這些技能而感到受尊重,那就是你對你所做的事情產(chǎn)生激情的時候。
????你想自己評估一下,看看它是否適合你。
????重要的一點是:記住,前2個月你會覺得自己在攀登一座無法翻越的高山。你學習的每一門教程或課程都會讓你覺得自己是世界上唯一一個不懂這些東西的人。保持堅強。隨著時間的推移,你會有越來越多的“會心”時刻。我們稱之為冒名頂替綜合征 (Imposter Syndrome):你覺得自己是唯一一個不知道這個信息的人,你被自我懷疑所包圍。請放心,當我們學習新東西時,我們都會有這樣的感覺。
????你會學到的是,成為一個優(yōu)秀的開發(fā)人員并不一定要記住一大堆文檔。這是關(guān)于如何使用所有可用的工具來解決問題。這是一個解決問題的方法,從不知道的狀態(tài)變?yōu)榭赡堋?/p>
????我是誰,你為什么要聽我的?
????這個問題非常直接,但我想這是公平的。首先,我是一名資深的軟件開發(fā)人員,曾在包括硅谷在內(nèi)的一些頂尖科技公司工作過。在我的職業(yè)生涯中,我一直很幸運,在2018年,我將幫助其他人學習軟件技能。但我并不是天生的電腦奇才。我沒有獲得計算機科學專業(yè)的學位。
????這一切都是在多年前開始的.....我想要轉(zhuǎn)行,于是決定自學計算機編程。
????第一個月,我回避了所有的教程或書籍。相反,我用這個月的時間來尋找我怎么去學習以及怎么有可能獲得工作的最佳方式。我想要高效率,不浪費時間去學習過時的技術(shù),或者學習一些我在一個月后就會忘記的東西。我研究了其他人的經(jīng)歷,看了招聘啟事,與知名的開發(fā)者交流,查閱了在線課程,研究了訓練營,甚至閱讀了未來學家介紹20年后我們將會使用哪些技術(shù)的文章?;谶@些,我為自己制定了一個專注于效率的課程:在最短的時間內(nèi)能被雇傭的關(guān)鍵學習量。
????課程的重點不在于做最少的工作。相反,它的重點是在最重要的事情上努力工作,以便以最優(yōu)的方式進行工作。這并不意味者要做最低限度的工作,也不意味著要為成為一名初級開發(fā)人員而努力。如果你能夠通過努力工作,跳過這個過程,直接進入中級開發(fā)者的角色,那將是一個更好的結(jié)果。幸運的是,我已經(jīng)篩選過了所有的東西。
????盡管我花了一個月的時間來對我的學習進行規(guī)劃,而不是直接開始學習,但從長遠來看,這是非常有用的,因為我并沒有盲目。我知道我要去哪里,我有一張通往終點的線路圖。你也會有。
????所以,是的,我一直都能理解你的處境,也知道你真正需要些什么。當我開始學習的時候,我希望能有這樣的東西給我提供幫助。我還發(fā)現(xiàn),許多教程都是由行業(yè)內(nèi)的資深人士來教授的,他們擁有大量的技術(shù)知識,但卻無法正確地把這些知識教授給新手。我對當前市面上存在的大量的教學課程與視頻進行了研究,而且還在進行中。
????從那以后,我開始為財富500強科技公司提供咨詢,召開編程研討會,為即將出版的科技書籍提供咨詢,并出席技術(shù)交流活動。我現(xiàn)在不需要為任何人工作。我熱愛這個職業(yè),我想很多人會喜歡它,也會從中受益。因此,我的使命就是幫助那些想要實現(xiàn)這一飛躍的人。
????好吧,最后一句話有點戲劇性……
????我們要學什么語言?
????2018年,你應該花5個月時間去學習編程,并找到一份好工作
????對,上面這個。
????你將會成為一個Javascript“忍者”的原因如下:
????Javascript無處不在。每個擁有網(wǎng)站或應用程序的公司都需要具備Javascript知識的人。這種語言是大量招聘信息的必備條件(如果你不信,可以在LinkedIn上搜索Javascript看看)。
????通過引入Node.js,你可以使用Javascript創(chuàng)建一個完整的應用程序(你可以使用Javascript來構(gòu)建整個項目)。使用Electron,React Native等工具,Javascript可以讓你創(chuàng)建桌面應用程序,移動應用程序,Web應用程序甚至VR應用程序。你可以通過使用像Jonny-Five這樣的東西來控制機器人。你可以建立自己的區(qū)塊鏈。Lisk是一個類似于以太坊的平臺,使用的就是JavaScript。
????如果您沒有閱讀第一個要點,并且正在考慮其他問題,請允許我再重申一遍:行業(yè)中對Javascript專家的需求是巨大的。每周都會有招聘人員和獵頭與相關(guān)開發(fā)人員進行聯(lián)系,這種情況并不少見。
????Javascript社區(qū)正以驚人的速度增長。這個社區(qū)有很多新的發(fā)展。有些人抱怨Javascript疲勞,因為每天都有越來越多的新工具被開發(fā)出來。然而,我們可以利用這一點,使其變成你的優(yōu)勢。你將會和那些在這個行業(yè)工作多年的人同時學習這些新技術(shù)。
????相信我,這是一個很棒的技術(shù),有很多需求,也有一個偉大的社區(qū)。如果你不相信我,這里有一個趨勢開發(fā)者技能分析。
????夠了,讓我們開始吧。在下面,你會找到我認為的最適合你的東西,讓你能夠充分利用自己的時間。在5個月后,你應該能夠獲得第一個真正的非入門級的編程工作。這個過程,不需要參加編程訓練營。只有你和你的決心。
????5個月,一步一個腳印
????我們將專注于在2018年最被人需要且最有可能找到工作的技能。像PHP或jQuery這樣的技術(shù)已經(jīng)過時了。它們沒有任何問題,我完全尊重它們,但根據(jù)這些年我收到的一些電子郵件,很多使用這些技術(shù)的人都在經(jīng)濟上遇到了困難,而且有家人需要他們支持。時間對他們來說很重要,他們也希望盡快找到工作。
????第一個月:大場面
????要回答的一個大問題是:電腦、互聯(lián)網(wǎng)和網(wǎng)站是如何運作的?我怎樣才能建立一個網(wǎng)站?
????理解費曼技巧(Feynman technique),這樣你在接下來的5個月里就能真正學到東西,而不是只使用短期記憶。
????互聯(lián)網(wǎng)是如何運作的:這個來自LearnCode.academy,這個來自thenewboston。
????計算機科學的最佳概述:計算機科學速成課
????你可以在Youtube上關(guān)注這門哈佛課程。這可能是最有含金量的計算機科學課程。不需要做練習。
????如何使用命令行:這個來自于Zed Shaw。
????如何建立一個網(wǎng)站/獲得一個域/并讓它運行:LearnCode.academy視頻。
????HTML、CSS和Javascript是如何組合在一起的:FrontendMasters的網(wǎng)頁開發(fā)課程。只涉及到Javascript的部分。
????學會用Bootstrap建立網(wǎng)站。先從這個開始,然后轉(zhuǎn)到Bootstrap 4文檔,并添加你在樣板網(wǎng)站上看到的組件。了解它提供的好處vs自己編寫CSS。
????了解如何使用模板來使用免費主題和模板來構(gòu)建網(wǎng)站。
????如果你有時間,你可以在freeCodeCamp上參加一些關(guān)于HTML和CSS部分的課程。
????第二個月:Javascript
????要回答的一個大問題是:Javascript如何讓機器做你想做的事情?
????這是你在接下來的幾個月里關(guān)注的重點。Javascript解決了什么問題?開始用Javascript編寫小的程序,讓你的網(wǎng)站以某種方式運行。這種語言能讓你的網(wǎng)站除了看起來漂亮之外,還能做其他事情。從這兩門課程開始:一和二。
????閱讀?Eloquent Javascript書。
????了解DOM(Document Object Model,文檔對象模型)操作。
????閱讀這篇關(guān)于編程的好文章。
????了解如何使用Chrome開發(fā)者控制臺編寫javascript。做這個CodeSchool課程(只有控制臺部分)。然后學習在html中注入
????看Kyle Simpson的這個演講,完成第一個月剩下的課程。最后,在CodeSchool的javascript頻道上完成這五門課程。
????如果您在5個月內(nèi)有任何疑問,可以使用freeCodeCamp中的這個指南進行簡短的查詢。
????通過這些課程學習git和Github 。創(chuàng)建一個Github配置文件,并開始每天提交。開始開發(fā)一個樣本網(wǎng)站。
????最后,在YouTube上觀看這個很棒的播放列表。忽略jQuery和Grunt的部分。
????當你有問題,或者想要深入研究一個話題的時候,就開始使用這個指南。
????第三個月:Javascript+NPM+構(gòu)建你的網(wǎng)站
????要回答的一個大問題是:我能建立一個專業(yè)的網(wǎng)站,并了解整個過程嗎?
????谷歌開發(fā)人員工具→了解如何使用Google Chrome調(diào)試您的程序和網(wǎng)站。如果你還沒有完成這個CodeSchool課程,請完成。
????開始參加當?shù)氐囊恍┚幊毯蚃avascript會議。
????了解同步和異步javascript之間的區(qū)別。
????什么是事件循環(huán)?→一旦你對Javascript有了很好的理解,看這個視頻將會改變游戲規(guī)則。把最好的關(guān)于javascript的討論交給你。
????在這里學習有關(guān)Promises,和ES7中的異步等待。
????最后,看看Douglas Crockford的這個課程。
????在這里了解Javascript的歷史。
????下載node.js和npm。從NPM下載lodash病使用browserify來使用常見的js導入。在這里了解一下。理解為什么npm對于開發(fā)人員來說是一個非常棒的工具。
????到本月底,你應該有一個個人網(wǎng)站,上面有Github上的代碼庫。使用Github Pages可以免費有一個實時網(wǎng)站。
第四個月:React.js(或Vue.js)
要回答的一個大問題是:React或Vue解決了什么問題?
我有嚴重的偏見。我喜歡React.js。事實上,我會把它教給其他人,并進行相關(guān)的研討。所以請相信我。除非你有充分的理由去學習Vue.js,否則你要學會React.js。這是一個全新的、令人興奮的工作,但還沒有具體的工作崗位需求出現(xiàn)。
React→按順序做:一,二,三。然后再去查閱官方文件,通讀所有的資料。如果你有錢,這是最好的React教程。
如果你有時間,想要學習更多的關(guān)于React的深度教程,你可以點擊這里。
可選:學習Redux→觀看本課程。不要讓你的腦袋爆炸。然后閱讀關(guān)于它的文檔。
使用create-react-app構(gòu)建示例React應用程序。創(chuàng)建React應用程序會為你開啟一個新的世界。
在Heroku上部署你的應用程序。
在GitHub頁面上部署你的應用程序。
開始關(guān)注Medium上面的Top10文章,閱讀任何有關(guān)編程的文章。注冊這些電子郵件列表,與業(yè)界正在發(fā)生的事情保持聯(lián)系:Javascript和React。
開始建立你的在線簡歷。在這個問題上,有些人給出的建議比我好。看看這個和這個。我還寫了一篇關(guān)于這個的文章,你可以看看。
最后一個月:服務器、數(shù)據(jù)庫以及把這些點連起來
要回答的一個大問題是:服務器、數(shù)據(jù)庫和樹莓派在哪里適合這些方面?
HTTP,JSON和AJAX。了解這些如何讓你與服務器通信。
學習如何構(gòu)建一個API服務器。然后再進一步,在這里學習node和Express.js 。
一旦你完成了這一步,使用一個有趣的API,比如這一個,創(chuàng)建一個簡單的應用程序。
訂閱computerphile?youtube頻道,并觀看他們的視頻。盡管聽懂其中的話題可能很難,但它會給你帶來一些神奇的東西。
什么是計算機/服務器/操作系統(tǒng):買一個樹莓派并建立自己的服務器。在YouTube上查看不同的項目,你可以開始用你的樹莓派。最后,在樹莓派上制作一個簡單的腳本。按照這個課程。在樹莓派上托管你的網(wǎng)站。你會驚訝于自己是多么的酷。
在下面的主題上花一天時間。你不需要很好地掌握它們。只要了解為什么他們在那里,他們正在解決什么問題:測試,機器學習,時間復雜度,SQL,UX / UI,持續(xù)交付,基本數(shù)據(jù)結(jié)構(gòu)。你應該能夠解釋什么是數(shù)據(jù)結(jié)構(gòu)。提示:數(shù)組和對象是兩種流行的Javascript數(shù)據(jù)結(jié)構(gòu)。
我已經(jīng)聽到有人看到上面的建議后開始對我大喊大叫?!澳惘偭藛幔?!你不認為測試很重要嗎?”但請聽我說。我同意以上觀點(測試)對于成為一名優(yōu)秀的開發(fā)人員很重要,每個人都應該學習這些技能。然而,我們正努力在這里打基礎(chǔ)。開始深入研究一個話題是很容易的,但是如果沒有基礎(chǔ),你就不知道為什么它很重要,或者它與你正在做的事情有什么關(guān)系。此外,在我發(fā)現(xiàn)的大多數(shù)招聘信息中,幾乎沒有提到上述技能。把這些知識留到你工作的時候再去學習。
記住:你的目標是要以最高效的方式工作。
使用Firebase作為數(shù)據(jù)庫構(gòu)建一個小型項目。
閱讀JavaScript的兩大支柱的第一部分和JavaScript 的兩大支柱的第二部分。
讓我們來回顧一下
在5個月結(jié)束時,你應該完成以下要求:
1、學習HTML和CSS。然后,買一個域名,從像BlueHost或HostGator這樣的地方購買主機,以最便宜的成本搭建一個網(wǎng)站,然后放到網(wǎng)上。如果你想使用Github Pages,你可以跳過這個選項。但如果你能負擔得起,那就從上述的托管平臺買一個主機吧,這樣你就能更好得理解它們的工作原理。從現(xiàn)在開始,這將是你的投資組合。學習如何更新和編輯。當你學習新事物的時候,繼續(xù)讓它變得更好。不要在這上面花太多時間。這就足以證明你可以在網(wǎng)上放點東西,讓它看起來還不錯。
2、開始學習Javascript。現(xiàn)在,你如何讓你的網(wǎng)站具有互動性呢?瀏覽上面的資源,看看怎么用Javascript來實現(xiàn)。
3、開始將你的小項目上傳到GitHub。雇主會看你的GitHub配置文件,以及你在那里的活躍程度。嘗試在你的個人項目上每周提交5次(它們不必很大)。另外,也請嘗試閱讀本文并為一些開源項目做些貢獻,如freeCodeCamp。
4、當你遇到問題的時候,要學會使用谷歌,并使用Stack Overflow。當你開始的時候,你遇到的99%的問題都可以在網(wǎng)上找到?;蛘呒尤?a target="_blank" rel="nofollow">Javascript IRC頻道,并在遇到困難時提問。你所在的社區(qū)也可能有一個空閑的頻道。如果沒有,從這里選一個,和其他的開發(fā)人員多交流。
5、習慣使用命令行來做事。練習時應始終保持打開狀態(tài),并嘗試使用它而不是GUI(圖形用戶界面)。
6、學習Javascript的最新語言特性和趨勢,并學習解決與它們有關(guān)的問題(即Promises,ES6,ES7,函數(shù)式編程技術(shù))。
7、參加當?shù)氐南嚓P(guān)交流會議,開始與行內(nèi)人士交談。你會被所有你不知道的事情弄得不知所措。不要擔心,這是自然的。當你可以和其他程序員見面的時候,就可以被行話和術(shù)語包圍了。
8、開始聽播客,Javascript Jabber。這會讓你熟悉行話,所以當面試時間到來的時候,它不會讓你不知所措。當你聽前幾次的時候,你根本不知道他們在說什么。不要失去希望。最終你會明白的。FunFunFunction也是一個很棒的每周youtube頻道,你應該關(guān)注。還有一個更復雜的播客,但可能是軟件方面最好的播客,請查看“ 軟件工程日報”。同時留意每年的javascript調(diào)查狀況,看看行業(yè)趨勢如何。
9、盡早向招聘單位投遞簡歷。我們把它們作為練習使用。大多數(shù)面試官都是專業(yè)的程序員,這樣他們就可以對你的技能進行評價,你也可以用這些來練習編程問題,并向這些專家提出你想要提出的任何問題。
10、開始申請要求范圍遠遠大于你狀況的工作。你會得到一些面試機會。你不應該為了一份工作而安定下來。如果你從不問,答案永遠是否定的。
11、讓你的LinkedIn個人資料看起來不錯。不要在簡歷上花太多時間。把它寫在一頁紙上,簡明扼要,寫下你在前幾個月學到的所有技能。自學已經(jīng)顯示出了很大的勇氣。記住,你的簡歷只是為了給你獲得面試機會,之后,它們就像紙巾一樣……這個比方也不太恰當,因為紙巾很有用。我在簡歷上花了不到2個小時。與其他開發(fā)者不同的是,你來自不同的領(lǐng)域,有不同的背景。這怎么能不讓你與眾不同呢?
12、面試時,并為自己如何找到工作而感到驚訝。并不是所有的開發(fā)者都能獲得成功,不過話說回來,在過去的5個月里,沒有多少開發(fā)者能夠?qū)W會一切。它顯示出的是一種自信。只適用于LinkedIn上的工作,其余的你應該直接發(fā)郵件或者打電話給你想要工作的公司。不要把時間浪費在所謂的第三方求職招聘網(wǎng)站上。
哪些20%能夠給我80%的結(jié)果
大多數(shù)人都有一個想法,那就是你只有得到100%的東西,才能進入下一個階段。但對于大多數(shù)技能來說,包括編程,你在獲得100%東西上花費時間越長,到達下一階段的時間也就越長。你只有5個月。最后的20%將會在團隊,實際項目(以及獲得報酬)中得到更好的學習與獲得。因此,我們只專注于獲得80%的知識,從而有效地利用我們的時間。
從這一切中獲得的最大收獲
技術(shù)總是在變化。Javascript尤其如此。現(xiàn)在事情變化得如此之快,以至于不可能知道每一個東西。你需要知道的是,所有的東西都是如何組合在一起的,以及每種技術(shù)都在試圖解決什么問題。最重要的是,你只需要知道它的存在,這樣你就可以在需要的時候查看它,并找到它。程序員是解決問題的人。學會用可用的工具來解決問題。我們大多數(shù)人花了很多時間在像StackOverflow這樣的頁面上,或者搜索谷歌,因為那里有太多的資源。一旦你打好了基礎(chǔ),你就可以去任何地方。你只需要知道如何尋找答案并提出問題。
結(jié)論
注重效率。我們大多數(shù)人放棄一個目標的原因是我們看不到結(jié)果。專注于重要的事情,這會讓學習變得有趣。但它并沒有就此結(jié)束。學習永遠不會停止,你的目標是盡快找到工作,這樣從那一刻起,你每天都能在學習的同時得到一份薪水。
隨著時間的推移,編程變得越來越有趣,而且當你每天都能得到報酬來解決問題和發(fā)展自己的技能時,它會變得更好。真正的增長發(fā)生在你開始與真正的團隊進行真正的項目的時候。
這就是為什么我會堅持你的“學習”期應該盡可能短,以避免債務,并增加你在最好的學習環(huán)境中學習的時間:團隊合作。我甚至都不推薦從一開始就做自由職業(yè)者。讓自己置身于一個人人都比你聰明的環(huán)境中,每天都在和他們一起工作。在那里,成為一塊海綿,吸收所有的信息。
我們在建造樹干。當樹干變得又大又結(jié)實,根都扎好時,你學習新事物的速度將是指數(shù)級的。隨著時間的推移,你會越來越快地形成知識的樹葉。
把2018年作為你冒險的一年,你會學到一種由高需求的技能,你會有一段新的經(jīng)歷,你會得到新的機會。試一試吧。
原文鏈接:https://hackernoon.com/learn-to-code-in-2018-get-hired-and-have-fun-along-the-way-b338247eed6a
編譯組出品。編輯:郝鵬程