最近參加一個(gè)技術(shù)社區(qū)活動(dòng),在討論到“CTO的技術(shù)深度和廣度哪個(gè)更重要”的話題時(shí),我想起社區(qū)里面常常提到的“全棧工程師”的事情,于是表達(dá)了一些觀點(diǎn)。臨場(chǎng)未必能夠清晰表達(dá),所以下筆,希望能夠引起一些討論,避免年輕工程師誤入歧途。
長(zhǎng)期以來(lái),社區(qū)就有人在提“全棧工程師”,還有一些公司直接掛出名為“全棧工程師”的招聘職位。那什么是全棧工程師?
百度百科的解釋是:全棧工程師,英文叫Full Stack Developer,是指掌握多種技能,并能利用多種技能獨(dú)立完成產(chǎn)品的人。說(shuō)白了就是啥都懂的人,左青龍右白虎老牛在腰間,人擋殺人佛擋殺佛。想想,一個(gè)項(xiàng)目從前到后要包含多少技術(shù)?就拿TalkingData來(lái)說(shuō),就至少有H5、JavaScript、CSS、Java、Kafka、MongoDB、Redis、MySQL/MariaDB、Vertica、Hadoop、Spark、Tychron等等,這些研發(fā)目前需要數(shù)據(jù)可視化團(tuán)隊(duì)、計(jì)算平臺(tái)團(tuán)隊(duì)、存儲(chǔ)平臺(tái)團(tuán)隊(duì)、數(shù)據(jù)挖掘團(tuán)隊(duì)和運(yùn)維團(tuán)隊(duì)來(lái)共同完成。要是出現(xiàn)這么一個(gè)全能王,把活一攬子全部接下來(lái),那要省掉多少溝通代價(jià)和薪資成本?——這簡(jiǎn)直就是救世主!
想到這里,我頓覺(jué)慚愧,十幾年的技術(shù)算是白搞了,要是剛畢業(yè)即以此為目標(biāo),每個(gè)月學(xué)一門(mén),學(xué)完一門(mén)換一門(mén),那用不了兩年就能轉(zhuǎn)職“全棧工程師”這個(gè)終極職業(yè),站上技術(shù)巔峰,俯瞰蕓蕓眾生——是不是有一種游戲開(kāi)掛的快感?想想做個(gè)架構(gòu)師都需要四五年的辛苦積累,現(xiàn)在能兩三年速成,豈不是很爽?
終于,在這樣自我催眠,加上一些輿論的刻意引導(dǎo)下,大批有志青年開(kāi)始走上全棧工程師的自我修煉之路。沒(méi)有多少人愿意腳踏實(shí)地積累自己的技術(shù)經(jīng)驗(yàn),或者潛心去研究開(kāi)源技術(shù)的底層代碼,或者做更深入的性能對(duì)比分析。很多人閃電般的在不同公司之間跳來(lái)跳去,走馬觀花,狂熱浮躁。
這幾年,因?yàn)榇髷?shù)據(jù)需求的不斷成熟和數(shù)據(jù)業(yè)務(wù)的持續(xù)發(fā)展,TalkingData研發(fā)團(tuán)隊(duì)一直保持高密度的招聘,我們對(duì)這個(gè)現(xiàn)象的感覺(jué)是比較明顯的。因?yàn)槲覀冊(cè)诿嬖囍性絹?lái)越多的發(fā)現(xiàn),年輕人的簡(jiǎn)歷寫(xiě)得愈發(fā)琳瑯滿目,這也“精通”,那也“擅長(zhǎng)”,數(shù)量不等的“多年經(jīng)驗(yàn)”或“長(zhǎng)期從事”……恨不得2年工作經(jīng)驗(yàn)比干10年的簡(jiǎn)歷還要長(zhǎng),幾乎稱得上當(dāng)代常用技術(shù)巡展。不要太強(qiáng)!只看簡(jiǎn)歷就想趕緊招進(jìn)來(lái),再開(kāi)掉現(xiàn)在這些“尸位素餐”的非全棧員工,世界肯定清凈了吧?
但是情況真的是這么好嗎?
在面試中,我們會(huì)通過(guò)問(wèn)答,檢驗(yàn)候選人在技術(shù)上思考的深度、理解能力、學(xué)習(xí)能力和解決問(wèn)題的能力。所以研發(fā)人員面試一般會(huì)遵循以下流程:
1. 介紹一下背景和職業(yè)經(jīng)歷。
2. 選擇一個(gè)你最熟悉或擅長(zhǎng)的項(xiàng)目,詳細(xì)描述一下整體架構(gòu)和你做的工作。
3. 討論一下你遇到的挑戰(zhàn)以及怎么去解決的。
4. 然后從這一步開(kāi)始,我們就會(huì)不斷地挑戰(zhàn),不斷追問(wèn)“為什么”,直到通關(guān)或者回答不出來(lái)為止。
在這個(gè)流程中,每一步都有大批候選人失敗,比較典型的失敗原因包括:
1. 跳槽頻繁
最常見(jiàn)的理由是“我想學(xué)習(xí)新的東西”。想學(xué)新東西是值得贊賞的,但是我很難想到正常人在短時(shí)間就能把一門(mén)新的技術(shù)學(xué)通。尤其是開(kāi)源技術(shù),基本屬于入門(mén)容易精通難,很容易找到一些教程101,幫你5分鐘學(xué)會(huì)安裝部署,但是一旦用上生產(chǎn)系統(tǒng),就很容易出現(xiàn)各種各樣的突發(fā)問(wèn)題,配置的、架構(gòu)的、網(wǎng)絡(luò)的、代碼的、甚至還可能有硬件的——逼迫你絞盡腦汁上各種論壇找各種谷哥度娘去解決。經(jīng)驗(yàn)就是從不斷填坑的過(guò)程中積累起來(lái)的。只會(huì)安裝部署,距離真正掌握還差八千里。
最夸張的見(jiàn)過(guò)2年換了6個(gè)公司。所以到后來(lái),只要一看到簡(jiǎn)歷中最近3次工作經(jīng)驗(yàn)中沒(méi)有超過(guò)2年的,直接就略過(guò)了。
2. 缺乏對(duì)架構(gòu)的感覺(jué)
先不說(shuō)一個(gè)技術(shù)人員(尤其是大數(shù)據(jù)技術(shù)人員)必備的好奇心或邏輯性,也只有對(duì)整體架構(gòu)有清晰的認(rèn)識(shí),才能更加準(zhǔn)確的了解自己要實(shí)現(xiàn)的需求對(duì)整個(gè)業(yè)務(wù)線的意義,從而在功能邊界定義和技術(shù)選型上有相對(duì)合理的判斷。如果對(duì)于自己熟悉項(xiàng)目的整體架構(gòu)缺乏了解或者描述不清晰,我們認(rèn)為這樣的研發(fā)人員比較缺乏整體感和全局觀,成長(zhǎng)一般都會(huì)比較有限。
實(shí)際上畫(huà)不出整個(gè)產(chǎn)品線技術(shù)架構(gòu)圖的大有人在,能畫(huà)出來(lái)但是各個(gè)模塊畫(huà)的稀里糊涂的也不在少數(shù)。
3. 技術(shù)浮于表面
說(shuō)起遇到的挑戰(zhàn)時(shí),很容易能夠看出候選人對(duì)于技術(shù)掌握的深度。說(shuō)不出挑戰(zhàn)的情況,要么是任何技術(shù)都擋不住的大牛,要么就是沒(méi)有經(jīng)歷過(guò)比如計(jì)算瓶頸、數(shù)據(jù)淤積、磁盤(pán)爆滿、內(nèi)存不足、架構(gòu)調(diào)優(yōu)這樣的戰(zhàn)斗洗禮。對(duì)于后者,面試官辨就一定要小心,因?yàn)檫@樣的人即使用過(guò)的技術(shù)和框架再多,為你帶來(lái)的坑也可能比填的坑還多。
想起一個(gè)印象比較深的例子,一個(gè)候選人簡(jiǎn)歷上充滿了說(shuō)自己長(zhǎng)于各種大數(shù)據(jù)技術(shù)的明示,然后在面試中請(qǐng)他找個(gè)最擅長(zhǎng)的項(xiàng)目深入聊聊的時(shí)候,他說(shuō),呃…這個(gè)…那我們來(lái)聊聊之前做過(guò)的一個(gè)網(wǎng)站項(xiàng)目吧,我在里面做web前端……當(dāng)時(shí)我就無(wú)語(yǔ)了。
4. 細(xì)節(jié)禁不住挑戰(zhàn)
為什么要選擇這個(gè)方案?和別的方案對(duì)比有什么優(yōu)勢(shì)?這個(gè)方案有什么問(wèn)題?如果讓你來(lái)研發(fā)這個(gè)方案的新版本,你準(zhǔn)備做什么樣的優(yōu)化,為什么?數(shù)據(jù)量如果增大一個(gè)數(shù)量級(jí),你覺(jué)得這個(gè)方案會(huì)出現(xiàn)瓶頸嗎?再增大一個(gè)數(shù)量級(jí)呢?BlaBlaBla……這些都是例行問(wèn)題,如果沒(méi)有對(duì)技術(shù)熟悉并研究到一定程度,是很難有條理的說(shuō)清楚的。
曾經(jīng)遇到過(guò)一個(gè)牛氣哄哄的年輕人,剛畢業(yè)工作1年就找親戚投資創(chuàng)業(yè)擔(dān)任CTO,瞎折騰了一年公司黃了,然后出來(lái)找工作。第一年的薪資算正常,擔(dān)任CTO的時(shí)候就給自己工資翻倍,然后在翻倍的基礎(chǔ)上期望我們?cè)贊q50%。也就是說(shuō),經(jīng)過(guò)這一年創(chuàng)業(yè)過(guò)程,他覺(jué)得自己做了CTO,接觸了好多技術(shù),增值了,“我什么都能干”,理應(yīng)比第一年漲3倍。實(shí)際問(wèn)起來(lái),每項(xiàng)技術(shù)都是泛泛,沒(méi)什么細(xì)節(jié),自然就fail了。
作家格拉德威爾在《異類》一書(shū)中指出,“人們眼中的天才之所以卓越非凡,并非天資超人一等,而是付出了持續(xù)不斷的努力。1萬(wàn)小時(shí)的錘煉是任何人從平凡變成超凡的必要條件。”他將此稱為“一萬(wàn)小時(shí)定律”。
要成為某個(gè)領(lǐng)域的專家,需要至少10000小時(shí)。如果每天工作八個(gè)小時(shí),一周工作五天,那么成為一個(gè)領(lǐng)域的專家至少需要五年。就算是一直搞“996”,也差不多需要3年。這符合任何一個(gè)有經(jīng)驗(yàn)的技術(shù)人員的認(rèn)知:一門(mén)技術(shù),沒(méi)有兩三年以上的熟悉和研究,是根本談不上精通的。尤其是大數(shù)據(jù)行業(yè)是一個(gè)比較新的行業(yè),很多技術(shù)和方法都在摸索階段,需要更多的時(shí)間來(lái)積累。TalkingData也是經(jīng)過(guò)了4年多和海量數(shù)據(jù)以及各種大數(shù)據(jù)技術(shù)的斗爭(zhēng),趟過(guò)了無(wú)數(shù)的地雷陣,到今天才可以說(shuō)是有了一些積累,培養(yǎng)出一批在大數(shù)據(jù)領(lǐng)域比較有經(jīng)驗(yàn)的技術(shù)專家。即使這樣,我們從來(lái)也不認(rèn)為我們研發(fā)團(tuán)隊(duì)里面有“全棧工程師”。
大數(shù)據(jù)行業(yè)一定是靠經(jīng)驗(yàn)靠積累,沒(méi)有任何速成的做法,所以我們始終控制研發(fā)團(tuán)隊(duì)能夠更加聚焦一些而不是更發(fā)散一些,做的更深而不是更廣一些。
那說(shuō)回來(lái),到底有沒(méi)有全棧工程師存在?肯定是有的。但是我見(jiàn)過(guò)的能稱得上“全?!钡墓こ處煟径荚谀骋粋€(gè)領(lǐng)域?qū)戇^(guò)大量代碼,或者解決過(guò)大量問(wèn)題,積累了非常深厚的功底,然后在精深之后,把知識(shí)轉(zhuǎn)化成為常識(shí),才能真正觸類旁通。這時(shí)候看起來(lái)應(yīng)該就是大家說(shuō)的“全棧”吧。但是這顯然不適合經(jīng)驗(yàn)較少的菜鳥(niǎo)工程師。
所以,希望年輕的技術(shù)人員能夠更加踏實(shí)一些,不要輕信“全棧工程師”的美麗神話。只有為自己打好技術(shù)基礎(chǔ),才能飛得更高。
-
工程師
+關(guān)注
關(guān)注
59文章
1590瀏覽量
69480
發(fā)布評(píng)論請(qǐng)先 登錄


