如何成爲一名全棧工程師(full stack developer)?互聯網最熱的話題之一。LinkedIn, Facebook上標榜本身是全棧工程師的人也愈來愈多,彷佛正在成爲IT行業的新潮流和新趨勢。Full Stack的概念早已不新鮮,廣大開發人員之間對」全棧」類話題的討論也從未中止。曾經看到過一篇關於全棧設計師的文章,譭譽參半。有的人認爲全棧只是一個頭銜而已,真正的仍是看我的的能力和技術。php
中國有句老話:魚和熊掌不可兼得。而相似全棧工程師,全棧設計師這類的職業,彷佛正在挑戰這一可能性。由於他們橫向發展的技能樹賦予了他們魚和熊掌兼得的能力。而國外對於全棧型人才,有這麼一個說法:Jack of all trades, but master of none. 翻譯成中文就是無所不能便一無所精。如何避免成爲廣而不精的全棧工程師,是廣大想要成爲全棧設計師朋友們須要深刻考慮的一個問題。前端
本質上來說,這個話題實際上是對互聯網行業「技多」是否等於「全棧」,「深度」和「廣度」哪一個更重要的一場深層次的討論。node
1. 什麼是全棧工程師?python
全棧工程師,也叫全端工程師,英文Full Stack developer,是指掌握多種技能,並能利用多種技能獨立完成產品的人。 git
Quora上有人提出了這個問題,其中一個高票回答是:程序員
全棧工程師是指,一個能處理數據庫、服務器、系統工程和客戶端的全部工做的工程師。根據項目的不一樣,客戶須要的多是移動棧、Web棧,或者原生應用程序棧。 github
其實,「全棧」指的是爲了完成一個項目,所須要的一系列技術的集合。「棧」是指一系列子模塊的集合。這些軟件子模塊或者組件組合在一塊兒便可實現既定功能,再也不須要其餘模塊。web
2. 爲何全棧工程師會存在爭議? redis
上面提到過,全棧工程師的爭議在於對技能深度和廣度的探討。特別是在OSCON會議上,一名Facebook的工程師說他們只聘請「全棧(Full stack)的程序員。」此話題一出,更引發了你們對成爲全棧工程師的優點與劣勢的熱烈討論。 mongodb
優點:全棧工程師的技術發展是橫向的,涉獵技術很廣,能快速的運用他所掌握的技術知識開發出產品原型。由於他們視野更寬闊,思惟更活躍,對技術和產品都十分敏感,對於任何技術或設計,他老是有話可說。能夠對團隊中的每個人都提供有益的幫助,能大大減小團隊人員溝通、技術對接的時間和技術成本。因此他們當中,不少人成爲了創業者或者在創業公司擔任技術合夥人。
劣勢:正是因爲橫向的技術發展,致使全棧工程師每每博而不精。大多數自稱爲「全棧」的工程師,都停留在一種淺嘗輒止的「略懂」的境界。至於具體如何實現,如何讓架構更適合後面階段的模塊化開發,那就真不知道了。
3. 即使如此,仍有人在問,如何成爲全棧工程師?
一個合格的全棧開發人員應具備在構建應用程序時涉及的全部方面的功能知識和能力。
1) 掌握多門編程語言
你須要精通多門編程語言,JAVA 、PHP、C#、Python、Ruby、Perl 等,由於你的大多數核心業務處理都須要用這些語言來寫。你既要掌握這些語言的語法,又須要很是熟悉如何基於這些語言進行項目的架構、設計、實現以及測試。
在哪學:Git / GitHub-你必須掌握如何使用Git來管理和分享你的代碼。
2) 運用開發框架和第三方庫
流行的開發語言,通常都伴有出色的開發框架,好比JAVA的Spring、MyBatis、Hibernate,Python的Django,PHP的 thinkphp、yin,nodeJs的 express 等等。
3) 前端技術
前端技術在今天的項目和產品研發過程當中變得越發重要。除了實現產品功能,用戶體驗也是檢驗產品是否成功的標準之一。而這都依賴於前端技術的實現,你至少須要掌握 HTML五、CSS三、JavaScript 等基本前端技術,同時進一步學習 JQuery、LESS、SASS、AngularJS或REACT等前端框架或第三方庫。
4) 數據庫與緩存
任何產品或項目都須要一個數據庫來存儲數據。做爲全棧工程師,你也須要至少掌握一到兩個數據庫,並知道怎樣與數據庫進行交互。目前流行的數據庫主要有MySQL、MongoDB、Redis、Oracle、SQLServer等。MongoDB做爲文檔型數據庫,在互聯網產品中正被愈來愈多地使用,對於規模稍大一些的項目,我仍推薦使用MySQL或商用的Oracle做爲後端數據庫。而Redis這樣的內存數據庫則能夠用於緩存,以提高系統的性能。
在哪學:MongoDB MERN教程系列
5) 基本設計能力
大部分關於全棧工程師的文章或討論中都不多涉及到設計能力的要求。但我卻認爲這項技能很是重要,基本的原型設計,UI設計,UX設計都是須要了解的。
在哪學:Mockplus博客
6) 除了良好的開發技術知識,自我要求也是全棧工程師必備的因素:
全局性思惟
良好的溝通能力
創造力
好奇心
時間管理能力
總結
根據格拉德威爾的一萬小時定律,但願熟練的掌握前端、後端、客戶端方向的知識內容,天天都花時間來鑽研也得花10年左右的時間。因此,全棧工程師決不是一晚上練成的,你須要打好技術基礎,強化核心技能,並持續學習才能應對更多的挑戰。