你是否應該專一於全棧?"_。前端
若是你想把學習做爲你的職業,請關注全棧。react
全棧開發人員將不斷髮展的軟件世界視爲機會,而不是威脅。他們利用現代語言和新框架。他們不斷髮展本身的各類技能。他們就像技術自己同樣前沿。git
全棧開發人員可以適應。每一個公司都有一個獨特的堆棧,在前端和/或後端有不一樣的挑戰。所以,應用多樣化技能組合的能力使得全棧開發人員真正有價值。算法
最後,全棧開發人員利用了軟件中最使人興奮的部分:探索未知。若是你第一百次都在編碼相同的解決方案,工做就會很無聊。但全棧開發者永遠有機會深刻到新的問題空間。數據庫
若是你是一個新人,你從哪裏開始?編程
本文中的圖表追蹤了你如何成爲一名全棧開發者。它列出了你須要學習的技術。請注意,時間估計是基於我的經驗,以及個人同事的經驗。另外,估計值假設你天天投入2-3個小時來學習。若是你能夠投入更多或更少的時間,請調整估計值。後端
即便你頗有經驗,你也會發現這個圖表頗有用。看看你的落腳點並跟蹤你的進度。不管是哪一種方式,不管是新手仍是有經驗的人,在圖表結束時,均可以認爲本身是一個全棧開發者。🏆瀏覽器
HTML/CSS(1周以上)。服務器
從學習網絡的構件開始。你必須學習超文本標記語言(HTML)。它是用來構建網站的語法。幸運的是,它是列表中較快學會的技術之一。網絡
接下來,你有層疊樣式表(CSS)。學習這個主要是經過實驗來完成。一旦你學會了基礎知識,包括flexbox,就不要花太多時間進一步挖掘。你能夠在其餘項目中必要的時候學習其餘的CSS細節。
JavaScript (1 month+)
你的不少時間將被用來學習JavaScript編程語言。JavaScript可讓你的網站變成動態的網絡應用。
JavaScript是一個必不可少的檢查點。幸運的是,有大量的資源能夠用來加緊學習JavaScript。但仍然要注意專一於基礎知識。將中級和高級概念留到之後再學。隨着學習的深刻,它們會變得不那麼混亂/使人沮喪。
框架(2個月以上)。
當你使用JavaScript的勢頭愈來愈好的時候,請學習一個JS框架。一個框架可讓你重用經常使用功能,更快地實現大型應用。
有幾個選擇。React,Angular,Vue,等等。在我看來,要學的是React.js.,它既對初學者友好,又受到不少有經驗的開發者的喜好。
這並非說你應該徹底忽略Angular和Vue。至少要讀懂它們,知道它們與React的區別。甚至作一兩個教程。
但你的時間是一種資源。我會把大部分時間用在React上。
相關的前端概念(1個月以上)。
測試(2周以上)。
毋庸置疑,可靠的軟件公司都會測試他們的代碼。所以,一個全棧開發人員應該熟悉測試實踐和庫。既然你懂JavaScript和React,那麼Jest和Enzyme就是不錯的選擇。
Redux (2 weeks+)
若是你在學習React,就沒法避免Redux。的確,它們是不一樣的概念。React是呈現層。Redux管理的是內部數據。然而,將Redux與React一塊兒應用已經成爲業界的標準。
相關軟件概念(約1個月)。
儘可能將如下概念儘快融入到學習過程當中。
HTTP和客戶端-服務器架構(2周以上)。
一個全棧開發人員應該知道數據是如何在萬維網上進行通訊的。在HTTP中,函數遵循請求和響應模式。它是這樣的。一臺計算機做爲客戶端。客戶端使用Web瀏覽器向服務器發送HTTP請求。服務器,也就是另外一臺計算機,用HTML和CSS等資源來響應客戶端。
我建議創建一個向公共API發出請求的項目,讓你對HTTP髒手。
Git (1 week+)
儘快學習Git。Git是一個版本控制系統,用於跟蹤倉庫(軟件項目)中的變化。你能夠把它當作是有版本的Google Drive。你能夠與他人共享倉庫。文件有多個貢獻者。但在Git中,你能夠擁有項目倉庫的分支,用於替代版本。Commits 記錄了添加、更新或刪除文件的確切時間。而這僅僅是它功能的開始(小貼士:git reflog
是一個祕密武器)。
此外,其餘軟件工程師和招聘人員也會但願在Github上看到你的做品。
Node.js(1個月以上)。
利用你的JavaScript經驗,在後端探索Node.js。將其與 Express.js 中間件一塊兒使用,構建您本身的 API。Node.js在基於聊天的應用和流媒體方面大放異彩。利用這些優點,嘗試構建一個Facebook Messenger/WhatsApp克隆。
就像你第一次接觸JavaScript同樣,Node.js會顯得很龐大。有大量的資源是很好的。但若是你不知道從哪裏開始就不行了。專一於基礎教程,天然而然地提高水平。
SQL和關係型數據庫(1.5個月以上)。
你不能忽視SQL和關係模型。後臺的一個基本方面是數據存儲。結構化查詢語言(SQL)是使用最普遍的語言,以協調如何讀取、寫入和更新數據。學習關係模型。這是MySQL、PostgreSQL和Oracle等工業標準關係數據庫系統背後的概念。
當你在學習Node.js的時候,你會遇到不少MongoDB的教程。MongoDB是一個NoSQL數據庫--關係型數據庫系統的替代品。當心,只關注MongoDB可能很誘人。如今,瞭解一下NoSQL數據庫和語言是很好的。也要了解它們的優點/劣勢。但不要跳過SQL,也不要跳過關係模型。它們在行業中的應用如此普遍。你最終會遇到它們。
就這樣,你已經完成了圖表!開香檳吧! 派對就像你5歲生日時同樣熱鬧!那麼,在這種狀況下,香檳多是不合適的... ...
不管如何,蛋糕來一塊吃起來。你是一個全棧開發者。
可是,它並無中止在這裏... ...
一個將全部內容整合在一塊兒的項目(2周以上)。
你有全棧技術。但願你一直在積累做品集。可是爲了幫助你,真的很難在網上找到一個將全部全棧概念聯繫在一塊兒的教程。你得本身去拼湊一個項目。
因此我創建了一個課程來解決這個問題。到最後,你的做品集裏會有一個全棧項目。其重點是React.js、Redux、Node.js和PostgreSQL。它還關注那些能讓你脫穎而出的小細節:代碼設計的最佳實踐,以及方法命名。
Master Full-Stack Development | Node, SQL, React, and More
計算機科學(5個月以上)。
一個全棧開發人員也應該懂計算機科學。是的,從時間估算上看,大學四年的時間確實能夠歸結爲五個月。那是否是說拿到CS學位就沒有意義了呢?固然不是,得到計算機科學學位是一項巨大的投資。你能夠和許多聰明的人創建聯繫。並且你還能夠探索你可能感興趣的其餘工程課題。
但那些在行業中當即適用的東西--數據結構和算法、操做系統和軟件開發原理--能夠在高度集中的五個月內完成。
個人不少同事都是非CS專業畢業的(有的甚至是非科學專業)。他們要麼自學,要麼上過訓練營。
其餘語言/技術全棧(正在進行)。
正如一開始提到的,全棧開發者在未知中茁壯成長。學習的過程是持續的。一旦你在一種技術上變得很危險,是時候把它的競爭對手/替代品添加到你的工具箱中了。用另外一個JS框架(如Vue.js)構建一兩個項目。開始探索NoSQL數據庫,好比Redis。
真正讓本身脫穎而出的方法是瞭解每種技術的優點/劣勢。知道何時最好使用Node.js,與何時應該使用Go或Scala。
瞭解語言的哪些部分值得稱讚。_知道哪些部分值得抱怨。
最終,若是你想把學習做爲你的職業,請專一於全棧開發。
David是舊金山Zendesk的全棧開發人員和軟件工程師。他喜歡製做教育內容。他有17門課程,有來自世界各地的約20萬名學生。看看他們吧 https://www.udemy.com/user/54cd8dd54e49b/
Highlights:
Master Full-Stack Development | Node, SQL, React, and More
Build a Blockchain and a Cryptocurrency from Scratch
React — Mastering Test and Behavior Driven Development
Also, feel free to connect with David by finding his social media links on davidtkatz.com