全棧工程師到底有什么用
最近國內外都在流行一個詞叫 Full Stack,中文翻譯過來叫全棧工程師,也叫全端工程師。微博上很多專業人士都在討論全端工程師,有贊有毀的。我對全端工程師的定義是:掌握多種技能,并能利用多種技能獨立完成產品的人。打外比方,全棧工程師就是一個能獨立蓋一幢 10 層小洋樓的人,而普通工程師,則是可以和一群人蓋一幢摩天大樓的人。至于要掌握哪些技能,我覺得這個要跟從事的行業與技術方向有關,做互聯網的和做軟件的是不一樣的,即使是做互聯網的,后端也可以分為很多種技術流派。
8/2 定律在哪都適用,全棧工程師就是掌握 20% 常用技能的人,但這 20% 的技能會有 80% 的幾率被用到,剩下那 80% 不常用的,讓我們 Google 吧。
有人說,全棧工程師在中國已經很多年了,他們叫站長。這個說話有點靠譜但又不那么靠譜,我自己也做過站長,深知作為一名站長需要掌握很多種技術。不靠譜的是,很多站長其實并沒有真正寫過多少代碼,而是熟練利用一些建站軟件來建站。
全棧工程師的價值
有人說了,你再牛逼,你懂五種技術,你能干五個人的活嗎?全棧工程師并不是說一個人能干幾個人的活,而是要從多個方面來看這個問題。
全局性思維
現代項目的開發,很少說只用到一兩種技術的,特別是移動互聯網大潮下。隨便一個互聯網項目中用到的技術,就會需要用到后端開發、前端開發、界面設計、產品設計、數據庫、各種移動客戶端、三屏兼容、restFul API 設計和 OAuth 等等,一些比較前衛的項目,可能會用到 Single Page Application、Web Socket、HTML5/CSS3 這些技術,還有像第三方開發像微信公眾號微博應用等等。
Web 前端也遠遠不是從前的切個圖用個 jQuery 上個 AJAX 兼容各種瀏覽器那么簡單了。現代的 Web 前端,你需要用到模塊化開發、多屏兼容、MVC,各種復雜的交互與優化,甚至你需要用到 Node.js 來協助前端的開發。
所以說一個現代化的項目,是一個非常復雜的構成,我們需要一個人來掌控全局,他不需要是各種技術的資深專家,但他需要熟悉到各種技術。對于一個團隊特別是互聯網企業來說,有一個全局性思維的人非常非常重要。
像如果是我經手的項目,我肯定會注意到網頁優化,也會考慮到 API 來兼容各種客戶端,更會考慮到三屏兼容的問題。不會說項目中完全使用 AJAX 而不顧 SEO,也不會為了功能性而忽略訪問速度,我會很好的把握這個平衡,因為我知道它們的權重與實現成本。
溝通成本
項目越大,溝通成本越高,做過項目管理的人都知道,項目中的人力是1+1<2 的,人越多效率越低。因為溝通是需要成本的,不同技術的人各說各話,前端和后端是一定會掐架的。每個人都會為自己的利益而戰,毫不為已的人是不存在的。
而全棧工程師的成本幾乎為零,因為各種技術都懂,胸有成竹,一不小心自己就全做了。即使是在團隊協作中,與不同技術人員的溝通也會容易得多,你讓一個后端和一個前端去溝通,那完全是雞同鴨講,更不用說設計師與后端了。但如果有一個人懂產品懂設計懂前端懂后端,那溝通的結果顯然不一樣,因為他們講的,彼此都能聽得懂。
創業公司
對于創業公司來說,全端工程師的價值是非常大的,創業公司不可能像大公司一樣,各方面的人才都有。所以我們需要一個多面手,各種活都能一肩挑,獨擋多面的萬金油。對于創業公司,不可能說 DBA 前端后端客戶端各種人才全都備齊了,很多工作請人又不飽和,不請人又沒法做,外包又不放心質量,所以全端工程師是省錢的一妙招。雖然說全端工程師工資會比一般的工程師會高很多,但綜合下來,成本會低很多。
全棧工程師的困境
我講技術有兩個發展方向,一種是縱向一種是橫向的,橫向的是瑞士軍刀,縱向的是削鐵如泥的干將莫邪。這兩個方向都沒有對與錯,發展到一定程序都會相互溶合,就好比中國佛家禪修的南頓北漸,其實到了最后,漸悟與頓悟是一樣的,頓由漸中來。
如果一個公司不太懂全棧工程師的價值,那么全棧工程師的地位將會很尷尬,說得不好聽一點,全棧工程師就是什么都會,都么都不會。曾經有一次面試,對方問我很基礎的問題,我答不上來,我能做出產品,也知道什么是怎么一回事,我也不會犯那些錯誤,但我就是答不上概念,要考倒我非常容易。所以在應聘面試的時候,有些時候會吃虧,你可能會不如哪些在某一方面鉆得很深的人工資拿得高。
由于經常在各種技術穿梭,我會經常忘記代碼的語法和一些 API,所以我經常需要去查 API 甚至查語法,我覺得沒有 Google 我幾乎沒法工作。這在某些人的眼里,是技術不夠的表現。我記的只是一個 Key,一個如何找尋答案的索引,而不是全部,人腦不是電腦,我不可能要求我能記下所有的東西。
有一次面試官問我一個問題,我說我不知道,但我猜大概是如此這般,對方問我,你為什么這么猜,我說憑直覺,對方笑了笑沒說話。面試完后我一查,果然和我猜的差不多。沒錯,我就是憑直覺,但這種直覺和女人的直覺不一樣,這種直覺是技術上的直覺,是你過去技術經驗累積的一個反射。
我不是一個非常專業的 Web 前端,也不是一個非常專業的 Node.js 開發工程師,更不是一個非常專業的 iOS 開發工程師。用人單位會問我,你到底是專業做哪一個方面的,我為什么要給你這么高的工資?
有什么資格來談全棧工程師
我應該算是一個全棧型工程師了,行業經驗已經超過 10 年。獨立做過不少產品,也帶過不少項目,經過的產品包括桌面端、Web 產品、移動端產品,Web 端涵蓋前端與后端,移動端主要做 iOS 和混合開發。
熟悉 Web 前端,對 MVC/模塊化開發有實戰經驗,熟悉 CoffeeScript、Grunt、RequireJS、Handlebars 等等,自己寫過小型的 Javascript 框架,一個項目中的 JS 代碼超過一萬行。熟知網頁優化,知道如何讓網頁變得更加快速。也略懂 SEO,知道什么樣的 URL 和代碼會更討好 Spider。
熟悉 Node.js,有幾個項目都是基于 Node.js 的,目前發布有開源的 Blog 程序 Purelog,在 NPM 上有多個模塊發布。熟悉混合開發,過去我曾經有超過一年的時間是在研究 Hybrid 技術,多個 App 基于混合開發技術,也有開發類似于 PhoneGap 的解決方案。對 HTML5 在手機上的表現頗為熟悉,挖過很多的技術坑,如白屏問題,Sqlite 問題,滾動條問題,硬件動畫加速、點擊延時問題等等。
會做設計,熟悉 Photoshop,所有的產品不管是 Logo 還是界面全都是自己做的設計,雖然在資深的設計師眼里不值一提,但在工程師隊伍中算是比較另類了。
熟悉 Objective-C,有兩年以上的 iOS 開發經驗,在 App Store 上有約十款 App。熟悉服務器的一般性操作,自己有 VPS 并運行多個網站,雖然配置服務器經常要去 Google。
早年曾經做過一年的 Delphi,也曾做過幾年的 ASP.net,雖然這些技術我目前已經放棄,完全轉向*nix 平臺,但累積下的經驗是在的。多年的項目管理經驗,曾在三個公司擔任過項目經理,累計項目管理經驗超過 4 年。在多個科技門戶發表過技術和評論文章。
為什么我會成為全棧工程師
我相信很多全棧型工程師會和我一樣,是因為要創業才成為全棧型工程師的。我有一顆創業和做產品的心,而且我又是一個不愿意麻煩別人的人,有些人擅長整合資源,空手套白狼,但我顯然不是這種人,所以我只好自己做了。
在經歷過兩次孤獨的創業之后,我發現我并不是一個適合獨立創業的人,所以,我成為了一個全端工程師。我最初是做 ASP,后來自己創業寫客戶端用 Delphi,然后寫了三年的 ASP.Net,2010 年的時候因為公司需要開始做 iOS 開發。Web 前端是一直自己在做,項目中的的 Javascript 基本都是我自己在做。
我熱愛寫代碼,熱愛重復發明輪子,熱愛新技術,我想這也是我成為一個全棧工程師的重要原因。
于我自己來說,我覺得全端工程師的樂趣要比一般工程師來得多,因為你知道一個產品的形態,你可以去設計一個產品,你是從全局的視野來做事情,你得到的成就感會更多一些。
來自: 涂雅
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!