網頁前端和後台人員都是如何看待全棧工程師的?

引用百度: 全棧工程師,也叫全端工程師,英文Full Stack developer。是指掌握多種技能,並能利用多種技能獨立完成產品的人。

想問下現在從事網頁前端和網頁後台人員的各位對全棧工程師的一些看法,會不會影響到自己的工作或者更好的溝通便於整個網站的開發之類的。


遇到一個真正的全棧工程師當然是好的,可惜這個世界上大部分的全棧工程師,既不能當一個牛逼的前端用,也不能當一個牛逼的後端用。


我只是想安靜地做前端的,但是覺得這後端水平真辣雞,還是我來吧。

我只是想安靜地做前端的,但是覺得這UI水平真辣雞,還是我來吧。

全棧的開發效率不知道比他們高到哪裡去了。


看法就是:他/她一定是在創業公司工作。


好多優秀的開發,都卡在了切圖上。。。


我自己後端前端資料庫運維都接觸過,感覺也沒必要為了一個概念給自己貼標籤。

以前是因為小公司沒人才這樣乾的。最艱苦的時候公司除了倆老闆,就我和美工同學在幹活了,實在沒人了。後來招倆新人進來,剛畢業,就差手把手的教了!你認真的帶,人家還嫌你水平低,後來全跑了。

其實不少全棧是逼出來的,後來發現這樣幹活還是蠻有效率,然後就繼續給自己貼全棧的標籤了。

不幹出活來,公司開不下去,工資開不出來,不想全棧也得去全棧了。


全棧工程師是很美好的願景,不過,任重道遠。

目前來看,JS目前具備這個潛質,首先它解決了前後端語言不統一的問題,它使用一種語言解決各個場景下的問題。

(1)JS本來瀏覽器的腳本語言,實現前端

(2)JS有一些技術方案,甚至可以生成Android和iOS的APP

(3)Node.js可以作為Web的Server

(4)Node.js可以實現後端Server

JS的確做到了這些東西,但是,能夠做到同時精通這4個方面,真的太難了。

世界這麼大,這樣的高手肯定是有的,但是,應該不會很多。

讓專業的人做專業的事,分工產生效能。如果只求實現一個功能(或者小的應用),其實並不會很難,但是,想做好一個功能,讓它在各個苛刻的場景下(大規模訪問、安全、良好體驗),也從容運作,就不是一件容易的事情。每一個方面,背後都對應著廣闊的知識體系,這裡沉澱下來的技術積累,並不是能夠短期內就可以輕鬆掌握的。

全棧也許是未來技術的趨勢之一,用一種語言/技術就能解決全部的問題,這對於程序員本身來說是一種解放,不過,任重道遠哈。


白痴。

大概這個意思~


全棧工程師需要配套的組織結構支持,如果要求全棧工程師既能設計貼合業務需求並具有一定擴展性的數據結構,又能把css寫得非常溜,還能從用戶視角審視設計是否合理,那麼你其實是在找CTO。

全棧工程師的主要優勢是減少溝通成本。在一個合適的組織結構中,全棧工程師的任務是理解並完成業務需求,組中同時得安排技術專家來幫助設計並控制css、模型等全局質量。

另外,不要把全棧工程師窄化為NodeJS+前端技能的工程師,實際上,後端技能仍然會以Java等傳統後端技術為主。


我入行的時候主要做後端開發,PHP加資料庫,現在我的工作即有前端又有後端的內容,粗淺地談一談我的看法。

我覺得所有工作在web棧上的程序員都應該成為全端工程師,能在整個技術棧上思考問題很重要,有時候甚至很關鍵。

舉一個我經歷過的例子,曾經在做一個高流量網站的某個功能的時候,發現很難在公司硬體預算之內用PHP和資料庫本身得到長期可伸縮性方案,這是功能需要實時數據的多維度篩選,並且要把前端的響應控制在3秒之內,一般網站的相應應該在1秒以下,但就是這個功能的可用性因為速度的問題,遲遲得不到提高(單純後台的解決方案我們當時要用到20秒以上,基本不可用)。最後我們從一些其他類似網站得到了啟發,在前端用ajax分布分片載入數據,然後分發給跑在瀏覽器里的多個web worker,讓它們去作複雜的數據計算,然後把結果逐步地傳給主進程render給用戶,這個過程沒有blocking,單片數據可以控制到200ms以下,用戶基本感覺不到需要等待。這是一個核心基於前端技術的方案,完勝純後端方案。

