[聚合文章] 五個月成為 JavaScript 工程師的完整攻略,每個月要幹嘛都寫出來讓你照著做!

JavaScript 2018-01-04 10 阅读

【我們為什麼挑選這篇文章】我就不說太多了,如果你跟本篇作者有相同的毅力,相信做什麼都能成功的!(責任編輯:陳君毅)

如果你是一個初學者,初級開發人員,或者對這個行業很好奇,這篇文章就是為你準備的。如果你是一個成熟的開發者​​,你可能會在這裡找到一些有用的連結,因為我列出了最好的資源,能給你的技能提升帶來巨大好處。

利用在線課程和大多數免費工具,你可以獲得一項有價值的技能,讓你在一個有回報、充滿挑戰的行業中工作。2018 年,需要有技術素養的人的工作領域將會越來越多。這也是我第一次進入這個行業的原因。我想要控制自己的生活,並對自己從事什麼類型的工作有發言權。直到今天,我還在堅持自己的觀點:如果這是你的目標,這是一個最好的行業。

重要提示:這篇文章看起來可能像是指導你一步一步成為開發者的指南,但如果你仔細觀察,這背後有一種你可以應用於任何領域學習的策略

為什麼要學 coding?

在我們進入真正成為一名開發者的步驟之前,必須要先了解一下為什麼你要沿著這條路走下去。每一個需要你付出生命中重要時間的決定都應該是合理。畢竟,時間是我們擁有的最重要的資源:

A、你想要在這個行業中工作,在這個行業裡,對技能的需求很大,而且有很多機會成為食物鏈頂端的非常重要的角色。

B、你喜歡獨立。你想要一種能讓你在世界上任何地方都能輕鬆找到工作的技能。如果你決定明天搬到冰島去,你想確保在找工作方面不會遇到麻煩。

C、你已經注意到了 2003 年和 2018 年之間的區別,以及我們在短短 15 年裡取得的技術進步有多大。你想處於一個影響世界進程的行業的最前沿。

D、過去幾年,最大的行業增長是在加密貨幣(比特幣)和人工智能(機器學習)領域。我們不希望在這些事情在未來佔據主流的時候被拋在身後。你想要了解並且能夠掌握這些技能。

E、你認為改變是好的,學習永無止境。那麼為什麼不做點新東西呢?

但我沒有計算機科學學位,我甚至不知道互聯網是如何運作的!別擔心,我們會考慮到這一點的。繼續閱讀 ……

當你選擇一條新的職業道路時,這裡有一些不錯/必須的衡量指標:

1、在接下來的 10 多年裡,它必須是有用的。這項技能在未來的許多年裡都應該被重視,來保證你的工作是安全的。

2、對有這種技能的人的需求必須多於供給。行業中技能熟練從業者的數量越少,你對你的工作和你所工作的公司的控制力就會越強。

3、無論你在行業中有多少年的工作經驗,都能獲得高薪。你肯定不希望在過上體面的生活之前,還要在公司的職位晉升上花幾年的時間。

4、一個不需要大學專業學位的行業。你不會想要在開始賺錢之前去讀研究生課程,然後在接下來的 4 年裡負債累累。是的,我認為有比更昂貴的編程訓練營更好的選擇。

5、能夠在最短的時間內趕上行業中表現最好的人。沒有什麼經驗能幫你快速就業?你能以最快的速度縮小與該領域的資深專家之間的差距嗎?

6、它必須能夠給你提供基礎技能。無論未來如何,你都有多種職業可以選擇。例如,通過學習編程,你就能更好地理解新的或即將到來的技術,比如分佈式應用、區塊鍊和雲計算,然後選擇你想要進入的領域。

7、要開心。最重要的是,你每週都要工作 40 個小時。你當然不希望是枯燥乏味的。

