原文地址前端
這篇文章頗有道理,若是放在十幾年之前,說全棧工程師,還能夠,那時的 Web 站點的訪問量不是很大,大都是一臺 Web 服務器和一臺數據庫服務器,採用分離的結構,更有甚者,Web 服務器和數據庫服務器是同一臺服務器,一個工程師,就能夠完成全部的工做,包括,用 Oracle 或 MySQL 創建數據庫,編寫 Web 的前端和後端,前端包括 HTML,CSS,JavaScript,後端則可採用 Java,PHP,.NET,Ruby,更有用 Lisp 的(國外比較多)。如今的大網站,都是由當初的小網站起步的,即使是 Facebook,當初也是扎克伯格部署在宿舍裏的。但如今,光靠一我的,這幾乎是不可能完成的任務,尤爲是想搞出個高可用,高性能的 Web 站點,好比,電商網站,每一年雙11淘寶的訪問量,估計你也看過,12306 在每一年春運的宕機~加之,均衡負載(各個層的均衡負載),CDN,讀寫分離,分庫分表,主庫備庫,(消息)中間件,服務發現,如今的雲,虛擬化,各類容器……等等一系列使人眼花繚亂的技術和策略,其中的任何一個均可以寫本書出來~對了,還有移動端,再說全棧工程師,就顯得極爲不靠譜,誰有這麼大能力和精力,把這些一套的東西,都弄明白呢,不僅要弄明白,還要讓各個構件銜接起來~數據庫
「全棧開發工程師(full stack developer)」一詞常常出如今企業招聘的崗位描述中。但 Hello Pretty 聯合創始人兼首席技術官 Scott Hadfield 在近日發表的一篇博文中指出,全棧開發工程師就是一個神話,即便不徹底如此,用人單位也很難找到一個這樣的人。後端
爲了進一步闡述這一觀點,他列出了下面這樣一個並不詳盡的「棧」:服務器
用人單位對全棧開發工程師的預期遠遠超出通常人的能力。全棧開發工程師至少須要對棧中的每一個組件都有足夠深刻的瞭解,以便能作出明智的選擇及向管理層解釋。上圖所示的技能表每一年每層都會增長新的組件,每隔幾年又會增長新的層。所以,Scott 認爲,在招聘時尋找全棧開發工程師不只不合理,簡直就是愚蠢。架構
不過,Scott 也認可,確實有人具有全棧能力。也有許多距離全棧尚遠,但仍然使人驚歎的開發人員、設計人員和項目管理人員。而有些自稱全棧工程師的人也僅能列出上述一半多的組件,就更不用說組件之間的交互了。因而,他寫道:框架
我看到的幾乎全部使用全棧一詞的狀況(尤爲是在招聘海報中),用人單位真正的意思只是尋找「使人驚歎的人」。運維
另外,Scott 指出,全棧開發工程師或許根本就不該該編寫代碼,而應該更多地充當系統架構師或集成工程師的角色。在使用「全棧開發工程師」這樣一個流行術語時,應該說明是哪一個「棧」,好比是 Web 棧,仍是移動棧。工具
最後,Scott 總結道:性能
全棧開發工程師就是一個神話,不是由於不存在這樣的人,而是由於這個術語沒意義。網站
Scott 博文在 Hacker News 上引起了激烈的討論。網友 andrewstuart 對「全棧開發工程師」的理解在參與討論的網友中具備必定的表明性:
我對全棧開發工程師的定義是,他們可以本身構建和部署一個完整的、能夠工做的應用程序,而不須要其餘任何人的幫助。那意味着他們可以編寫前端、後端代碼,可以配置服務器,固然還可以設計數據庫表。
不過,有網友認爲運維技術也應該是開發過程的核心部分。若是花費大量時間構建的應用程序由於運維細節沒法按計劃部署,那會致使大量的返工。
有許多網友都持有與 andrewstuart 相似的理解,他們認爲全棧開發工程師並非一個神話。BadassFractal 就是其中一例:
我就作全棧開發,包括Ops(經過各類CM工具配置AWS並向上部署應用程序……)、DB(PostgreSQL 用了5年……)、後端(獨立構建相似Rails的框架……)、前端(能夠綜合運行原始 DOM、Backbone 及 React)等全部這一切。
缺點是,我在其中任何一個方面都不是真正的核心專家,所以,其中任何一個領域中的任意一名優秀專家都比我強。
BadassFractal 的後一部分觀點頗具表明性。jvehent 也認爲,一我的能夠成爲全棧開發工程師,但卻沒法成爲一名全棧專家。對此,有網友指出,企業應該給這兩種人都留有空間。另有網友表示,若是企業在招聘時只盯準了前端和後端均是專家級的開發人員,那很是惋惜,由於在一個多人團隊中,他們全面的能力並不能獲得有效的發揮。