假如你想成為全棧工程師…
讓我來發(fā)揮一下剪報(bào)君的特長(zhǎng),下面是百度百科對(duì)[全棧工程師]的說明:
全棧工程師,也叫全端工程師,英文Full Stack developer,是指掌握多種技能,并能利用多種技能獨(dú)立完成產(chǎn)品的人。
上面的定義,基本上已經(jīng)比較直白了,我們?cè)倥e兩個(gè)例子就更明白了。
假如你是一個(gè)Web開發(fā)者,如果你既能做前端(需要熟悉HTML、CSS、JavaScript、H5以及Bootstrap、EasyUI等各種前端框架),又能做后端(需要熟悉Java或ASP.net或php或Node.js或Go,選項(xiàng)太多就不一一列舉了),可以獨(dú)自一個(gè)人完成一個(gè)類似電子商務(wù)網(wǎng)站的產(chǎn)品的開發(fā),那你就算是全棧工程師了。
假如你是一個(gè)App開發(fā)者,既能開發(fā)Android應(yīng)用(需要熟悉Java和Android框架),又能開發(fā)iOS應(yīng)用(需要熟悉 Objective-C或Swift以及Cocoa for iOS),又可以開發(fā)應(yīng)用需要的后臺(tái)(需要熟悉Node.js或Java或Go或……),總之你可以獨(dú)自一個(gè)人開發(fā)出一個(gè)覆蓋Android和iOS的且 有業(yè)務(wù)后臺(tái)的App,那你也就算是全棧工程師了。
嗯,現(xiàn)在估計(jì)我們真的明白[全棧工程師]是什么鬼了。那讓我們來看看,假如你想成為全棧工程師,都該了解些什么……比如怎么成為全棧工程師,比如全棧的好與壞,比如選擇哪條技術(shù)棧來貫通……
全棧ABC
關(guān)于全棧工程師,有一些周邊是你必須了解的。
對(duì)自己產(chǎn)品的渴望
注意,我放在第一位的,不是對(duì)技術(shù)的渴望,而是,[對(duì)自己產(chǎn)品的渴望]。就像一個(gè)男人,渴望要一個(gè)自己的孩子,99%會(huì)選擇走“談對(duì)象、結(jié)婚、做愛、生娃、養(yǎng)娃”這樣一條路。作為一個(gè)工程師,如果你對(duì)產(chǎn)品的渴望就像那些思子若狂見了人家孩子就想抱走的男人或女人,那你就可能會(huì)愿意成為全棧工程師。
一個(gè)真正的全棧工程師,會(huì)從生活中發(fā)現(xiàn)問題,洞察需求,設(shè)計(jì)解決方案并迫不及待的實(shí)現(xiàn)產(chǎn)品。而為了實(shí)現(xiàn)產(chǎn)品,他愿意去學(xué)習(xí)任何領(lǐng)域的知識(shí)和技能。注 意,他們學(xué)習(xí)某個(gè)領(lǐng)域的知識(shí)和技能,并不是為了成為那個(gè)領(lǐng)域的專家,而是為了完成自己的目標(biāo)。他們視野開闊心存高遠(yuǎn),不會(huì)拘泥于技術(shù),假如揮一揮手,就有 產(chǎn)品、設(shè)計(jì)、開發(fā)蜂擁而至為他們開發(fā)想要的產(chǎn)品,那他們絲毫也不介意扔掉所有的技術(shù)。換句話說,只有在一個(gè)人既對(duì)產(chǎn)品有迫切的渴望又沒人幫他實(shí)現(xiàn)時(shí),他才 會(huì)走上全棧之路。所以,全棧,只是實(shí)現(xiàn)目標(biāo)過程中的副產(chǎn)品,目標(biāo),才是首要的。
時(shí)勢(shì)造全棧
前面我們說了,當(dāng)一個(gè)人渴望自己的產(chǎn)品又沒人幫他實(shí)現(xiàn)時(shí),他如果不能放下灼心的渴望,就可能走上全棧之路。這其實(shí)是形勢(shì)逼迫。那類似的還有另外一種情況,也可以逼著一個(gè)人成為全棧工程師。那就是:[加入一個(gè)缺人的創(chuàng)業(yè)型公司]。
大公司人員充沛,一個(gè)蘿卜一個(gè)坑,個(gè)個(gè)都是螺絲釘,讓你一個(gè)人搞定所有事情的概率很小。而小公司、創(chuàng)業(yè)型公司則不同,他們往往是人員極度匱乏,一個(gè) 人得頂幾個(gè)人用。你搞前端的,后端沒人你也得頂上。你搞Android開發(fā)的,iOS沒人你也得頂上,后臺(tái)沒人說不得也得頂上。就這么著,你很快就全棧 了。所以,有一種全棧工程師,是被別人養(yǎng)成的。
思維方式和學(xué)習(xí)能力
有的人,拿刀逼著也成不了全棧工程師。有的人,把他扔到?jīng)]電沒網(wǎng)絡(luò)的荒漠,他也可以走上全棧之路。有的人……
這其間的差別,就是思維方式和學(xué)習(xí)能力。
從思維上講,要想全棧,你就不能給自己設(shè)限。把自己定位在前端工程師或iOS工程師上,任爾東西南北風(fēng),咬定青山不放松。這樣是不行的。應(yīng)該心隨好 貓意縱天高或者鶴舞白沙我心飛翔,總之因時(shí)而變、因勢(shì)而變,需要用什么就學(xué)什么,服務(wù)器沒人搞那我來搞,Android App沒人寫那我來寫……這樣打破了自我設(shè)限,就具備了成為全棧工程師的基礎(chǔ)。
除了這種自我設(shè)限的思維模式需要破除,還有一種定勢(shì)要破,那就是精通每一項(xiàng)技術(shù)。對(duì)于熱愛技術(shù)的人來講,搞精每一項(xiàng)技術(shù)是很強(qiáng)的誘惑啊,簡(jiǎn)直比門口 走過的妙齡女郎的吸引力還大。這種思想要破除,因?yàn)榘验T門技術(shù)都精通必然會(huì)耗時(shí)很長(zhǎng),影響你實(shí)現(xiàn)自己的產(chǎn)品,所以,只要你學(xué)到的那部分能夠順利幫你實(shí)現(xiàn)目 標(biāo),那就可以揮一揮衣袖,繼續(xù)前行了。
一旦思維上破除了定勢(shì),具備了成為全棧工程師的基礎(chǔ),如果你有很強(qiáng)的自我學(xué)習(xí)能力,那就真的可以順利走上全棧之路了。而假如你學(xué)習(xí)能力稍差,面對(duì)新技術(shù)總是尋尋覓覓尋不到入門的路,那恐怕也把自己逼不成全棧,或者得逼到白頭。
全棧的好與壞
全棧工程師的好處就是涉獵技術(shù)很廣,能夠很快運(yùn)用他所了解的技術(shù)開發(fā)出產(chǎn)品原型。所以,很多全棧工程師后來走上了創(chuàng)業(yè)之路,成了創(chuàng)業(yè)者;或者進(jìn)了創(chuàng)業(yè)公司,成了技術(shù)合伙人。他們視野開闊,思維活躍,對(duì)技術(shù)和產(chǎn)品都很敏感,是創(chuàng)業(yè)期不可或缺的核心。
然而,正因?yàn)槿珬9こ處煹募夹g(shù)是橫向發(fā)展的,廣博有余而精深不足,所以你提到什么,他都能侃上半天,但你要問一些基礎(chǔ)的知識(shí)點(diǎn),他可能答不上來。假 如全棧工程師不去創(chuàng)業(yè)或不加入創(chuàng)業(yè)型公司,而是應(yīng)聘某一個(gè)技術(shù)方向的崗位,那在面試時(shí)就會(huì)比較吃虧,因?yàn)樗玫降拇蟛糠旨夹g(shù),細(xì)問起來,別人可能都會(huì)覺得 有了解但不深入。所以,這可能會(huì)影響他的求職。不過,如果先一專再多能,然后有意識(shí)的選擇目標(biāo)職業(yè),就可以避免這種情況。
選擇哪條技術(shù)棧
額,其實(shí),對(duì)于全棧工程師來講,往往是沒得選擇的。比如你做App,你要全棧,你基本上就很少選擇余地,Java、Objective-C都是必須 的。所以,很多時(shí)候是產(chǎn)品和形勢(shì)選擇你成為全棧,是做著做著成了全棧。而不是為了全棧而全棧,假如是為了全棧而全棧,那你是可以選的哦。比如選擇 MEAN(MongoDB+Express+AngularJS+Node.js),比如J2SE + SSH + Android + Objective-C + Cocoa……
假如你的目標(biāo)就是成為全棧工程師,你會(huì)發(fā)現(xiàn),哇哦,好多東西要學(xué)噯,嚇?biāo)廊死?。那假如你要做一個(gè)產(chǎn)品,比如因?yàn)槟憧釔鄢垂桑阋鲆粋€(gè)簡(jiǎn)單的股票 App:跟蹤自選股行情,支持自定義提醒,界面要清爽干凈,平臺(tái)呢要支持Android、iOS和Web。那你在做這樣產(chǎn)品的過程中,就會(huì)被逼成全棧而不 自覺。因?yàn)椋瞿阆矚g的事兒,是不會(huì)覺得累的。
最后,娛樂一下,送給全棧er一個(gè)來自Twitter的段子:
剛來這家公司面試的時(shí)候,老板語重心長(zhǎng)的對(duì)我說:“雖然工資不高, 但是你可以在這里獲得快速的成長(zhǎng),這對(duì)做IT的人來說是最重要的。”
現(xiàn)在,兩年過去了,老板沒有騙我,
我看起來已經(jīng)像是60歲的人了。