作者:鄒振興
廣州源酷信息科技有限公司 技術部總監,全棧開發工程師,Nodejs愛好者
https://github.com/zouzhenxing
什麼是全棧工程師
Full Stack Developer的定義和標準:What is a Full Stack developer?
我個人認為,一個FSD應該具體如下幾個要素:
態度:必須擁有解決任何問題的能力與意願,不固步自封在一個領域。這一點就淘汰了中國95%的程式設計師!在我的工作經歷中,大多數同事都只解決自己領域內的問題,對其它問題不聞不問;更有人覺得自己已經很牛了,拒絕對問題找其它解決方案。Java developer 說Java最牛、PHPer說PHP最厲害,這樣人都成為不了FSD。
能力:必須擁有紮實的基礎、廣泛的技術積累。對數據結構、伺服器、前端開發、UI設計都有涉及。全棧不是全能,人的精力是有限的,不可能精通所有的開發語言。全棧不能全爛,至少精通一個領域的技術。
興趣:FSD真正熱愛技術,而不僅僅只是為了賺錢;FSD願意對某一個問題追根究底;FSD的工作與生活的界限很模糊,很可能在看電影時突然想出了一個技術問題的解決方案。
英語:不願意看英文文檔,永遠就只能獲得二手資料。你在GitHub和StackOverFlow上花的時間,一定會比微信多。
很不幸,我符合上面的上面的全部要素。
為什麼要全棧工程師
在網際網路發展初期,我們使用經典的三層架構來開發項目。視圖層、業務層、數據層,讓專業的人專業的事。但隨著網際網路、移動網際網路的發展,用戶對產品的交互需求越來越高,視圖層的工程量和技術難度越來越大,視圖層與業務層的界限變得越來越模糊。原來的美工已完成不了視圖層的開發,於是出現了前端工程師這個新職位。於是有了圖一的困境。
設計者、前端開發者、後臺API提供者之間相互依賴、相互扯皮。在項目中 人和人之間的合作總是1 + 1 < 2。在網際網路環境中,一個產品的生命周期要短得多。開發量增大,開發周期減少,我們還要浪費時間在溝通上嗎?
FSD加入項目後,如圖2所示。減少了前端與後端之間的溝通,可以與設計師並行進行開發。雖然FSD的工資比普通開發者要高,但從項目角度來看,平均成本是降低的。
如何成為全棧工程師
選擇全棧語言
「JavaScript 是世界上使用最廣泛的語言,沒有之一,包括後端開發工程師也更愛使用 JavaScript。」 ——stackoverflow
在Nodejs出現後,JavaScript語言具備了前端後端開發的全棧能力。
Node.js 與生俱來的 2 個特性:
event-driven
non-blocking I/O
以前總強調的異步特性,到今天異步已經不是明顯優勢。因此除了性能,其他都是病(不足)?
Nodejs最新技術棧
1、Callback hell 問題
目前已經很好的解決了。promise / generator / async 解決方案。
2、包管理
npm 已經是開源世界裡最大的包管理器了,模塊非常豐富(25.6萬 )。
Node.js』 package ecosystem, npm, is the largest ecosystem of open source libraries in the world.
以前我們總是喜歡拿異步說事兒,現在我們拿 Node.js 的強大的生態來炫耀。
前端:
Html5/css3/JavaScript(基礎)
jQuery、jQuery-ui,Extjs(曾經流行)
Backbone(mvc),Angularjs、Vuejs(當前流行)
WebPack + React組件化、WebPack + Vuejs組件化(未來趨勢)
後端:
Nodejs + Express + mongodb/mysql (基礎)
ES6 + KOA + Promise/A+ + mongodb/mysql
Mocha(tdd/bdd測試)
Node-inspector ( Nodejs調試 )
好的學習環境和資源
源酷創意從2014底,就開始對全棧技術進行積累和挖掘,現在擁有了針對企業開發工程師和準備入行的大學生進行全棧工程師崗前培養的實,公司全年提供100人的免費公益實訓。