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

不同時期的硬件工程師,最怕發(fā)生的事 #電子工程師 #硬件工程師 #內(nèi)容過于真實 #YXC晶振 #揚(yáng)興科技

當(dāng)你的工程師朋友失聯(lián)時,別氣,ta真的是在忙工作 #搞笑 #電子愛好者 #硬件工程師 #晶振 #揚(yáng)興科技




嵌入式軟件工程師和硬件工程師的區(qū)別?


“班長!說好畢業(yè)后當(dāng)硬件工程師,你怎么..." #搞笑 #電子行業(yè) #電子工程師 #晶振 #揚(yáng)興科技


一位硬件工程師的歷練之路:從入門學(xué)習(xí)理論到... #搞笑 #硬件工程師 #電子工程師 #揚(yáng)興科技

評論