另一個例子是從前端到後端的例子,我們有一個相對複雜的mobile應用,有兩組大概30個template需要render,相當的數據會用這30個template來render,雖然模板都是js預編譯的,也就是說沒有實時parse的問題,但我們還是不想在mobile里執行太多string concatenation(編譯後的js模板),最終我們把數據以及模板的render整合移到了後端,我們的REST API會直接產生可以直接innerHTML的view,前端只需要傳合適的參數告訴後端如何render就可以了(完全的後端的view),這樣省去了我們原來不得不去做的前端優化,這種情況下優化後端要簡潔多了。

所以成為全端工程師不是多懂一種語言,多熟悉某些技術這麼簡單,在一端思考問題和在整棧思考問題的落腳點的不同,會深刻地影響你的架構和實現。


真實世界的學習不是遊戲裡面加技能點,你可以都學,也可以都學的很好,要看的是你的個人能力和努力程度。

當你都達到一定程度的時候,整個人的視角都會發生很大變化。

至於別人的看法,肯定會有噴的不奇怪,堅持你認為對的事,並持續努力才是應該做的。


重要的不是在實際項目中同時寫前後端代碼,而是知曉整個前後端的相關技術棧。寫前端時能配合好後端,寫後端代碼時能配合好前端,作為leader時能配合好產品經理。思考問題,找解決方案時考慮全面有大局觀。

我理解做web開發或app開發,不一定要採用全棧開發的模式,前後分離沒問題,但團隊成員有全棧的能力(前後端水平有側重),開發效率是很可觀的。

再者,有些問題從全棧的角度思考,而不是局限在前端或後端,採取整體最優的解決方案,會更好。全棧,要有全棧的風度。


和全棧一起工作是最愉快的啦。什麼都可以搞定,效率提升剛剛的。


畢業前曾是全棧工程師,後來找工作hr覺得我簡歷看起來好像啥都會沒有重點,都給拒了。慢慢的就退化成了後端工程師。最近工作後端開發和運維都承擔,貌似各hr們又看我簡歷不靠譜了!


坐多了容易長痔瘡。全站起來吧。


全殘工程師是什麼?


本人什麼都做過,最早apache php,後來nginx,lua。資料庫mysql,緩存memcache,redis。分散式文件系統moosefs。郵件系統qmail。搭過草根集群,pc機跟atom裸主板。擁有一個小機房。處理過黑客攻擊,也被黑客入侵過(discuz論壇漏洞)。前端寫js,css,包括切圖,摳圖。甚至flash動畫也做過一點。用過jquery,自己做了個模板系統,主要是php,後來改成大部分lua,小部分php(以前的項目)。移動開發還早就熱了,一直沒投入進去,覺得以前移動開發太浮躁了。現在開始學習移動開發,學習nodejs,angular,ionic。想做個spa的混合應用,後端用nodejs搭配lua。

說了這麼多經歷來說說全棧的好處,做任何事情,都會有個全局的思維。比如,頁面引入一個圖片,我會思考會帶來多大流量負擔,載入時間會長多少。最開始的時候做圖標都是一個圖標一張圖,後來知道為了減少http請求次數,把幾個圖標合併到一張圖,多個css,js利用lua動態合併並緩存到memcache。

後端代碼時,我開始不信任自己的代碼,因為可能有漏洞會被注入別人代碼,並且隔離第三方代碼,如論壇。之前發生過因為論壇漏洞入侵事件。我要思考如果論壇還是有漏洞,再次被攻擊,影響面有多少,會不會論壇被黑之後,本身業務網站會不會被黑。代碼被注入之後資料庫是否安全。我為了這個問題,每個php頁面都要求md5碼,不符合就不執行,把php代碼加密。這樣即便有漏洞,黑客注入新文件沒法執行,老文件又加密。對於lua,由於是全部載入在內存中,在nginx啟動的時候載入,我把資料庫操作改成nginx的內部location訪問,在啟動nginx時,輸入密碼,然後解壓資料庫配置,啟動好之後刪除。這樣整個伺服器只有加密的資料庫密碼,即便系統被入侵 也要盡量保證資料庫安全。當然還有防cc攻擊,這些都要在後端架構跟程序中處理,如果暴露了一個費時的操作,一台普通台式機就可以輕鬆cc了。把頁面緩存,數據跟頁面分開,就再也沒遇到被cc的情況了。那些會cc攻擊的黑客,也只是學個皮毛,簡單處理就能屏蔽大部分所謂黑客了。當然對於高手來說還是沒用的,他會cc ajax請求,但高手還會來攻擊我這種小網站的很少。

