Asaf Yigal是Logz.io的聯合創始人與產品副總裁。在Logz.io以前,Asaf與他人聯合創立了Currensee,這是一個社會化交易平臺,後來在2013年被OANDA收購。在 Currensee以前,Asaf在Akorri負責管理和開發一款端到端的性能監控平臺,在Onaro開發過一款存儲資源管理平臺。後來,Akorri 與Onaro都被NetApp收購了。在Onaro以前,Asaf在以色列海軍帶領一個研究團隊,從事人工智能系統的開發與軍事化應用相關工做。近 日,Asaf撰寫了一篇文章,談到了他對於全棧工程師的認識與理解。前端
你經常據說「全棧工程師」這個叫法吧,不過這到底表示什麼意思呢,你以爲本身應該成爲一名全棧工程師麼?下面咱們就來探討一下這個話題。在Web與軟件開發的世界中有3個基本的關注點:前端、後端與全棧。下面就來解釋一下他們的含義。程序員
何爲全棧工程師?數據庫
前端工程師:在打開一個網站時,屏幕上的一切都屬於前端。前端工程師負責建立用戶界面背後的代碼。這些工程師不只要熟悉HTML、 JavaScript與CSS,還要掌握不少框架。這些框架有Foundation、Angular JS、Ember JS、Backbone及Bootstrap等等。前端工程師要與設計師和其餘專家協同工做,從而將網站從模型轉換爲可以使用的模式。 後端工程師:在你天天所訪問的網站背後有服務器網絡、數據庫以及各類應用,他們相互協做將你所請求的網頁與數據傳遞給你。後端工程師負責構建這些組件。他 們要擅長各類編程語言,如Python、.Net、Ruby、Java及PHP等等,從而經過這些語言來編寫程序。他們還須要使用各類數據庫程序如 MySQL、SQL Server及Oracle等來操縱信息並將其傳遞給最終用戶。後端工程師須要與組織中的各類經理及其餘成員通力配合來完成工做。 全棧工程師:全棧工程師既要了解後端開發,也要了解前端開發。他們是「全方位」的工程師,熟悉服務端的同時又懂客戶端用戶體驗。全棧工程師理解Web開發 進程的每個方面,同時又會就總體策略與最佳實踐對相關干係人提出建議與指導。編程
角色演變後端
在早期的桌面計算時代,咱們經常會看到一我的就完成了整個應用的開發工做。隨着程序變得愈來愈複雜,以及愈來愈多的技術涌現了出來,一我的很難再完 全掌控應用開發的各個方面。在21世紀初期,一些擁有專業化技能的專家開始出現。因爲複雜性的持續攀升,當Web 2.0站點開始出現時,不少程序員又回到了更簡單的方式上來。相比於構建複雜的數據庫和企業計算網絡,開發者開始部署穩定的LAMP棧(Linux、 Apache、MySQL與PHP),並建立出了靈活的面嚮對象語言,如Django與Ruby on Rails。在這種環境下,全棧工程師的價值變得愈來愈大,由於他們熟悉大多數現代框架與語言。瀏覽器
運維複雜性的迴歸服務器
不過,因爲移動計算與iOS和Android平臺的興起,咱們又回到了複雜性的新時代:低成本的雲服務器如Amazon Web Services和微軟的Azure、MongoDB等數據庫、Node.js與Angular.js等前端技術、Docker等容器技術。這些平臺、服 務與框架都擁有自身的特性。所以,一我的幾乎沒法成爲可以掌握全部技術的全棧工程師。網絡
通才與專才前端工程師
在當前的環境下,成爲全棧工程師的好處在於沒多少人擁有足夠的知識、經驗與溝通能力來總體把控使用了各類平臺與框架的項目,如HTML五、機器學習 及Scala等。所以,高水準的全棧工程師老是供不該求的。不過,壞處則在於對於全棧工程師來講,他須要可以熟練掌握這些組件,但這是很是困難的事情,況 且將來還會有新的技術涌現出來。你可能很聰明,但這些組件自己倒是很是複雜的,每幾個月都會出現新的語言和平臺。要想時刻保持技術上的領先是一件極其困難 的事情。出於這個緣由,專才擁有本身獨特的優點。組織傾向於僱傭專門的角色,所以相比於其餘開發者來講,專才在深層次的知識以及某個狹窄領域的經驗上會更 勝一籌。框架
全棧工程師的薪資
不管選擇在前端仍是後端進行深刻學習,抑或是將本身定位成一個全棧的通才,從工做前景上來看都是好的。根據美國勞工統計局發佈的統計信息來看,軟件 工程師是將來10年最具發展潛力的職業之一。2014年,大約有718,000名軟件工程師;從全國範圍來看,其平均薪資大約爲$95,510。這個數字 將來還會繼續攀升。那麼,到底什麼纔是最好的工做呢?這取決於你的背景、經驗與目標。前端工程師須要掌握以下技能:
HTML與HTML5
CSS、CSS3與SASS
PHP
JavaScript
jQuery、Angular.js、React,js與Node.js
Websockets與Ajax requests
瀏覽器開發工具與調試器
Python
Git
後端開發者應該精於服務端編程、語言與框架,如:
C與C++
Python
JavaScript
Ruby on Rails
PHP
Perl
Node.js與Express
MongoDB
Postgres
MySQL與NoSQL
Git
Web APIs
Go
若是想要向着全棧工程師的方向邁進,你應該掌握不少知識與技能,而且熟悉上面提到的各類組件。此外,還要提高本身的我的溝通技能,這樣才能管理並與 前端與後端開發者實現較好的協做。好消息是將來對於每一類Web開發者來講都是光明的,不管是前端、後端,仍是全棧。要堅持學習一切有價值的東西;掌握新 的框架、語言與平臺;而且與開發者同事及最終用戶保持高效的溝通。在這種狀況下,不管世界發生什麼變化,你都會始終立於不敗之地。