什么是全堆疊工程師

全堆疊工程師一詞,最早出現于Facebook工程師Calos Bueno的一篇文章 - Full Stack
,他把全堆疊工程師定義為對性能影響有著深入理解的技術通才,自那以后全堆疊這個詞便流行起來,我看到過的就有全堆疊工程師,全堆疊設計師,全堆疊運維,全堆疊市場營銷人員等等,而在很多針對互聯網人才的招聘網站上,全堆疊工程師更是一躍成為熱門招聘職位,其薪資水平也比一般的開發工程師職位要高出一截,那么,什么是全堆疊工程師,我們又應該如何定義一名全堆疊工程師呢?
百度百科對全堆疊工程師的定義是這樣的:“掌握多種技能,并能利用多種技能獨立完成產品的人”,我覺得這個定義還不夠全面,我認為全堆疊工程師應該同時是一位資深開發工程師、架構師以及具有敏捷開發技能的程式員,
全堆疊工程師對于軟體開發的認識往往已經進化了,他們把特定的技術拋到了身后,明白技術的更新始終比計算機理論要快的道理,因此,他們注重強化自身的核心技能,關注并樂于實踐其他技術,全堆疊工程師往往是某一方面的專家,同時通曉并善于在正確的場合運用其他語言、工具和技術,
全堆疊工程師的價值
隨著時間的推移,全堆疊工程師的作用和價值在越來越多的產品或專案中得到了印證,那么,我們來看看全堆疊工程師對于個人或公司意味著什么,
個人價值及自由度的極大提升—— 我曾看過一些介紹全堆疊工程師的文章,文中大多強調了全堆疊工程師對于公司與團隊的價值,而我想說的是,沒有一個優秀的全堆疊工程師是因為會對公司產生多大的利益,而努力學習各種技術的,
如果你在學習C/C++的程序中遇到了問題,可以來加入小編的企鵝圈問小編哦~小編很熱情的(●’?’●)
更有每晚八點直播帶大家敲代碼 不是枯燥的語法,而是學校不會給大家講的專案實戰
貪吃蛇、QQ聊天系統、推箱子、雷霆戰機、黑客遠程控制、視頻播放器等等

我所認識的他們,都是那些有著一顆匠心,不斷追求更高技能,并執著于做出更優秀產品的人,而當你成為一名真正的全堆疊工程師后,會感受到前所未有的個人價值與技術自由度的提升,試想當一個很好的創意出現時,你可以一個人或主導一個團隊去實作并不斷完善它,這是一件多么讓人興奮的事啊!
全域思維與技術前瞻性—— 由于具備了各個開發環節與技術領域的知識,全堆疊工程師往往具有更好的大局觀和技術前瞻性,能夠在專案初期就選擇正確的技術,并很好地把控一個專案的整體方向,現代專案往往非常復雜,而全堆疊工程師往往能帶來技術和質量上的保障,從而成為一個專案成功的關鍵人物,
降低溝通成本—— 我經常聽到有設計師抱怨前端工程師無法百分之百地還原他們的設計,而前端工程師又在抱怨后端工程師從介面回傳的資料更本無法直接使用,后端工程師也在抱怨產品經理所提的需求根本無法完成,隨著團隊人數的上升,由于各自技能堆疊的不同,溝通成本一定會隨之上升,全堆疊工程師除了能夠獨立完成前后端的開發(甚至包括設計)外,如果能夠在專案初期提前介入,便能很好地規避技術風險,過濾不合理的需求,從而顯著降低因不同技術差異導致的溝通問題,顯著降低專案風險,
初創公司—— 我們已經來到了一個萬眾創業,全民創新的時代,那些初創公司也如雨后春筍般不斷涌現,初創公司往往都有了一個不錯的創意,但經常會遇到“就缺一個程式員”的尷尬,我想說的是,他們其實并不是缺程式員,而是缺一位全堆疊工程師,初創公司往往資金有限,而一名優秀的全堆疊工程師能夠幫助初創公司用最低的代價與最短的時間推出自己的產品,這是初創公司能夠存活下來,拿到更多投資,甚至成為“獨角獸”一員的最關鍵一步,