如果有個全局的思維,無論前端還是後端,為整個系統多考慮一點,系統會更健康。

站在個人角度,了解全棧知識,肯定更早一步當主管。要是掌握全棧,更早一步當構架師。技術變的很快,10年前用的技術,除了mysql其他都換了,但是學習能力要以不變應萬變


全棧(full-stack)中的「棧」是指software stack或者solution stack。一系列的軟體子模塊或者組件組合在一起,不再需要其它第三方的模塊依賴就可以完成一個任務,這些子模塊的集合就叫一個棧。

全棧:是很多技術人員一直的憧憬,不僅僅限於web,而是一個從計算機科學研究的角度。

這裡與計算機數據結構中的「堆棧」不是同一個東西,後者是指先入後出的數據結構。

舉個例子,要開發一個web頁面,工程師需要使用操作系統、伺服器、資料庫以及幾種編程語言,這些技術組合在一起叫做web stack。MEAN(Mongodb,Express.js,AngularJS,Node.js)就是一個web stack。擅長web stack的工程師就可以稱為web stack engineer。依次類推,擅長所有的stack的工程師就是全棧工程師。

之前粗略寫過Oh,全棧工程師 , 全棧之路是漫長而又艱辛,不是僅僅說幾個時髦的名稱就能成為的。全棧不應該用來炫耀和裝B用的,我覺得更是奮鬥的標識。


切,我們以前站長界,那是連設計都要做的

<( ̄︶ ̄)>


雖然都能幹,但本身也是有傾向性的,盡量不寫一陀陀的js,盡量不寫繁雜的ui界面,盡量不寫重複重複冗餘的後台邏輯。。。然後就發現其實都不想寫啊。。。

現在工作細分也有好處,對程序員的要求進一步降低,這是軟體開發管理上的進步,但我認為這對程序員本身的發展是不利的。

寫過quickbasic,eVC,wp app,做過asp,寫過activex,jQuery或其他ajax框架出來之前就自己寫的一個論壇上實現無刷新頁面,然後還有silverlight的ui。從vb開始到winform再有wpf寫桌面應用,做過不分層代碼混一起的所謂項目,也寫過分層嚴嚴實實,或者純插件模式的項目。直接存儲過程,還是代碼里寫業務邏輯,交互是通過socket還是http還是直接都讀寫資料庫,或者用wcf還是mq?

我其實還是認為,每個開發都應該是一個全端工程師,然後再自己選擇更適合的一端。對自己理解整個項目有好處,對前後端溝通有好處,對自己今後可能的轉型也有好處。特別是走技術路線,再往高處走,更需要一個full picture。

從前到後,做過那些,近年來我就不斷根據業務需求試圖封裝整合他們,實現桌面/bs/富客戶端 加後台的完整開發框架,便於自己開發,也提高團隊開發效率。自認為如果我一直專註於前或者後某一端的話,那也就無法做出完整的這樣一套方案來。當然壞處就是,從ui到後台還有資料庫,各種項目的各種bug都會找我改(這是最大的缺點)。


本身作為一個優秀的web開發工程師 尤其是php這樣的一個的出色的web開發語言,甚至也許是世界上最好的語言?(一個梗,別噴)對於前端jquery/js/bootstrap,以及後端的開發都應該能夠熟悉並且勝任。

無論是BAT還是說創業公司,我覺得一個人能夠勝任多個技能並不是壞事。首先,這樣緩解了公司的人力成本,其次就是無需再要求前後端不停的溝通,前後端的交接以產生的時間、效率的問題。

對於個人來說,技術永遠不能是停留在一個方向,而是不停學習拓展,學習了PHP,並且掌握了你可以了解js/jquery,可以熟悉bootstrap,可以了解一下node.js,這樣不是對自己一些升華?有啥不好呢?


推薦閱讀:

如何成為一個優秀的 PHP 工程師?
待進階的phper 想要通讀一個開源項目源碼,應該研究哪個較好?
對於PHP程序初學者來說,有沒有比較好的開源項目適合學習和深入的呢?
相對於別的php框架來說thinkphp有什麼缺點嗎?
面試php工程師出什麼考題好?

TAG:網頁設計 | 前端開發 | PHP | 網站開發 | 網站後台 |