• 全棧工程師終極修煉指南

    0

    全棧工程師終極修煉指南

    大勢所趨的全棧開發,一部指南助你升職加薪,走上人生巔峰……

    全棧網絡開發,是給從未學習過編程的你,提供一個明確的指引,包括如何成為全棧網絡開發人員最必不可少的技能以及如何找到工作。我將從以下三點

    1,2017年被大量用來教學給學生的程序。

    1. 來自過去幾年我在公司中面試的開發職位以及面試潛在的全棧網絡開發職位的候選人員所積累下來的經驗。
    2. 來自 Coderbyte 中已經開始接受編程訓練和之后得到編程工作的人的故事和反饋。
    1.  

    終極指南

    全棧開發人員是能夠工作在應用程序的前端和后端的開發人員。前端通常是指應用程序中用戶將看到或交互的部分,后端是應用程序中處理邏輯、數據庫交互、用戶認證、服務器配置的部分。全棧開發并不意味著你已經掌握了前端和后端工作所需的一切,而是意味著你可以在雙端工作并理解構建應用程序時發生的情況。

    如果你想在 2017 年成為一個全棧開發人員,并找到你的第一份工作,下面是一個參考指南,列出了你需要學習的東西。

    1. HTML/CSS

    幾乎所有程序,無論是在線的還是離線的,都在說明要成為 Web 開發者需要從 HTML 和 CSS 開始,因為它們是 Web 的基石。簡單地說,HTML 讓你給網站添加內容,而 CSS 則為這些內容添加樣式。

    1.  

    語義化的 HTML。

    解釋 CSS 盒模型。

    CSS 預處理器的優點(你不需要深入理解,但應該知道這是什么以及它們對開發起到的輔助作用)。

    使用 CSS 媒體查詢針對不同的設備編寫響應式的 CSS。

    Bootstrap (一個輔助頁面設計和布局的框架,大量在線程序或學校都關注 Bootstrap 教學。實際上,深入理解基本的 CSS 比理解特定的 Bootstrap 特性和方法更為重要)。

    1.  

    2. Java

    Java 語言一年比一年流行,新的庫、框架和工具層出不窮。Stack Overflow 2016 年的開發者調查指出,Java 在全棧、前端和后端開發中都是最流行的語言。它是瀏覽器唯一支持的原生語言,同時也能作為服務器端語言(下面會看到 Node.js)。下面是一些作為全棧開發者所需要了解的主題:

    理解如何使用 DOM。了解 JSON 并知道如何操作它。

    重要的語言特性,比如函數式成分、原型繼承、閉包、事件委托、作用域、高階函數等。

    異步控制流、Promise 和 回調。

    了解如何正確地通過模塊化組織你的代碼,像 webpack、browserify 或者 gulp 這樣的構建工具對此大有裨益。

    至少會使用一個流行框架(很多程序將重要放在教你使用像 React 和 AngularJS 這樣的庫或框架,但實際上更重要的事情是深入理解 Java 語言而不是特定的框架特性。只要你精通 Java,選用一個框架將不費吹灰之力)。

    雖然有些人可能認為你應該減少使用 jQuery,因為它正趨于死亡。但 jQuery 代碼仍然存在于大量應用中,徹底理解它會對你很有幫助。

    了解一些關于測試框架的知識,以及明白它們的重要性(有人甚至會認為這個話題可有可無)。

    學習重要的 ES6 新特性(可選)。

    3. 后端語言

    一旦你認為已掌握好 HTML/CSS 和 Java 技能,你會向一門后端編程語言進軍,以便處理類似數據庫操作、用戶認證以及應用邏輯的任務。所有在線練習平臺和代碼訓練營通常集中于一門特定的后端語言,而實際上你選擇哪一門也并不重要,只要你理解你正在做的事情并學到了你所選語言的本質。如果你問學哪一門后端語言最好,你會得到各種各樣的無數的回復,所以下圖我給大家列出了一些受歡迎的組合。

    一個重要的提示:不管你決定學習哪一門,請堅持下去,

    Node.js:這是一個很好的選擇,因為 Node.js 本身就是 Java 環境,這意味著你不需要學習新的語言。這也是很多在線平臺和訓練營為什么選擇教學 Node.js 的原因。這里你最有可能學習的也是最受歡迎的能幫助你開發網絡應用的框架就是 Express 。

    Ruby:用 Ruby 開發比較受歡迎的開發框架有 Rails 和 Sinatra 。很多教學平臺把 Ruby 作為首選后端語言。

    Python:Python 受歡迎的開發框架有 Django 和 Flask 。

    Java:現在 Java 語言很少被選中作為全棧網絡開發的教學語言,但是一些公司現在還是使用 Java 作為后端語言,所以現在也還是一門有相當需求量的語言

    4. 數據庫 & Web 存儲

     

    編寫 Web 應用的過程中,有時候需要保存數據,以便稍后再進行訪問。那么最好掌握下面這些有關數據庫和存儲的主題。

    理解關系型數據,比如 SQL,帶來的好處。

    學習 NoSQL 數據庫,比如 MongoDB。

    知道在某些情況下,哪一種更合適。

    知道如何使用你的后端語言連接數據庫(比如 Node.js + MongoDB)。

    知道像 Redis 或 memcached 這類內存數據存儲的優勢。

    Web 存儲可在瀏覽順中存儲會話、Cookie 以及緩存數據。

    伸縮型數據庫、ACID 和 ORM (都是可選的)。

    5. HTTP & REST

     

    HTTP 是應用于互聯網的一項無狀態應用協議 —— 它規范了客戶端連接到服務器的行為(比如 Java 代碼通過 AJAX 請求后端服務器中運行的代碼就是采用的 HTTP)。下面列出了你應該了解的重要主題:

    什么是 REST 以及它為什么對 HTTP 協議和 Web 應用來說很重要。

    設計 RESTful API 的最佳實踐。POST/GET 請求。

    學會使用 Chrome DevTools 是極其有用的。

    SSL 證書是什么。

    HTTP/2 & SPDY

    WebSockets、Web Workers,以及 Service Workers (均可選)。

    1.  

    6. Web 應用架構

     

    當你認為已經掌握了 HTML/CSS、Java、后端編程、數據庫 和 HTTP/REST ,你就到了難對付的部分了。這時,如果你想創建一個稍微復雜的 web 應用,你需要了解如何組織代碼,如何分割文件,往哪里保存大量媒體文件,如何結構化數據庫里的數據,何處執行特定的計算任務(客戶端還是服務器端),以及更多其他問題。

    網上你可以讀到一些最佳范例,但是最好的學習應用架構的方法是自己實踐一個包含多個分散部件的大型應用 —— 甚至更好的方法是:和團隊合作開發一個相對大型/復雜的應用。

    這也是為什么,比如有個七年以上工作經驗的人,也許他未必比工作兩年的另一個人更懂 CSS 或 Java ,但或許是多年各種不同應用和網站的工作經驗,使他學習到如何最有效的架構和設計應用(包括學習其他重要事項),并且在開發過程中能看清“全局”。

    1. Git

    Git是一套版本控制系統,它允許開發團隊的開發人員跟蹤代碼庫的所有更改。了解與 Git 相關的一些事項非常重要,它能讓你了解如何正確獲取錯過的最新代碼,更新部分代碼,修復并修改其他人的代碼,而不會發生任何意外。 你一定要學習 Git 背后的概念,并多做嘗試。

    這里是一個參考列表,它列出了你將會使用到的 git 命令。

    這里是一本手冊 對 Git 和 GitHub 的初學者很有用。

    7. 基本算法和數據結構

     

    這個話題在開發世界中有點兩極分化,因為有些開發人員認為在 Web 開發中不應該如此重視計算機科學的主題諸如樹的遍歷、排序、算法分析、矩陣操縱等。然而,像谷歌這樣的公司在面試中問這些類型的問題是出了名的。 有人說谷歌的前端工程師面試:

    也就是說,正如 Ryan McGrath 所提到的,我們的前端(FE)工程師要有一個堅實的計算機科學(CS)背景,就像我們所有的工程師一樣。

    雖然有些公司確實要求申請人擁有計算機科學學位或同等學歷,也有很多公司愿意雇傭沒有這個技術資格的人,如果他們能夠證明他們懂得如何開發應用程序和展示出對整個域的理解。但是,作為一個合格的開發人員,而不是編寫低效的代碼或使用錯誤的工具,部分要求是理解一些基本算法和數據結構,能夠分析權衡。所以你一定要學會一些東西:

    研究哈希表并試著在更深的層次上理解它們。這個數據結構構成了 Java 中的對象(Python 中的字典,Ruby 中的哈希)的基礎。

    理解樹和圖作為數據結構有何益處。

    理解算法復雜度分析的基礎知識,所以你不會做傻事,像創建實際上沒必要創建的3層嵌套的循環!

    懂得何時使用對象或是數組,并懂得取舍。

    了解為何在處理大量數據時緩存是如此重要。也要了解內存存儲和磁盤存儲各自的利與弊 。

    了解隊列和棧的區別 。

     

    學習所有這些是會很辛苦,但最終還是值得的,并且全棧開發充滿樂趣!

     

     

     

    相似問題

    相關經驗

    相關資訊

    相關文檔

  • sesese色