關鍵開發技能(硬實力):
Git / GitHub—— 你必須掌握如何使用Git來管理和分享你的代碼,把Git作為關鍵技能的第一條,是因為它不僅僅是一個代碼管理工具,更是一種推薦的作業方式,
它使你能在任何地方進行開發,高效地管理任何大小的專案,通過Git你還能與其他團隊成員進行分布式協作,大大提升作業效率,通過GitHub,還能將你與世界所有的開發者聯系在一起,
至少一門編程語言—— 你需要精通至少一門編程語言,JAVA 、PHP、C#、Python、Ruby、Perl 等,因為你的大多數核心業務處理都需要用這門語言來寫,你既要掌握這門語言的語法,又需要非常熟悉如何基于這門語言進行專案的架構、設計、實作以及測驗,如果你選擇的是JAVA,那么你就需要掌握面向物件的設計和開發,設計模式的應用,基于J2EE各個組件的開發 等等,
運用開發框架和第三方庫—— 流行的開發語言,一般都伴有出色的開發框架,比如JAVA的Spring、MyBatis、Hibernate,Python的Django,PHP的 thinkphp、yin,nodeJs的 express 等等,

這些開發框架往往都遵循軟體開發領域的一些最佳實踐,并由非常優秀的開發人員創建,熟練使用這些開發框架或第三方庫能夠避免重復發明輪子,使你的作業事半功倍,更重要的是這些優秀框架或第三方庫的一般都得到持續的維護,是對你的產品或專案在質量與安全方便的最有效的保障,
前端技術—— 之所以將前端技術獨立出來,作為一項關鍵技術,是因為它在今天的專案和產品的研發程序中正變得越來越重要,一個產品除了實作所需的功能之外,是否好用(用戶體驗)也正在成為評判一個產品是否成功的重要標準,而這都依賴于前端技術的實作,你至少需要掌握 HTML5、CSS3、Java 等基本前端技術,同時進一步學習 JQuery、LESS、SASS、AngularJS或REACT等前端框架或第三方庫,
資料庫與快取—— 任何產品或專案都需要一個資料庫來存盤資料,作為全堆疊工程師,你也需要至少掌握一到兩個資料庫,并知道怎樣與資料庫進行互動,目前流行的資料庫主要有MySQL、MongoDB、Redis、Oracle、SQLServer等,MongoDB作為檔案型資料庫,在互聯網產品中正被越來越多地使用,對于規模稍大一些的專案,我仍推薦使用MySQL或商用的Oracle作為后端資料庫,而Redis這樣的記憶體資料庫則可以用于快取,以提升系統的性能,
基本設計能力—— 大部分關于全堆疊工程師的文章或討論中,都不會將設計能力做為全堆疊工程師的關鍵技能,但我卻認為這項技能非常重要,我曾被邀請評估一些軟體工程師自己開發的產品,這些產品都有不錯的創意,功能實作也很到位,但一看就不是一個好的產品,用戶根本沒有使用欲望,原因是這些產品的設計太差了,而往往那些開發者完全沒有意識到問題的存在,比如色彩的不一致,排版的凌亂,不恰當的圖示 等等,我所建議的基本設計能力,并不要求你像專業設計師那樣能夠P出神圖、制作奇妙的視覺效果等,但你需要掌握最基本的UI設計原則,如 色彩的搭配,基本的排版,并具備良好的審美能力,和一些基本UI設計能力,這樣你做的產品就不會太差了,
在掌握了這些核心技能之后,你可以根據自己的興趣與發展方向,學習其他方面的技術,比如,如果你對資料處理感興趣,那么你可以學習大資料方面的技術,如果你對移動互聯網更感興趣,那么你可以學習Swift,開發ios應用,知識總是相通的,在有了良好的技識訓礎后,學習其他知識將會變得非常容易,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/206064.html
標籤:其他
