全棧開發者技能要求101

banq發表於2016-08-31
作為一個全棧開發人員("Full Stack Developer",簡稱FSD)需要熟悉以下領域的知識:關聯式資料庫;伺服器;網路和客戶端。

資料庫/資料來源
需要清楚SQL和NOSQL區別,這是你進行架構選擇的首要決定,你需要知道每種型別的區別和優缺點。至少你應該知道兩種資料庫的實現,比如MySQL和Oracle,需要掌握SQL語句,以及不同資料庫的方言。

在NoSQL這裡應該瞭解類似 MongoDB 和 ArangoDB之類資料庫,對JSON之類語法和SQL風格的語法熟悉掌握,比如下面兩種查詢都是基於同樣資料結構和同樣使用者意圖:

// BSON
sample.bar.find({}, { foo: 1 }).limit(2)

// AQL
FOR row IN bar
LIMIT 2
RETURN { foo: row.foo }

此外,需要了解 DB normalization,對資料庫進行normalize能夠獲得更好檢視和擴充套件性,也能導致更小的資料和更好效能。除了normalization,每個DB都有特殊最佳化方式,比如FLOAT和DECIMAL不同會影響效能等等。


伺服器/資料處理
首先詢問自己的問題是:我的應用是如何工作的?使用許多靜態內容?還是得動態產生內容?需要實時通訊嗎?這些問題的答案會幫助你決定是需要Apache/Nginx Node.JS, Java, Go, Erlang, Python等伺服器,如果你的站點有很多靜態內容並不需要實時通訊,你應該儘量簡單化,一個簡單的HTML前處理器,比如PHP 或 embedded JS 或 Mustache JS 就足夠了,也許還會需要快取,比如Varnish。

編寫你自己的應用有很多苦難,需要你從眾多語言中挑選,建立網路監聽器,編寫協議分析器,這些都是在你完成應用邏輯之後都需要做的,除了瞭解JSON和XML資料格式,還應該瞭解RESTful, RPC和會話,這些都是有關資料通訊或儲存的方式,會話中儲存的是使用者是否登入的狀態,狀態作為變化資料的另外一種代稱,是儲存資訊的唯一配置。

安全也是應該關注的地方,可以容易透過OWASP ASVS checklist實現。

設定好介面和通訊後,需要考慮最佳化效能,快取是你應該考慮的事情;第二個提升效能辦法是壓縮資料,能夠提升傳輸速度,最經常使用壓縮演算法是gzip,更小的blob資料比如小於256位元組會在壓縮時變得更大點。

網路/資料傳輸
雖然只需要透過很簡單的HTTP程式碼就可以實現客戶端瀏覽器和伺服器之間的資料通訊,TCP/UDP等底層協議都被隱藏起來,但是為了提高效能、安全和流量,還是需要了解TCP基礎知識,然後是HTTP協議,有許多頭部資訊和實現都必須詳細瞭解。

在這些協議之上,通用的資料結構如XML和JSON應該知道如何使用。


客戶端/資料表現
HTML CSS和Javascript是必須掌握。

語義HTML能夠支援盲人閱讀器或其他機器讀取你的HTML,此外,可訪問性也是很重要的,建立互動性使用者體驗。icroformat提供傳輸資訊給使用者的標準方式,能夠增強UX使用者體驗。

CSS也需要了解normalization,HTML5Boilerplate是一個預設的CSS模板;你要知道響應式設計responsive design;小螢幕手機上client hints是有用的。考慮使用Bootstrap之類框架,能夠進行增加規則,同時防止大框架造成的過載,移除不用規則,最小化使用它。

確定你需要JS框架才加入它們,如果你希望AJAX呼叫,VanillaJS就夠用。JQuery、Angular和React都是現代常用框架。

通用程式設計
不管你使用JS或PHP或Ruby等,需要知道點如何建立堅固架構。
易於維護,易於開發,有效能hot-path,沒有洩漏,有資源生態經濟系統。

至少需要了解程式設計模式在心。同時試圖更深理解你的標準庫包是如何工作的,搞點黑技術。


Full Stack Developer 101 - Hashnode

相關文章