全棧工程師,英文 Full Stack developer,是指那些掌握多種技能,并能利用多種技能獨(dú)立完成產(chǎn)品的人。當(dāng)然,現(xiàn)在「全棧工程師」很吃香,非常吃香!這是因?yàn)樵谝苿?dòng)互聯(lián)網(wǎng)時(shí)代,IT 系統(tǒng)變得愈加復(fù)雜,需要擁有全局思維的工程師來(lái)搞定各種「疑難雜癥」。不僅要玩得轉(zhuǎn)前端,還要搞得定后端,總之各種技術(shù)都懂,所以其重要性可見(jiàn)一斑。
近日,移動(dòng)開(kāi)發(fā)精英俱樂(lè)部圍繞「如何成為一個(gè)全棧的工程師?」進(jìn)行了討論,主持人是優(yōu)才學(xué)院的創(chuàng)始人伍星老師,讓我們一起看看大神們的精彩言論吧?。ū疚南祰?guó)內(nèi) ITOM 管理領(lǐng)軍企業(yè) OneAPM 工程師整理)
程序員眼中的「全棧」
伍星-優(yōu)才創(chuàng)始人:全棧,最早來(lái)自于 Facebook 的「我們只招全棧工程師」,從表面看是指技術(shù)棧,是完成一套產(chǎn)品所面要的全部技術(shù)和技能。谷歌在它的書(shū)中也提出,它們只招創(chuàng)意型人才,其實(shí)這是一致的、相通的!
饒培澤:全棧,在我看來(lái)是一種態(tài)度,無(wú)路遇到何種問(wèn)題都能積極的去解決。全棧,也不是說(shuō)會(huì)什么,而是因?yàn)橛泻闷嫘呐c驅(qū)動(dòng)力,所以什么都想搞明白,學(xué)習(xí)起來(lái)自然能快速上手。
iOS小碼哥:全棧,也可以說(shuō)「我是一塊磚,哪兒需要我,我就往哪兒填。」代表著快速學(xué)習(xí)的能力和超強(qiáng)的適應(yīng)能力。
夢(mèng)航:全棧,在一定程度上能更好的做出架構(gòu),減少維護(hù)成本。
卓競(jìng)勁:我支持思想和知識(shí)層面的「全棧」,而非刻意技能上的全棧。
饒培澤:其實(shí),能從前端寫(xiě)到后端的人不少,但是能專職來(lái)做嗎?這么說(shuō)吧,很多公司的后端都能寫(xiě)前端,但可不敢讓他們寫(xiě)產(chǎn)品級(jí)別的代碼。如果后端人才如果能去了解前端的知識(shí)點(diǎn),合理去進(jìn)行整合互補(bǔ),這樣是我們所鼓勵(lì)的。
藥交匯:全棧圍繞產(chǎn)品服務(wù),重點(diǎn)是考慮問(wèn)題的角度、廣度。個(gè)人理解也可以看成責(zé)任感的一種體現(xiàn),前端、后端都可以也不代表全棧。只不過(guò)是圍繞著問(wèn)題的解決方案,其根本還是本著對(duì)一件事情負(fù)責(zé)的態(tài)度,展開(kāi)全方面的跟蹤。
伍星-優(yōu)才創(chuàng)始人:從谷歌對(duì)創(chuàng)意型人才的描述可以看出,這更多體現(xiàn)在能夠主動(dòng)地承擔(dān)工作和解決問(wèn)題。比如谷歌講過(guò)一個(gè)例子,Adwords 是幾個(gè)非相關(guān)工程師主動(dòng)解決了小問(wèn)題帶來(lái)大收益的。
Facebook 的人才培養(yǎng)一開(kāi)始是不分工的,「新兵營(yíng)」之后才分工,并且輪崗很多,這中間暗含了:學(xué)習(xí)能力要相當(dāng)強(qiáng),我想學(xué)什么,都能學(xué)什么,需要我做什么,都能勝任。
所以我們對(duì)全棧提出如下見(jiàn)解。首先要技術(shù)全面,作為全棧工程師,其技術(shù)當(dāng)然要比較全面。從前端到后端、從運(yùn)維到優(yōu)化、從 PC 到移動(dòng)都難不倒。 但又有自己比較精通的一方面。也就是說(shuō),作為全棧工程師既要有「專深」,同樣也要有「廣博」,這樣才能在解決問(wèn)題時(shí)不受局限,才能融會(huì)貫通。
第二就是思維和心態(tài)。全棧工程師以積極主動(dòng)的姿態(tài)來(lái)面對(duì)和解決工作中的問(wèn)題。以全局的觀點(diǎn)來(lái)看待自己所從事的項(xiàng)目, 而不只是自己負(fù)責(zé)的一小部分。以做成產(chǎn)品、做成一件事的觀點(diǎn)來(lái)看待整個(gè)開(kāi)發(fā)流程,而不僅僅是技術(shù)實(shí)現(xiàn)。 因?yàn)橹荒苓@樣的心態(tài)和觀點(diǎn),他才會(huì)積極主動(dòng)地去學(xué)習(xí)其他技術(shù),用其他技術(shù)解決問(wèn)題
第三是上升能力,全棧工程師并不意味著全能,什么都會(huì)。但是全棧工程師有良好的基礎(chǔ)技能。 這個(gè)技能,既包括計(jì)算機(jī)科學(xué)的基礎(chǔ),也包括英語(yǔ)基礎(chǔ),有了這個(gè)基礎(chǔ), 加上積極的態(tài)度,開(kāi)放的心胸,就能快速地學(xué)習(xí)所需要的技術(shù),比如像 Swift 語(yǔ)言,那都不是事兒。 并應(yīng)用在所需要的開(kāi)發(fā)工作中。
第四就是職業(yè)價(jià)值,像 Facebook 說(shuō),他們只喜歡全棧工程師,創(chuàng)業(yè)公司也會(huì)說(shuō),我們需要全棧工程師。無(wú)論是在大公司,還是創(chuàng)業(yè)公司, 全棧工程師都將成為搶手人才!那是因?yàn)?,全棧工程師不但技能全面,而且心態(tài)積極,學(xué)習(xí)能力強(qiáng)!
伍星-優(yōu)才創(chuàng)始人:所以全棧不是一種技能,而是一種能力。學(xué)習(xí)能力,開(kāi)放心態(tài)是優(yōu)先的!
李睿君:其實(shí)后面有段時(shí)間覺(jué)得全棧需要一方面熟悉自己本身專業(yè)的領(lǐng)域,另一方面需要關(guān)注另一段的技術(shù),這樣在需要另一端技術(shù),或是溝通時(shí)都能有幫助
著建彬:對(duì)感興趣的東西不要當(dāng)成「工作」來(lái)做,其實(shí)興趣才是最大的動(dòng)力。我覺(jué)得全棧應(yīng)該是由「興趣」驅(qū)動(dòng)的。
伍星-優(yōu)才創(chuàng)始人:即使是領(lǐng)域?qū)<遥麑?duì)別的也會(huì)有了解和研究的。優(yōu)秀的技術(shù)人員,對(duì)所有的技術(shù)應(yīng)該有一種天然的好奇心和折騰勁
藥交匯:我前端和后端都經(jīng)歷過(guò),其實(shí),在前期人員不全的情況下,結(jié)合業(yè)務(wù)并外出調(diào)研梳理了產(chǎn)品線框圖、PRD、流程圖,到制定了設(shè)計(jì)規(guī)范,到協(xié)調(diào)資源,然后制定研發(fā)周期,最后到輸出...... 曾一度以為這就是全棧,但是后來(lái)思考,這些只不過(guò)是本著對(duì)事情負(fù)責(zé)的態(tài)度,才驅(qū)動(dòng)做了很多研發(fā)之外的事。就算一個(gè)人的技術(shù)全棧精通也要服務(wù)于根本產(chǎn)品。
伍星-優(yōu)才創(chuàng)始人:項(xiàng)目進(jìn)度和管理,比全棧本身要難。因?yàn)榧夹g(shù)還是死的,人是活的,而且多種多樣的。就像業(yè)務(wù)架構(gòu)師,本身曾經(jīng)技術(shù)應(yīng)該不錯(cuò),即使學(xué)新技術(shù),應(yīng)該也是有特殊長(zhǎng)處和見(jiàn)解的,不過(guò)不學(xué)不寫(xiě)罷了。這種人是標(biāo)準(zhǔn)的技術(shù) leader ,技術(shù)能力并不一定是以某特定語(yǔ)言的寫(xiě)碼能力而界定。
一般而言,全棧工程師在產(chǎn)品和溝通這塊都有優(yōu)勢(shì),由于技術(shù)全面,他能和各方溝通的比較愉快 。甚至和產(chǎn)品經(jīng)理也溝通好。我也算是一個(gè)全棧,此前和各個(gè)產(chǎn)品經(jīng)理溝通都很愉快。因?yàn)樗焕斫獾牡胤剑視?huì)和他講清楚,分析清楚,為什么這個(gè)不能做,為什么那樣做不好,那樣做更好,有理有據(jù),其實(shí),產(chǎn)品經(jīng)理也是講道理的,不像我們?cè)诰W(wǎng)絡(luò)上經(jīng)?!竿虏邸沟哪菢?。如果再加上本身的技術(shù)聲望和良好溝通的方式,程序員和產(chǎn)品經(jīng)理相處其實(shí)會(huì)很和諧的。
如果成為一個(gè)全棧工程師?
王威:我的理解是,不僅自己領(lǐng)域的精通,然后其他部分也應(yīng)該快速學(xué)習(xí)。在我看來(lái),如果想成為全棧的話,還得靠上項(xiàng)目了。在普通公司的話,一般每個(gè)人只關(guān)注自己的領(lǐng)域,對(duì)跨領(lǐng)域的項(xiàng)目一般不會(huì)碰,可以自己利用業(yè)余時(shí)間來(lái)寫(xiě),比如原本做APP的,有空可以寫(xiě)一下后端的東西,其實(shí)開(kāi)始那一步比較困難。
張洋:全棧不只是技術(shù),還需要心態(tài)、責(zé)任等方方面面。
江月:我覺(jué)得 facebook 要求全棧,并不是希望程序員技術(shù)全面但不精通。而是至少有一個(gè)領(lǐng)域精通,而且可以快速研究另外一個(gè)領(lǐng)域的技術(shù)點(diǎn)。
伍星-優(yōu)才創(chuàng)始人:能成為全棧,意味著技術(shù)能達(dá)到一定高度,而高度,肯定是以長(zhǎng)處見(jiàn)知的。我個(gè)人更傾向于認(rèn)為,一專多能。
王威:成為全棧的話,還得靠上項(xiàng)目了。。。在普通公司的話,一般每個(gè)人只關(guān)注自己的領(lǐng)域,對(duì)跨領(lǐng)域的項(xiàng)目一般不會(huì)碰,自己私下來(lái)寫(xiě),比如原本做 APP 的,自己私下寫(xiě)后端的東西,其實(shí)開(kāi)始那一步比較困難。
藥交匯:關(guān)鍵是責(zé)任感的轉(zhuǎn)變,由「被動(dòng)」到「主動(dòng)」,才能實(shí)現(xiàn)自我超越。
拯救與逍遙:我個(gè)人看法,不是先有了「我要成為全棧」的目標(biāo),而是對(duì)技術(shù)的好奇和追求,以及積極應(yīng)對(duì)當(dāng)前業(yè)務(wù)發(fā)展的不斷挑戰(zhàn),最終才能鍛煉出了全棧。
薄建業(yè):我覺(jué)得,最好的方法就是項(xiàng)目驅(qū)動(dòng);從另一方面也說(shuō)明,說(shuō)為全棧,在一定程度上,也是被逼出來(lái)的。
王威:我比較贊成項(xiàng)目驅(qū)動(dòng)型。比如 APP 端的,例如做個(gè)類似于云筆記的軟件,那么后端數(shù)據(jù)該怎么保存,接口該怎么定,該用哪種語(yǔ)言來(lái)實(shí)現(xiàn)后端,在分析你想要的目標(biāo)的時(shí)候就能找到該用哪種技術(shù)該學(xué)哪種技術(shù)。比如后端用 PhP 寫(xiě),這時(shí)候就會(huì)推動(dòng)自己去學(xué) PHP,比如自己是做安卓,那么語(yǔ)言銜接上,有可能選擇 JAVA 做后端,這時(shí)候就學(xué) J2EE 的東西,圍繞這個(gè)需求來(lái)實(shí)現(xiàn),然后學(xué)數(shù)據(jù)庫(kù)......其實(shí)說(shuō)到底還是得有」目標(biāo)項(xiàng)目」來(lái)進(jìn)行推動(dòng)。
林曦:后端概念太泛了,不同業(yè)務(wù)需求和規(guī)模需要的技術(shù)支撐完全不同。
王威:比如做高并發(fā),可以 NodeJs 、 Golang 、 Erlang ,或者干脆用 Java、PHP 等等。其實(shí)做項(xiàng)目的第一步,后端寫(xiě)出業(yè)務(wù)服務(wù)接口,在業(yè)務(wù)量上來(lái)之后考慮比如性能優(yōu)化,比如負(fù)載均衡,或者再比如后端架構(gòu)分層等等。
文彥峰:其實(shí),接入也有很多要做的,一般要和終端一起做,路由、負(fù)載、流量控制、安全、監(jiān)控、旁路、優(yōu)化 TCP 協(xié)議棧、內(nèi)核參數(shù)再到硬件的支持等等。做業(yè)務(wù),比如網(wǎng)關(guān)、鑒權(quán)、微服務(wù)框架、服務(wù)治理、緩存、消息中間件;存儲(chǔ),單機(jī)房如何保證數(shù)據(jù)不丟,多機(jī)房是單向同步,雙向同步,出了異常怎么通過(guò)日志恢復(fù),數(shù)據(jù)的檢查,靜態(tài)檢查點(diǎn)的選擇。怎么做分片,怎么擴(kuò)容不影響原來(lái)的分片?
王威:所以說(shuō)到底還是得有這個(gè)項(xiàng)目需求,圍繞著需求來(lái)分析需要的技術(shù),然后再研究技術(shù)了。感覺(jué)純按照興趣來(lái)學(xué)新的技術(shù),作為對(duì)這一個(gè)技術(shù)有個(gè)優(yōu)缺點(diǎn)簡(jiǎn)要了解,在需要的時(shí)候能快速學(xué)習(xí)。我個(gè)人還是覺(jué)得,想成為一個(gè)「全?!梗驼乙粋€(gè)想法并實(shí)現(xiàn)它。
周淵:比如,你覺(jué)得 NBA 好看,想要做一個(gè) APP 能提醒比賽,那么每天下班后,沒(méi)事寫(xiě)幾個(gè)小時(shí)代碼,三個(gè)月后,你就會(huì)發(fā)現(xiàn)做成了。
林曦:我覺(jué)得做個(gè)「入門型」的全棧比較容易,真正能做到都有一定深入的了解很難,融會(huì)貫通更難。
拯救與逍遙:先自學(xué)基礎(chǔ)入門,進(jìn)階的話,可以隨公司項(xiàng)目,初期不能直接參與,但是我們可以主動(dòng)思考技術(shù)方案,然后參照其他同事最后落地的方案,對(duì)比總結(jié)。能力慢慢提升,真正上手的機(jī)會(huì)總會(huì)有的!
周淵:最重要就是,Just Do It !
林曦:不過(guò)大公司相對(duì)有一個(gè)好處,就是能遇到「牛人」的概率也比較高,所以開(kāi)發(fā)過(guò)程中,某一個(gè)部分遇到瓶頸的時(shí)候想要找人討論或者請(qǐng)教,找他們也是比較好找的。
周淵:高人點(diǎn)撥,確實(shí)重要,但是建立在你入門的基礎(chǔ)上。
拯救與逍遙:很多時(shí)候,我們不能做最想做的事情,而且要停下來(lái)推動(dòng)一下,阻礙我們繼續(xù)前行的事情。但是,有些坑,有些歷練是必須的,別人說(shuō)一萬(wàn)遍,我們還是得自己歷練。而且很多技術(shù)選型,都是在真正落地之后,才暴露出問(wèn)題。
王威:采坑是必然的!運(yùn)氣好的話,采坑的代價(jià)低,運(yùn)氣不好的話,采坑代價(jià)可能毀掉整個(gè)項(xiàng)目。不過(guò)有些坑,有可能是在技術(shù)選型的時(shí)候就會(huì)暗含的,這個(gè)時(shí)候確實(shí)不好找。
王威:我們業(yè)務(wù)在往圖數(shù)據(jù)遷移的時(shí)候也踩了很多坑,因?yàn)槲覀兪巧缃卉浖?,所以很多需求是基于用戶關(guān)系的,比如喜歡、不喜歡、好友等等。。。最開(kāi)始覺(jué)得 neo4j 挺方便的,導(dǎo)入數(shù)據(jù)的時(shí)候發(fā)現(xiàn),免費(fèi)版就是個(gè)坑爹的玩具。。。收費(fèi)版貌似5千刀一個(gè)月還說(shuō)多少,巨貴。。。
王威:創(chuàng)業(yè)有這個(gè)好處就是人少,一個(gè)人當(dāng)多個(gè)人用,這個(gè)時(shí)候就有很多機(jī)會(huì)去摸新的東西,不過(guò)缺點(diǎn)就是沒(méi)人帶,自己摸石頭采坑。。。
王威:不過(guò)對(duì)于我來(lái)說(shuō)收益大于采坑風(fēng)險(xiǎn)。。。所以還是得圍繞這個(gè)需求,一圈一圈的挖掘更好的解決方式,這個(gè)是一種學(xué)習(xí)的過(guò)程。尤其是在風(fēng)險(xiǎn)可控范圍內(nèi),絕對(duì)鼓勵(lì)大家嘗試新的東西。
到最后你的選擇很多時(shí)候依賴你團(tuán)隊(duì)的水平,怎么把這些人水平帶起來(lái),你這些才能做細(xì)
最好的成長(zhǎng)就是在業(yè)務(wù)中成長(zhǎng)
林曦:架構(gòu)也是活的,需要不斷生長(zhǎng),不斷修改。不過(guò),前期埋的坑也只有后期加班吞了,沒(méi)有一勞永逸的架構(gòu)!
董飛:我覺(jué)得重要的還是分享,別人幫你填了坑,你也可以幫別人填坑。而媒介就是博客,大家可以互幫互助。
王威:說(shuō)到寫(xiě)博客,我覺(jué)得可以把思維給規(guī)范化,把想法記錄下來(lái)的同時(shí)還能注意到以前沒(méi)注意到得細(xì)節(jié),絕對(duì)是學(xué)習(xí)新姿勢(shì)最必要的補(bǔ)充。
伍星-優(yōu)才創(chuàng)始人:曾經(jīng),我就主動(dòng)地提出來(lái)幫公司承擔(dān)一些的運(yùn)維方面的事情。然后就自己學(xué)習(xí),請(qǐng)教,后來(lái)很自然地就成為全棧了。當(dāng)然,全棧并不意味著上班學(xué)別的,我們上班時(shí)間把公司的事情做好,這才是成為全棧的前提。
伍星-優(yōu)才創(chuàng)始人:還有一點(diǎn),就是我們?cè)趯?xiě)代碼的過(guò)程中,要考慮怎么優(yōu)化,怎么寫(xiě)得更快更好,而不是像「搬磚」似的,簡(jiǎn)單的重復(fù)?!赴岽u」工作很快就會(huì)被淘汰掉,積累核心競(jìng)爭(zhēng)力才是發(fā)展的根本 。
王威:比如做APP,在寫(xiě)從服務(wù)端拉取數(shù)據(jù)的時(shí)候,就可以考慮一下他們?yōu)槭裁匆峁┻@樣的數(shù)據(jù)結(jié)構(gòu)?這樣的接口如何進(jìn)行實(shí)現(xiàn)的?有這些疑問(wèn)的時(shí)候,就會(huì)促進(jìn)自己去看看去了解一下相關(guān)的知識(shí),這樣才能不斷通向全棧之路。
當(dāng)然,完成是一碼事兒,完成好是另一碼事兒。全棧的意義不是全都泛泛地去做,而是在做深自己的領(lǐng)域同時(shí),也能借鑒其他的技術(shù),至少在團(tuán)隊(duì)開(kāi)發(fā)時(shí)候溝通成本會(huì)減少很多。
趙建彬:其實(shí),產(chǎn)品并不會(huì)關(guān)心你代碼怎么寫(xiě),關(guān)鍵自己要寫(xiě)出讓自己覺(jué)得滿意的、高質(zhì)量的代碼。
薄建業(yè):全站人才可以站在更高的視角,提供「一攬子」的解決方案,避免踩深坑!
文彥峰:熱衷于技術(shù),成全棧是早晚的事兒,技術(shù)全面某方面又比較深入,自然能解決別人解決不了的問(wèn)題,能做別人做不了的事情,團(tuán)隊(duì)中的影響力,行業(yè)中的影響力,也自然就有了,形成正向循環(huán),還是挺不錯(cuò)的!
伍星-優(yōu)才創(chuàng)始人:就像羅輯思維跨年公開(kāi)課說(shuō)的那樣,核心競(jìng)爭(zhēng)力,就是你的不可替代性。我們不能單純地說(shuō)「全?!购?,很多初學(xué)者會(huì)被誤導(dǎo),是因?yàn)樗麄儾涣私馐裁词侨珬?,怎么才能成為全棧。就像武功也有練「走火入魔」的?/p>
其實(shí),加入一個(gè)快速成長(zhǎng)的團(tuán)隊(duì)創(chuàng)業(yè)。是成為全棧的最快捷途徑。這個(gè)團(tuán)隊(duì),也可能是大公司內(nèi)部創(chuàng)業(yè)團(tuán)隊(duì)。也可能是大家都把工作當(dāng)作創(chuàng)業(yè)的團(tuán)隊(duì)。而沒(méi)有好奇心,沒(méi)有折騰勁,沒(méi)有學(xué)習(xí)能力,沒(méi)有開(kāi)放心態(tài),是不可能成為全棧的!
http://quanzhan.ucai.cn/intro (本文是優(yōu)才學(xué)院創(chuàng)始人伍星對(duì)全棧的理解,發(fā)布后2014年4月份,到現(xiàn)在也沒(méi)有改變,歡迎大家閱讀。)

本文系國(guó)內(nèi) ITOM 行業(yè)領(lǐng)軍企業(yè) OneAPM 工程師編譯整理。我們致力于幫助企業(yè)用戶提供全棧式的性能管理以及 IT 運(yùn)維管理服務(wù),通過(guò)一個(gè)探針就能夠完成日志分析、安全防護(hù)、APM 基礎(chǔ)組件監(jiān)控、集成報(bào)警以及大數(shù)據(jù)分析等功能。想閱讀更多技術(shù)文章,請(qǐng)?jiān)L問(wèn) OneAPM 官方技術(shù)博客
本文轉(zhuǎn)自 OneAPM 官方博客