根據我的經驗,coding 符合上面的每一個要點。你的經歷可能會有所不同。我最喜歡的一本書是《太好了,他們不能忽視你》(So Good They Can’t Ignore You)。在書中,他們認為你不應該因為喜歡旅遊就去從事旅行行業。大多數人都是通過奮鬥和努力去掌握一項技能來找到激情的。 一旦人們開始承認你的技能有價值,並且你能夠因為這些技能而感到受尊重,那就是你對你所做的事情產生激情的時候

你想自己評估一下,看看它是否適合你。

重要的一點是:記住,前 2 個月你會覺得自己在攀登一座無法翻越的高山。你學習的每一門教程或課程都會讓你覺得自己是世界上唯一一個不懂這些東西的人。保持堅強。隨著時間的推移,你會有越來越多的「會心」時刻。 我們稱之為冒名頂替綜合徵 (Imposter Syndrome):你覺得自己是唯一一個不知道這個信息的人,你被自我懷疑所包圍。請放心,當我們學習新東西時,我們都會有這樣的感覺

你會學到的是,成為一個優秀的開發人員並不一定要記住一大堆文檔。這是關於如何使用所有可用的工具來解決問題。這是一個解決問題的方法,從不知道的狀態變為可能。

我是誰,你為什麼要聽我的?

這個問題非常直接,但我想這是公平的。首先,我是一名資深的軟件開發人員,曾在包括矽谷在內的一些頂尖科技公司工作過。在我的職業生涯中,我一直很幸運,在 2018 年,我將幫助其他人學習軟件技能。但我並不是天生的電腦奇才。我沒有獲得計算機科學專業的學位。

這一切都是在多年前開始的 .. … 我想要轉行,於是決定自學計算機編程。

第一個月,我迴避了所有的教程或書籍。相反,我用這個月的時間來尋找我怎麼去學習以及怎麼有可能獲得工作的最佳方式。我想要高效率,不浪費時間去學習過時的技術,或者學習一些我在一個月後就會忘記的東西。我研究了其他人的經歷,看了招聘啟事,與知名的開發者交流,查閱了在線課程,研究了訓練營,甚至閱讀了未來學家介紹 20 年後我們將會使用哪些技術的文章。基於這些,我為自己制定了一個專注於效率的課程: 在最短的時間內能被雇傭的關鍵學習量

課程的重點不在於做最少的工作。相反,它的重點是在最重要的事情上努力工作,以便以最優的方式進行工作。這並不意味者要做最低限度的工作,也不意味著要為成為一名初級開發人員而努力。如果你能夠通過努力工作,跳過這個過程,直接進入中級開發者的角色,那將是一個更好的結果。幸運的是,我已經篩選過了所有的東西。

儘管我花了一個月的時間來對我的學習進行規劃,而不是直接開始學習,但從長遠來看,這是非常有用的,因為我並沒有盲目。我知道我要去哪裡,我有一張通往終點的線路圖。你也會有。

所以,是的,我一直都能理解你的處境,也知道你真正需要些什麼。當我開始學習的時候,我希望能有這樣的東西給我提供幫助。我還發現,許多教程都是由行業內的資深人士來教授的,他們擁有大量的技術知識,但卻無法正確地把這些知識教授給新手。我對當前市面上存在的大量的教學課程與視頻進行了研究,而且還在進行中。

從那以後,我開始為財富 50 0 強科技公司提供諮詢,召開編程研討會,為即將出版的科技書籍提供諮詢,並出席技術交流活動。我現在不需要為任何人工作。我熱愛這個職業,我想很多人會喜歡它,也會從中受益。因此,我的使命就是幫助那些想要實現這一飛躍的人。

好吧,最後一句話有點戲劇性 ……。

我們要學什麼語言?

對,上面這個。

你將會成為一個 Javascript「忍者」的原因如下:

Javascript 無處不在。每個擁有網站或應用程序的公司都需要具備 Javascript 知識的人。這種語言是大量招聘信息的必備條件(如果你不信,可以在 LinkedIn 上搜索 Javascript 看看)。

