至於要掌握哪些技能,我以爲這個要跟從事的行業與技術方向有關,作互聯網的和作軟件的是不同的,即便是作互聯網的,後端也能夠分爲不少種技術流派。面試
8/2定律在哪都適用,全棧工程師就是掌握20%經常使用技能的人,但這20%的技能會有80%的概率被用到,剩下那80%不經常使用的,讓咱們Google吧。數據庫
有人說,全棧工程師在中國已經不少年了,他們叫站長。這個說話有點靠譜但又不那麼靠譜,我本身也作過站長,深知做爲一名站長鬚要掌握不少種技術。不靠譜的是,不少站長其實並無真正寫過多少代碼,而是熟練利用一些建站軟件來建站。後端
全棧工程師的價值瀏覽器
有人說了,你再牛逼,你懂五種技術,你能幹五我的的活嗎?全棧工程師並非說一我的能幹幾我的的活,而是要從多個方面來看這個問題。服務器
全局性思惟微信
現代項目的開發,不多說只用到一兩種技術的,特別是移動互聯網大潮下。隨便一個互聯網項目中用到的技術,就會須要用到後端開發、前端開發、界面設計、產品設計、數據庫、各類移動客戶端、三屏兼容、restFul API設計和OAuth等等,一些比較前衛的項目,可能會用到Single Page Application、Web Socket、HTML5/CSS3這些技術,還有像第三方開發像微信公衆號微博應用等等。框架
Web前端也遠遠不是從前的切個圖用個jQuery上個AJAX兼容各類瀏覽器那麼簡單了。現代的Web前端,你須要用到模塊化開發、多屏兼容、MVC,各類複雜的交互與優化,甚至你須要用到Node.js來協助前端的開發。ide
因此說一個現代化的項目,是一個很是複雜的構成,咱們須要一我的來掌控全局,他不須要是各類技術的資深專家,但他須要熟悉到各類技術。對於一個團隊特別是互聯網企業來講,有一個全局性思惟的人很是很是重要。
像若是是我經手的項目,我確定會注意到網頁優化,也會考慮到API來兼容各類客戶端,更會考慮到三屏兼容的問題。不會說項目中徹底使用AJAX而不顧SEO,也不會爲了功能性而忽略訪問速度,我會很好的把握這個平衡,由於我知道它們的權重與實現成本。
溝通成本
項目越大,溝通成本越高,作過項目管理的人都知道,項目中的人力是1+1<2的,人越多效率越低。由於溝通是須要成本的,不一樣技術的人各說各話,前端和後端是必定會掐架的。每一個人都會爲本身的利益而戰,絕不爲已的人是不存在的。< p="">
而全棧工程師的成本幾乎爲零,由於各類技術都懂,成竹在胸,一不當心本身就全作了。即便是在團隊協做中,與不一樣技術人員的溝通也會容易得多,你讓一個後端和一個前端去溝通,那徹底是雞同鴨講,更不用說設計師與後端了。但若是有一我的懂產品懂設計懂前端懂後端,那溝通的結果顯然不同,由於他們講的,彼此都能聽得懂。
創業公司
對於創業公司來講,全端工程師的價值是很是大的,創業公司不可能像大公司同樣,各方面的人才都有。因此咱們須要一個多面手,各類活都能一肩挑,獨擋多面的萬金油。對於創業公司,不可能說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基本都是我本身在作。
我熱愛寫代碼,熱愛重複發明輪子,熱愛新技術,我想這也是我成爲一個全棧工程師的重要緣由。
於我本身來講,我以爲全端工程師的樂趣要比通常工程師來得多,由於你知道一個產品的形態,你能夠去設計一個產品,你是從全局的視野來作事情,你獲得的成就感會更多一些。