[很是有感觸]程序員
最近我爲一個內核程序員的職位面試了十幾個候選人。這些候選人都來自一些不錯的大公司,這些公司在芯片或嵌入式操做系統領域十分有名。這些候選人大多聲稱本身在內核方面有着十年的在職工做經驗。他們的簡歷看起來很是耀眼——各類相關的項目、術語和獎項……面試
但他們幾乎無人可以回答一個很是基礎的問題: 當咱們調用標準的 malloc 函數時,內核中會發生什麼?緩存
先別吃驚。當我要求其中一位候選人基於 glib 的哈希函數寫一個簡單的 LRU 緩存框架時,他先是表示歷來沒用過 glib——如我所料——因而我幫他打開了 glib 哈希 API 的頁面,並向他詳細講解了這些 API;而後大約一個小時之後,他只寫出幾行凌亂的代碼。框架
我不知道其它國家是否也有相似的狀況,但在中國,或者更具體一些,在北京,這就是現狀。那些在不錯的大公司裏工做了多年的「資深」程序員們沒法在一些簡單的、基本的問題上證實本身。函數
(Credit: flickr)編碼
當我在這個問題上思索得越多,我就更加相信,這不只有他們自身的緣由,同時也歸咎於他們所供職的這些公司。這些公司一般提供了一個穩定的代碼堆,每每幾年都不會有大更新。這些代碼的專有技術把人們的技能框進一個定式,以至於他們只須要遵循現有的路徑,而不須要發揮創意。若是你碰巧爲這類代碼工做,並且與世隔絕了很長一段時間,那麼有一天你會發現你本身已經陷入一個可悲的位置——他們在團隊或公司內稱呼你爲 「 專家 」,但不幸的是,你沒法在市場上找到一份同等待遇的工做。spa
這就叫做 「 專家陷阱 」。日復一日,程序員們都渴望在團隊或公司內成爲一名專家;可是,當那一天真正到來時,咱們卻早已做繭自縛。咱們在既有代碼中鑽得越深,咱們本身就陷得越深。既有代碼是如此穩定(如此寵大、如此好用),讓咱們漸漸地失去了從無到有獨立編寫完整項目的能力。更糟糕的是,若是咱們的主要工做就是維護這些既有代碼、不多開發新功能,那麼過不了多久,不管研讀了多少代碼,咱們都會發現本身不會寫代碼了——哪怕是一個像畢業大做業那樣簡單的任務。這就是程序員的困境: 咱們以編碼爲生,但那些養活咱們的大公司卻在無形中磨滅了咱們的生存技能。操作系統
對於我的:cdn
對於團隊和公司:blog