通過引入 Node.js,你可以使用 Javascript 創建一個完整的應用程序(你可以使用 Javascript 來構建整個項目)。使用 ElectronReact Native 等工具,Javascript 可以讓你創建桌面應用程序,移動應用程序,Web 應用程序甚至 VR 應用程序。你可以通過使用像  Jonny-Five 這樣的東西來控制機器人。你可以 建立自己的區塊鏈Lisk 是一個類似於以太坊的平台,使用的就是 JavaScript。

如果您沒有閱讀第一個要點,並且正在考慮其他問題,請允許我再重申一遍: 行業中對 Javascript 專家的需求是巨大的 。每週都會有招聘人員和獵頭與相關開發人員進行聯繫,這種情況並不少見。

Javascript 社區正以驚人的速度增長。這個社區有很多新的發展。有些人抱怨 Javascript 疲勞,因為每天都有越來越多的新工具被開發出來。然而,我們可以利用這一點,使其變成你的優勢。你將會和那些在這個行業工作多年的人同時學習這些新技術。

相信我,這是一個很棒的技術,有很多需求,也有一個偉大的社區。如果你不相信我,這裡有一個 趨勢開發者技能分析

夠了,讓我們開始吧。在下面,你會找到我認為的最適合你的東西,讓你能夠充分利用自己的時間。在 5 個月後,你應該能夠獲得第一個真正的非入門級的編程工作。這個過程,不需要參加編程訓練營。只有你和你的決心。

5 個月,一步一個腳印

我們將專注於在 2018 年最被人需要且最有可能找到工作的技能。像 PHP 或 jQuery 這樣的技術已經過時了。它們沒有任何問題,我完全尊重它們,但根據這些年我收到的一些電子郵件,很多使用這些技術的人都在經濟上遇到了困難,而且有家人需要他們支持。時間對他們來說很重要,他們也希望盡快找到工作。

第一個月:大場面

要回答的一個大問題是:電腦、互聯網和網站是如何運作的? 我怎樣才能建立一個網站?

一、 理解費曼技巧 (Feynman technique) ,這樣你在接下來的 5 個月裡就能真正學到東西,而不是只使用短期記憶。

二、互聯網是如何運作的: 這個 來自 LearnCode.academy, 這個 來自 thenewboston。

三、計算機科學的最佳概述: 計算機科學速成課

四、你可以在 Youtube 上 關注這門哈佛課程 。這可能是最有含金量的計算機科學課程。不需要做練習。

五、如何使用命令行: 這個來自於 Zed Shaw

六、如何建立一個網站/獲得一個域/並讓它運行: LearnCode.academy 視頻

七、HTML、CSS 和 Javascript 是如何組合在一起的: FrontendMasters 的網頁開發 課程。只涉及到 Javascript 的部分。

八、學會用 Bootstrap 建立網站。先從 這個 開始,然後轉到  Bootstrap 4 文檔 ,並添加你在樣板網站上看到的組件。了解它提供的好處 vs. 自己編寫 CSS。

九、了解如何使用模板來使用免費 主題 和模板來 構建 網站。

十、如果你有時間,你可以在 freeCodeCamp 上參加一些關於 HTML 和 CSS 部分的課程。

第二個月:Javascript

要回答的一個大問題是:Javascript 如何讓機器做你想做的事情?

一、這是你在接下來的幾個月里關注的重點。Javascript 解決了什麼問題?開始用 Javascript 編寫小的程序,讓你的網站以某種方式運行。這種語言能讓你的網站除了看起來漂亮之外,還能做其他事情。從這兩門課程開始:

二、閱讀 Eloquent Javascript 書。

三、了解 DOM(Document Object Model,文檔對像模型)操作。

四、閱讀 這篇關於編程的好文章

五、了解如何使用 Chrome 開發者控制台編寫 javascript。做 這個 CodeSchool 課程 (只有控制台部分)。然後學習在 html 中註入<script> 標籤來運行 JavaScript 文件。

