我敢打賭,沒有人可以憑借一己之力掌握下圖這些領域不斷更新的先進知識。單單是緊跟每個類別中的進化和新的編程接口,就幾乎是一個全職的工作量。
在Web 2.0時代,全棧工程師是可能的,但是隨著新一代創業公司的興起,推動了各種技術的邊際突破。從機器智能到數據分析、再到可穿戴/移動設備,讓一個程序員個體實現跨全棧編程實際上變得不現實了。
在還沒有移動和Web的上世紀七十年代后期,通常是一個人從頭到尾寫全部的程序,在程序員和硬件之間并沒有很多其他的軟件層。8位處理器和內存非常有限的機器,迫使程序員使用規范的匯編語言。
隨著上世紀80年代末和90年代初客戶機/服務器處理(client/server computing)的演進,以及90年代末20世紀初互聯網浪潮的來臨,編程應用很快成為一項團隊行為。新技術的每一面都是如此復雜,以至于需要專門的專家,即一個人精通好幾層(如前端/數據庫/應用服務器等)。維護一個商業網站成為一門專業,包括操作網絡設備(e.g.路由器和負載平衡器等),調整Java虛擬機,以及使用各種數據庫索引機制。
到了21世紀中期,創造幾乎任何東西,從簡單的網站到下一代SaaS服務,都十分地昂貴。上漲的費用直接與從各個層相關的許多個人之間的開銷通信(并且經常錯過通信),以及在一層級聯到其它層和成部署參數的改變有關。正如Marc Andreessen(網景創始人,現風投)在Twitter上刷屏討論燒錢問題時說:「大量員工將使通信效率呈指數式下降,導致所有一切速度放慢。」(More people multiplies communication overhead exponentially, slows everything down.)
另一方面,創造新一代Web 2.0網站的技術越來越精簡和簡化。程序員從使用復雜的企業級Java堆棧和數據庫(e.g.Oracle),切換到更直接的LAMP組合(Linux操作系統,Apache,MySQL和PHP/ Python/Perl)。新的語言和框架(e.g.Diango和Ruby on Rails)使得網站和數據庫之間的層自動化。前端框架(e.g.jQuery)幫助簡化了不同瀏覽器之間錯綜復雜的關系。云服務(e.g.Amazon Web Services)簡化了部署,提供了鑰匙網絡。
到21世紀后期,對許多程序員來說,提供一個完整的消費者或SaaS的網站成為可能,包括一個動態的Web客戶端,服務器端的業務邏輯,一個可伸縮的數據庫,部署和運營支持。這種新品種的全棧工程師可以和一支團隊一樣完成整個任務的環。當這個項目做大了,全棧工程師可以實現一個人在應用的所有層加一個功能,這樣就減少了和不同層的人溝通的通信成本,從而加速功能交付。
如果你建的網站是上面這樣的全棧模型,找到全棧工程師可以有效地解決問題。但是現如今,我認為,這并不是夠格的全棧工程師。第一張圖才是更全面的全棧。
我們正處在向更多復雜科技迅速轉型的中期,隨著時間的流逝,在每一層都需要專家。開發優秀的iOS和Android應用需要理解這些平臺錯綜復雜的專家。在實際操作中,轉向新的數據庫,比如MongoDB,需要不斷的關注和調整。在云服務(e.g.Amazon)上運行一個應用需要了解它的各種服務的細節,以及如何實現跨區域故障轉移的專業知識。即便是古老的Web前端,現在都演變成CSS4、JSON和JavaScript的MVC框架,比如Angular.js和Backbone.js。
在這個全新的世界中,關鍵是至少有這樣一個人:對每一個部件都至少有功能性的了解,同時可以把不同的層連接起來,和不同領域的專家一起合作,從而最終實現某個功能。在這種意義上,這些連接層、建橋的軟件工程師,即精通某一層或好幾層的專家,就是比全棧工程師少一點,比全棧綜合者(Full Stack Integrator)多一點兒的人。
總之,「全棧工程師」,可以安息了。在無限廣闊的未來,我們歡迎在某一特定領域有深入技術見解的「全棧綜合者」!
100offer的用戶是怎樣看「全棧」的?
用戶背景
周瑾(化名),7年以上開發經驗,國內一本畢業,BAT資深研發工程師,具備多個大型平臺前端架構設計開發經驗,有iOS、MAC開發經驗,有移動Web開發經驗,精通NodeJS,熟悉后端開發的流程和技術面,具備全棧開發能力。團隊管理經驗豐富。在5月第3期拍賣中收獲37個面試機會,現已入職北京某創業公司。
100offer:普通程序員如何向全棧發展?
周瑾:我認為工程師可以分為兩種:一種喜歡鉆細一個東西,然后以此為生;還有一種喜歡不斷折騰,需要去滿足自己了解未知的欲望。拿我自己來說,我屬于后者。我有創業經歷,也做過大公司的螺絲釘。螺絲釘其實滿足不了我對技術的興趣,所以在工作過程中我在不斷尋找自己的技術邊界,并試圖打破它。就這樣,技術開始變得一點點全面起來。
全棧絕對是自我驅動的一個過程,我其實是在不知不覺中會了這么點東西,變成了所謂的「全棧」似的。業界的高手多得很啊^^
100offer:全棧工程師適合創業公司,還是大公司?
周瑾:創業公司比較喜歡招全棧,這和創業公司的需求有關系,因為創業初期的公司可能需要一個人做幾個人的活。另外,可能老板是技術出身,了解部門之間銜接所需要付出的巨大溝通成本,所以傾向于更少的溝通單位。
其實大公司也不錯,大公司有更人性化的工作時間,且穩定,一般情況下是不會讓員工的工作飽和到滿(當然有些個別組很過分)。在大公司的時候,我完成了自己的工作,喜歡折騰什么就折騰什么,然后你覺得自己可以了就可以申請轉崗成其他職位(當然這里也要自己承擔角色轉換帶來KPI問題,畢竟換了領域就是一個新兵了嘛)。
總之,全棧不應該是對所有技術淺嘗輒止,而是一專多能或多專多能。無論是自己去創業,還是放到固定崗位上都能大放異彩。
100offer:全棧工程師有什么優勢呢?
周瑾:我其實不怎么覺得全棧有優勢,我只能說能看到這種人身上的一點點共性。視野,思維和學習能力確實有點優勢,但我認為共性是性格上的。我接觸到的在互聯網行業跨領域性的人,其實都比較單純,或者說編程對于這類人來說不是一種謀生途徑而是一種個人興趣。
我覺得全棧更多的是自己對純技術的渴求,深入任何一個技術領域都是很細致的一件事,全棧與否更多的是一種經驗上量變到質變的過程。
-
工程師
+關注
關注
59文章
1569瀏覽量
68509
發布評論請先 登錄
相關推薦
評論