假如你想成為全棧工程師…

foruok發表於2015-12-08

讓我來發揮一下剪報君的特長,下面是百度百科對[全棧工程師]的說明:

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

上面的定義,基本上已經比較直白了,我們再舉兩個例子就更明白了。

假如你是一個Web開發者,如果你既能做前端(需要熟悉HTML、CSS、JavaScript、H5以及Bootstrap、EasyUI等各種前端框架),又能做後端(需要熟悉Java或ASP.net或php或Node.js或Go,選項太多就不一一列舉了),可以獨自一個人完成一個類似電子商務網站的產品的開發,那你就算是全棧工程師了。

假如你是一個App開發者,既能開發Android應用(需要熟悉Java和Android框架),又能開發iOS應用(需要熟悉Objective-C或Swift以及Cocoa for iOS),又可以開發應用需要的後臺(需要熟悉Node.js或Java或Go或……),總之你可以獨自一個人開發出一個覆蓋Android和iOS的且有業務後臺的App,那你也就算是全棧工程師了。

嗯,現在估計我們真的明白[全棧工程師]是什麼鬼了。那讓我們來看看,假如你想成為全棧工程師,都該瞭解些什麼……比如怎麼成為全棧工程師,比如全棧的好與壞,比如選擇哪條技術棧來貫通……

全棧ABC

關於全棧工程師,有一些周邊是你必須瞭解的。

對自己產品的渴望

注意,我放在第一位的,不是對技術的渴望,而是,[對自己產品的渴望]。就像一個男人,渴望要一個自己的孩子,99%會選擇走“談物件、結婚、做愛、生娃、養娃”這樣一條路。作為一個工程師,如果你對產品的渴望就像那些思子若狂見了人家孩子就想抱走的男人或女人,那你就可能會願意成為全棧工程師。

一個真正的全棧工程師,會從生活中發現問題,洞察需求,設計解決方案並迫不及待的實現產品。而為了實現產品,他願意去學習任何領域的知識和技能。注意,他們學習某個領域的知識和技能,並不是為了成為那個領域的專家,而是為了完成自己的目標。他們視野開闊心存高遠,不會拘泥於技術,假如揮一揮手,就有產品、設計、開發蜂擁而至為他們開發想要的產品,那他們絲毫也不介意扔掉所有的技術。換句話說,只有在一個人既對產品有迫切的渴望又沒人幫他實現時,他才會走上全棧之路。所以,全棧,只是實現目標過程中的副產品,目標,才是首要的。

時勢造全棧

前面我們說了,當一個人渴望自己的產品又沒人幫他實現時,他如果不能放下灼心的渴望,就可能走上全棧之路。這其實是形勢逼迫。那類似的還有另外一種情況,也可以逼著一個人成為全棧工程師。那就是:[加入一個缺人的創業型公司]。

大公司人員充沛,一個蘿蔔一個坑,個個都是螺絲釘,讓你一個人搞定所有事情的概率很小。而小公司、創業型公司則不同,他們往往是人員極度匱乏,一個人得頂幾個人用。你搞前端的,後端沒人你也得頂上。你搞Android開發的,iOS沒人你也得頂上,後臺沒人說不得也得頂上。就這麼著,你很快就全棧了。所以,有一種全棧工程師,是被別人養成的。

思維方式和學習能力

有的人,拿刀逼著也成不了全棧工程師。有的人,把他扔到沒電沒網路的荒漠,他也可以走上全棧之路。有的人……

這其間的差別,就是思維方式和學習能力。

從思維上講,要想全棧,你就不能給自己設限。把自己定位在前端工程師或iOS工程師上,任爾東西南北風,咬定青山不放鬆。這樣是不行的。應該心隨好貓意縱天高或者鶴舞白沙我心飛翔,總之因時而變、因勢而變,需要用什麼就學什麼,伺服器沒人搞那我來搞,Android App沒人寫那我來寫……這樣打破了自我設限,就具備了成為全棧工程師的基礎。

除了這種自我設限的思維模式需要破除,還有一種定勢要破,那就是精通每一項技術。對於熱愛技術的人來講,搞精每一項技術是很強的誘惑啊,簡直比門口走過的妙齡女郎的吸引力還大。這種思想要破除,因為把門門技術都精通必然會耗時很長,影響你實現自己的產品,所以,只要你學到的那部分能夠順利幫你實現目標,那就可以揮一揮衣袖,繼續前行了。

一旦思維上破除了定勢,具備了成為全棧工程師的基礎,如果你有很強的自我學習能力,那就真的可以順利走上全棧之路了。而假如你學習能力稍差,面對新技術總是尋尋覓覓尋不到入門的路,那恐怕也把自己逼不成全棧,或者得逼到白頭。

全棧的好與壞

全棧工程師的好處就是涉獵技術很廣,能夠很快運用他所瞭解的技術開發出產品原型。所以,很多全棧工程師後來走上了創業之路,成了創業者;或者進了創業公司,成了技術合夥人。他們視野開闊,思維活躍,對技術和產品都很敏感,是創業期不可或缺的核心。

然而,正因為全棧工程師的技術是橫向發展的,廣博有餘而精深不足,所以你提到什麼,他都能侃上半天,但你要問一些基礎的知識點,他可能答不上來。假如全棧工程師不去創業或不加入創業型公司,而是應聘某一個技術方向的崗位,那在面試時就會比較吃虧,因為他用到的大部分技術,細問起來,別人可能都會覺得有了解但不深入。所以,這可能會影響他的求職。不過,如果先一專再多能,然後有意識的選擇目標職業,就可以避免這種情況。

選擇哪條技術棧

額,其實,對於全棧工程師來講,往往是沒得選擇的。比如你做App,你要全棧,你基本上就很少選擇餘地,Java、Objective-C都是必須的。所以,很多時候是產品和形勢選擇你成為全棧,是做著做著成了全棧。而不是為了全棧而全棧,假如是為了全棧而全棧,那你是可以選的哦。比如選擇MEAN(MongoDB+Express+AngularJS+Node.js),比如J2SE + SSH + Android + Objective-C + Cocoa……

假如你的目標就是成為全棧工程師,你會發現,哇哦,好多東西要學噯,嚇死人啦。那假如你要做一個產品,比如因為你酷愛炒股,你要做一個簡單的股票App:跟蹤自選股行情,支援自定義提醒,介面要清爽乾淨,平臺呢要支援Android、iOS和Web。那你在做這樣產品的過程中,就會被逼成全棧而不自覺。因為,做你喜歡的事兒,是不會覺得累的。

最後,娛樂一下,送給全棧er一個來自Twitter的段子:

剛來這家公司面試的時候,老闆語重心長的對我說:“雖然工資不高, 但是你可以在這裡獲得快速的成長,這對做IT的人來說是最重要的。”

現在,兩年過去了,老闆沒有騙我,
我看起來已經像是60歲的人了。

相關文章