六、看 Kyle Simpson 的 這個 演講,完成第一個月剩下的課程。最後,在 CodeSchool 的 javascript 頻道上完成 這五門課程

七、如果您在 5 個月內有任何疑問,可以使用 freeCodeCamp 中的這個 指南 進行簡短的查詢。

八、在這個兩部分系列中學習新的 ES6 功能:

九、通過 這些課程 學習 git 和 Github 。創建一個 Github 配置文件,並開始每天提交。開始開發一個樣本網站。

十、學習術語/行話: 這個視頻這個

十一、最後, 在 YouTube 上 觀看這個 很棒的播放列表 。忽略 jQuery 和 Grunt 的部分。

十二、當你有問題,或者想要深入研究一個話題的時候,就開始使用 這個指南

第三個月:Javascript+NPM+構建你的網站

要回答的一個大問題是:我能建立一個專業的網站,並了解整個過程嗎?

一、Google 開發人員工具→了解如何使用 Google Chrome 調試您的程序和網站。如果你還沒有完成 這個 CodeSchool 課程 ,請完成。

二、開始參加當地的一些編程和 Javascript 會議。

三、了解 同步和異步 javascript 之間的區別。

四、什麼是事件循環?→一旦你對 Javascript 有了很好的理解,看這個 視頻 將會改變遊戲規則。把最好的關於 javascript 的討論交給你。

五、在 這裡 學習有關 Promises,和 ES7 中的異步等待。

六、最後,看看 Douglas Crockford 的 這個 課程。

七、在 這裡 了解 Javascript 的歷史。

八、 下載 node.js 和 npm 。從 NPM 下載  lodash 並使用  browserify 來使用常見的 js 導入。 在這裡 了解一下。理解為什麼 npm 對於開發人員來說是一個非常棒的工具。

九、到本月底,你應該有一個個人網站,上面有 Github 上的代碼庫。使用 Github Pages 可以免費有一個實時網站。

第四個月:React.js(或 Vue.js)

要回答的一個大問題是:React 或 Vue 解決了什麼問題?

我有嚴重的偏見。我喜歡 React.js。事實上,我會​​把它教給其他人,並進行相關的研討。所以請相信我。除非你有充分的理由去學習 Vue.js,否則你要學會 React.js。這是一個全新的、令人興奮的工作,但還沒有具體的工作崗位需求出現。

一、React→按順序做: 。然後再去查閱 官方文件 ,通讀所有的資料。如果你有錢, 這是 最好的 React 教程。

二、如果你有時間,想要學習更多的關於 React 的深度教程,你可以 點擊這裡

三、可選:學習 Redux→觀看 課程。不要讓你的腦袋爆炸。然後閱讀關於它的 文檔

四、使用 create-react-app 構建示例 React 應用 程序 。創建 React 應用程序會為你開啟一個新的世界。

五、在 Heroku 上部署你的應用程序。

六、在 GitHub 頁面 上部署你的應用程序。

七、開始 關注 Medium 上面的 Top10 文章 ,閱讀任何有關編程的文章。註冊這些電子郵件列表,與業界正在發生的事情保持聯繫: Javascript 和  React

八、開始建立你的在線簡歷。在這個問題上,有些人給出的建議比我好。看看 這個這個 。我還寫了一篇關於這個的文章,你可以 看看

最後一個月:服務器、數據庫以及把這些點連起來

要回答的一個大問題是:服務器、數據庫和樹莓派在哪裡適合這些方面?

一、 HTTPJSON 和  AJAX 。了解這些如何讓你與服務器通信。

二、學習 如何構建一個 API 服務器 。然後再進一步, 在這裡 學習 node 和 Express.js 。

三、一旦你完成了這一步,使用一個有趣的 API,比如 這一個 ,創建一個簡單的應用程序。

四、訂閱 computerphile youtube 頻道,並觀看他們的視頻。儘管聽懂其中的話題可能很難,但它會給你帶來一些神奇的東西。

