最近我為一個(gè)內(nèi)核程序員的職位面試了十幾個(gè)候選人。這些候選人都來自一些不錯(cuò)的大公司,這些公司在芯片或嵌入式操作系統(tǒng)領(lǐng)域十分有名。這些候選人大多聲稱自己在內(nèi)核方面有著十年的在職工作經(jīng)驗(yàn)。他們的簡歷看起來非常耀眼——各種相關(guān)的項(xiàng)目、術(shù)語和獎(jiǎng)項(xiàng)……
但他們幾乎無人能夠回答一個(gè)非常基礎(chǔ)的問題: 當(dāng)我們調(diào)用標(biāo)準(zhǔn)的 malloc 函數(shù)時(shí),內(nèi)核中會(huì)發(fā)生什么?
先別吃驚。當(dāng)我要求其中一位候選人基于 glib 的哈希函數(shù)寫一個(gè)簡單的 LRU 緩存框架時(shí),他先是表示從來沒用過 glib——如我所料——于是我?guī)退蜷_了 glib 哈希 API 的頁面,并向他詳細(xì)講解了這些 API;然后大約一個(gè)小時(shí)以后,他只寫出幾行凌亂的代碼。
我不知道其它國家是否也有類似的情況,但在中國,或者更具體一些,在北京,這就是現(xiàn)狀。那些在不錯(cuò)的大公司里工作了多年的“資深”程序員們無法在一些簡單的、基本的問題上證明自己。
這到底是怎么回事?
當(dāng)我在這個(gè)問題上思索得越多,我就更加相信,這不僅有他們自身的原因,同時(shí)也歸咎于他們所供職的這些公司。這些公司通常提供了一個(gè)穩(wěn)定的代碼堆,往往幾年都不會(huì)有大更新。這些代碼的專有技術(shù)把人們的技能框進(jìn)一個(gè)定式,以致于他們只需要遵循現(xiàn)有的路徑,而不需要發(fā)揮創(chuàng)意。如果你碰巧為這類代碼工作,而且與世隔絕了很長一段時(shí)間,那么有一天你會(huì)發(fā)現(xiàn)你自己已經(jīng)陷入一個(gè)可悲的位置——他們在團(tuán)隊(duì)或公司內(nèi)稱呼你為 “ 專家 ”,但不幸的是,你無法在市場上找到一份同等待遇的工作。
這就叫作 “ 專家陷阱 ”。日復(fù)一日,程序員們都渴望在團(tuán)隊(duì)或公司內(nèi)成為一名專家;但是,當(dāng)那一天真正到來時(shí),我們卻早已作繭自縛。我們在既有代碼中鉆得越深,我們自己就陷得越深。既有代碼是如此穩(wěn)定(如此寵大、如此好用),讓我們漸漸地失去了從無到有獨(dú)立編寫完整項(xiàng)目的能力。更糟糕的是,如果我們的主要工作就是維護(hù)這些既有代碼、很少開發(fā)新功能,那么過不了多久,無論研讀了多少代碼,我們都會(huì)發(fā)現(xiàn)自己不會(huì)寫代碼了——哪怕是一個(gè)像畢業(yè)大作業(yè)那樣簡單的任務(wù)。這就是程序員的困境: 我們以編碼為生,但那些養(yǎng)活我們的大公司卻在無形中磨滅了我們的生存技能。
如何打破這種困境?
對于個(gè)人:
首先, 打造你自己的私人項(xiàng)目。你需要不斷地打磨自己的技藝。如果工作本身并不能幫助你做到這一點(diǎn),就撿起那些你感興趣的問題,然后用你的私人時(shí)間去攻克它。通過這個(gè)方法,你應(yīng)該會(huì)學(xué)到新東西。如果把你的私人項(xiàng)目發(fā)布出去,比如在 GitHub 上,你說不定會(huì)認(rèn)識一些人,幫助你大踏步地向前邁進(jìn)。
不要在一個(gè)團(tuán)隊(duì)中停留超過兩年。強(qiáng)迫你自己四處轉(zhuǎn)轉(zhuǎn),哪怕在是同一家公司內(nèi),你會(huì)面對新的挑戰(zhàn)和新的技術(shù)。試著每隔 18 個(gè)月就出去面試工作。你并不需要真的換工作,但是這能讓你看到真實(shí)的市場需求,以及怎樣與時(shí)俱進(jìn)。
對于團(tuán)隊(duì)和公司:
給予員工壓力和挑戰(zhàn)。實(shí)行輪崗制度,讓“專家”們有機(jī)會(huì)拓展他們的技能。啟動(dòng)新項(xiàng)目,用戰(zhàn)役來磨煉你的勇士。
周期性地舉辦黑客馬拉松活動(dòng)。這有助于營造一種崇尚創(chuàng)新和創(chuàng)作的企業(yè)文化,人們會(huì)受到同伴的激勵(lì)——“擦,這個(gè)***居然可以在 24 小時(shí)內(nèi)寫出這么漂亮的框架,我也得加把勁兒了!”
-
程序員
+關(guān)注
關(guān)注
4文章
952瀏覽量
29799
發(fā)布評論請先 登錄
相關(guān)推薦
評論