1. 程式人生 > >2018年,你應該花5個月時間去學習程式設計,並找到一份好工作

2018年,你應該花5個月時間去學習程式設計,並找到一份好工作

  編者按:新的一年,很多人都會想要有一個新的開始。在Andrei Neagoie看來,人們應該選擇一個非常有前景而且能夠從中獲得興趣的職業,他認為這個職業就是學習程式設計,而且是學習Javascript,為什麼他要這樣說?又該怎麼去學習?他發表在Medium上的一篇文章詳細闡述了背後的原因,也給出了相關的學習規劃供人蔘考學習。文章由36氪編譯。

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

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

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

  為什麼要程式設計?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  我們要學什麼語言?

  JS

  對,上面這個。

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

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

  通過引入Node.js,你可以使用Javascript建立一個完整的應用程式(你可以使用Javascript來構建整個專案)。使用Electron,React 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 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。

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

  最後一個月:伺服器、資料庫以及把這些點連起來

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

  HTTP,JSON和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、開始將你的小專案上傳到GitHub。僱主會看你的GitHub配置檔案,以及你在那裡的活躍程度。嘗試在你的個人專案上每週提交5次(它們不必很大)。另外,也請嘗試閱讀本文併為一些開源專案做些貢獻,如freeCodeCamp。

  4、當你遇到問題的時候,要學會使用谷歌,並使用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這樣的頁面上,或者搜尋谷歌,因為那裡有太多的資源。一旦你打好了基礎,你就可以去任何地方。你只需要知道如何尋找答案並提出問題。

  結論

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

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

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

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

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