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