五、什麼是計算機/服務器/操作系統:買一個 樹莓派 並建立自己的服務器。在 YouTube 上查看不同的項目,你可以開始用你的樹莓派。最後,在樹莓派上製作一個簡單的腳本。按照 這個課程 。在樹莓派上託管你的網站。你會驚訝於自己是多麼的酷。

六、在下面的主題上花一天時間。你不需要很好地掌握它們。只要了解為什麼他們在那裡,他們正在解決什麼問題:測試,機器學習,時間複雜度, SQL ,UX / UI,持續交付, 基本數據結構 。你應該能夠解釋什麼是數據結構。提示:數組和對像是兩種流行的 Javascript 數據結構。

我已經聽到有人看到上面的建議後開始對我大喊大叫。「你瘋了嗎?!你不認為測試很重要嗎?」

但請聽我說。我同意以上觀點(測試)對於成為一名優秀的開發人員很重要,每個人都應該學習這些技能。然而,我們正努力在這裡打基礎。開始深入研究一個話題是很容易的,但是如果沒有基礎,你就不知道為什麼它很重要,或者它與你正在做的事情有什麼關係。此外,在我發現的大多數招聘信息中,幾乎沒有提到上述技能。把這些知識留到你工作的時候再去學習。

記住:你的目標是要以最高效的方式工作。

七、使用 Firebase 作為數據庫構建一個小型項目。

八、閱讀 JavaScript 的兩大支柱的第一部分 和  JavaScript   的兩大支柱的第二部分

讓我們來回顧一下

在 5 個月結束時,你應該完成以下要求:

1、學習 HTML 和 CSS。然後,買一個域名,從像 BlueHost 或  HostGator 這樣的地方購買主機,以最便宜的成本搭建一個網站,然後放到網上。如果你想使用  Github Pages, 你可以跳過這個選項。但如果你能負擔得起,那就從上述的託管平台買一個主機吧,這樣你就能更好得理解它們的工作原理。從現在開始,這將是你的投資組合。學習如何更新和編輯。當你學習新事物的時候,繼續讓它變得更好。不要在這上面花太多時間。這就足以證明你可以在網上放點東西,讓它看起來還不錯。

2、開始學習 Javascript。現在,你如何讓你的網站具有互動性呢?瀏覽上面的資源,看看怎麼用 Javascript 來實現。

3、開始將你的小項目上傳到 G itHub。雇主會看你的 GitHub 配置文件,以及你在那裡的活躍程度。嘗試在你的個人項目上每週提交 5 次(它們不必很大)。另外,也請嘗試閱讀 本文 並為一些開源項目做些貢獻,如 freeCodeCamp。

4、當你遇到問題的時候,要學會使用 Google,並使用 Stack Overflow 。當你開始的時候,你遇到的 99% 的問題都可以在網上找到。或者加入  Javascript IRC 頻道, 並在遇到困難時提問。你所在的社區也可能有一個空閒的頻道。如果沒有,從 這裡 選一個,和其他的開發人員多交流。

5、習慣使用命令行來做事。練習時應始終保持打開狀態,並嘗試使用它而不是 GUI(圖形用戶界面)。

6、學習 Javascript 的最新語言特性和趨勢,並學習解決與它們有關的問題(即 Promises,ES6,ES7, 函數式編程技術 )。

7、參加當地的相關交流會議,開始與行內人士交談。你會被所有你不知道的事情弄得不知所措。不要擔心,這是自然的。當你可以和其他程序員見面的時候,就可以被行話和術語包圍了。

8、開始聽播客, Javascript Jabber 。這會讓你熟悉行話,所以當面試時間到來的時候,它不會讓你不知所措。當你聽前幾次的時候,你根本不知道他們在說什麼。不要失去希望。最終你會明白的。 FunFunFunction 也是一個很棒的每週 youtube 頻道,你應該關注。還有一個更複雜的播客,但可能是軟件方面最好的播客,請查看 軟件工程日報 。同時留意每年的  javascript 調查 狀況, 看看行業趨勢如何。