硬件工程師看了只會(huì)找個(gè)角落默默哭泣#硬件工程師 #MDD #MDD辰達(dá)半導(dǎo)體 #產(chǎn)品經(jīng)理 #軟件工程師
新編電氣工程師手冊(cè)
解鎖LuatOS-log庫(kù):全棧工程師的日志管理實(shí)戰(zhàn)課!


(仰天長(zhǎng)嘯)為什么受傷的總是硬件工程師...#MDD#MDD辰達(dá)半導(dǎo)體 #電子工程師




硬件工程師的終極幻想:焊板子焊上人生巔峰!#半導(dǎo)體器件 #硬件工程師 #MDD辰達(dá)半導(dǎo)體

不同時(shí)期的硬件工程師,最怕發(fā)生的事 #電子工程師 #硬件工程師 #內(nèi)容過(guò)于真實(shí) #YXC晶振 #揚(yáng)興科技

當(dāng)你的工程師朋友失聯(lián)時(shí),別氣,ta真的是在忙工作 #搞笑 #電子愛(ài)好者 #硬件工程師 #晶振 #揚(yáng)興科技

硬件工程師VS軟件工程師|硬件工程師看到這都淚目了!#硬件設(shè)計(jì) #硬件工程師 #電子工程師 #軟件工程師
FPGA算法工程師、邏輯工程師、原型驗(yàn)證工程師有什么區(qū)別?


評(píng)論