9、儘早向招聘單位投遞簡歷。我們把它們作為練習使用。大多數面試官都是專業的程序員,這樣他們就可以對你的技能進行評價,你也可以用這些來練習編程問題,並向這些專家提出你想要提出的任何問題。

10、開始申請要求範圍遠遠大於你狀況的工作。你會得到一些面試機會。你不應該為了一份工作而安定​​下來。如果你從不問,答案永遠是否定的。

11、讓你的 LinkedIn 個人資料看起來不錯。不要在簡歷上花太多時間。把它寫在一頁紙上,簡明扼要,寫下你在前幾個月學到的所有技能。自學已經顯示出了很大的勇氣。記住,你的簡歷只是為了給你獲得面試機會,之後,它們就像紙巾一樣……這個比方也不太恰當,因為紙巾很有用。我在簡歷上花了不到 2 個小時。與其他開發者不同的是,你來自不同的領域,有不同的背景。這怎麼能不讓你與眾不同呢?

12、面試時,並為自己如何找到工作而感到驚訝。並不是所有的開發者都能獲得成功,不過話說回來,在過去的 5 個月裡,沒有多少開發者能夠學會一切。它顯示出的是一種自信。只適用於 LinkedIn 上的工作,其餘的你應該直接發郵件或者打電話給你想要工作的公司。不要把時間浪費在所謂的第三方求職招聘網站上。

哪些 20% 能夠給我 80% 的結果

大多數人都有一個想法,那就是你只有得到 100% 的東西,才能進入下一個階段。但對於大多數技能來說,包括編程,你在獲得 100% 東西上花費時間越長,到達下一階段的時間也就越長。你只有 5 個月。最後的 20% 將會在團隊,實際項目(以及獲得報酬)中得到更好的學習與獲得。因此,我們只專注於獲得 80% 的知識,從而有效地利用我們的時間。

從這一切中獲得的最大收穫

技術總是在變化。Javascript 尤其如此。現在事情變化得如此之快,以至於不可能知道每一個東西。你需要知道的是,所有的東西都是如何組合在一起的,以及每種技術都在試圖解決什麼問題。

最重要的是,你只需要知道它的存在,這樣你就可以在需要的時候查看它,並找到它。程序員是解決問題的人。學會用可用的工具來解決問題。我們大多數人花了很多時間在像 StackOverflow 這樣的頁面上,或者搜索 Google,因為那裡有太多的資源。一旦你打好了基礎,你就可以去任何地方。你只需要知道如何尋找答案並提出問題。

結論

注重效率。我們大多數人放棄一個目標的原因是我們看不到結果。專注於重要的事情,這會讓學習變得有趣。但它並沒有就此結束。學習永遠不會停止,你的目標是盡快找到工作,這樣從那一刻起,你每天都能在學習的同時得到一份薪水。

隨著時間的推移,編程變得越來越有趣,而且當你每天都能得到報酬來解決問題和發展自己的技能時,它會變得更好。真正的增長發生在你開始與真正的團隊進行真正的項目的時候。

這就是為什麼我會堅持你的「學習」期應該盡可能短,以避免債務,並增加你在最好的學習環境中學習的時間:團隊合作。 我甚至都不推薦從一開始就做自由職業者。讓自己置身於一個人人都比你聰明的環境中,每天都在和他們一起工作。在那裡,成為一塊海綿,吸收所有的信息

我們在建造樹幹。當樹幹變得又大又結實,根都紮好時,你學習新事物的速度將是指數級的。隨著時間的推移,你會越來越快地形成知識的樹葉。

把 2018 年作為你冒險的一年,你會學到一種由高需求的技能,你會有一段新的經歷,你會得到新的機會。試一試吧。

——

(本文經合作夥伴 36kr  授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈 2018 年,你應該花 5 個月時間去學習編程,並找到一份好工作 〉。圖片來源: Iwan Gabovitch , CC Licensed。)

想學點別的技能,這邊有更多自學好文章

注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。