程式設計師困境:底層編碼能力正逐步喪失
前段時間,@developerworks在微博上向大家推薦了一篇引人深思的文章《程式設計師困境》,這篇文章的作者描述了在招聘核心程式設計師時所遇到的一個現象,一些來自大公司的“高階”程式設計師,卻連最簡單最基本的問題都無法回答,這不禁引發了作者的思考,下面是筆者的簡譯:
最近,我為招聘核心程式設計師而面試了數萬個應聘者,有一些是來自有名的大公司,比如非常有名的晶片/嵌入式系統開發公司。許多人的簡歷製作的非常完美——涉及的各種專案、獲得的各種獎項等,並有一些人聲稱,他們在核心研發上有10多年的工作經驗,然而,令人驚奇地是,他們卻無法回答一些基本的問題:當呼叫標準的malloc函式時,核心發生了什麼?
別吃驚,當我讓一個應聘者編寫一個基於glib雜湊函式的LRU快取框架時,他首先聲稱自己從未使用過glib,於是我向他演示glib雜湊API頁面,並且詳細地解釋,然而一個小時後,他只寫了幾行凌亂的程式碼。我不知道在其它國家是否會有類似的情形,但在中國,或者更具體地說,在北京,這就是現實。那些“高階”程式設計師,在有名的外企工作幾年後,連一些簡單的、基本的問題都無法實現。
為什麼?
我愈加思考就愈加認為,這不僅僅是與程式設計師自身有關,更與其所在的公司環境有關。這些公司通常會提供穩定的堆疊程式碼,並且多年來一直沿用著,幾行沒有任何變化。程式設計師整天圍繞著這些程式碼工作,按照已有的思路去開發,無需自己動腦、去思考。如果長期在這樣的環境下工作,並且也沒有在外部進行提升和開闊,多年以後,你會發現自己處於很可憐的位置——在公司內部或團隊裡聲稱是“專家”,然而不幸地是,你卻不能在市場找到一個與之平等的工作。
這就是所謂的“專家陷阱”。在當程式設計師的第一天,我們就夢想著成為團隊/公司的專家,然而,當這一天到來,大家卻陷入了困惑。越深入到當前的程式碼中,陷的就越深。漸漸地,我們喪失了那種從頭開始建立完整專案的能力,因為現有的程式碼如此穩定。更糟糕的是,如果我們的主要工作僅僅是維護現有的程式碼,帶有一些細微的功能新增和改善,一段時間後,無論你讀過或學習過多麼牛逼的程式碼,你將會發現自己不再會寫程式碼——甚至是剛畢業那種簡單的程式碼。這就是程式設計師困境:我們通過編碼謀生,但環境卻正在摧毀我們這種謀生的能力。
如何跳出困境
對程式設計師個人來說,首先,做自己的專案;其次不要待在同一團隊超過兩年時間。
給團隊/公司的建議,給員工壓力和挑戰:輪流工作,讓“專家”有機會拓寬自己的技能。定期舉行黑客馬拉松:這將有助於建立一個擁抱創新和創造的文化氛圍。
那麼對於這種現象,微博上又有哪些互動呢?讓我們一起來看下:
皮皮彭:
這是大公司的通病,不僅僅是針對做技術的,其他任何職位也是一樣。公司大到了一定規模,很多事情就變得複雜了,不是那麼純粹了,很多人因此就會忘記了自己人生真正的目標和追求是什麼,到底是要創造出好的產品,還是為了完成某個任務?個人內心保持追求,公司層面力求簡化和純粹,是最重要的。
_陳_輝_:
非常同意文中的觀點,在技術日新月異的IT行業,“專家”這個詞其實是個危險訊號,意味著你的知識距離老化不遠了。IT工程師應該經常更換工作領域,瞭解多個領域的前沿問題,同時應該花一些時間在開源專案上。
Bzbee:
這個叫體制化。和電影裡說的道理一致。但也看你在公司的啥部門,如果在基礎部門或參與開源,這可以避免。當然從公司看,這樣人也需要。
BasketMan:
為什麼大公司是這樣,那是隻有大公司有能力和時間會把底層不變的技術形成框架,讓開發人員針對每天都在變的需求進行開發。那些在大公司寫核心底層的,是不會出現在人力市場的,早已都是大公司的管理人員了。
對此,各位程式設計師,你們又是持何種觀點呢?本文作者主要描述了程式設計師在大公司所面臨的問題,你們身處的環境如何呢?不妨和我們一起分享下吧。
英文來源:Programmer’s dilemma
相關文章
- 程式設計師程式設計能力層次模型程式設計師模型
- 程式設計師的困境程式設計師
- 最令程式設計師沮喪的 10 件事程式設計師
- 程式設計師是否需要學習底層知識程式設計師
- ios程式設計師提高程式設計能力萬無一失的辦法iOS程式設計師
- 程式設計師 vs 編碼員程式設計師
- 程式設計師正確看程式碼的方式程式設計師
- 程式設計師創業的兩難困境程式設計師創業
- 程式設計師的“能力陷阱”程式設計師
- 重建程式設計師能力(1)程式設計師
- 良少:程式設計能力層次模型程式設計模型
- 程式設計師如何提高抽象能力程式設計師抽象
- 細說計算機底層整型編碼機制計算機
- 深入iOS系統底層之程式中的彙編程式碼iOS
- 程式碼分層設計
- 程式設計師應該具備能力程式設計師
- Cursor,程式設計師的 AI 程式碼編輯助手程式設計師AI
- 最讓程式設計師沮喪的 10 件事,你中了幾槍?程式設計師
- 《Go 語言程式設計》讀書筆記(十一)底層程式設計Go程式設計筆記
- 程式設計師的十層樓程式設計師
- # iOS 一窺併發程式設計底層(一)iOS程式設計
- “有能力”的程式設計師和“熟練”的程式設計師誰更牛?程式設計師
- 程式設計師修煉之路 - 設計能力提升途徑程式設計師
- Java程式設計師的兩項通用能力Java程式設計師
- 程式設計師必備能力——晉升之道程式設計師
- 是那行程式碼,徹底改變了程式設計師的世界?行程程式設計師
- 程式設計師的十層樓(3)程式設計師
- 程式設計師的十層樓(2)程式設計師
- 程式設計師的十層樓(1)程式設計師
- 程式設計師的十層樓(0)程式設計師
- 程式設計師的十層樓(轉)程式設計師
- 程式設計師的十層樓(11)程式設計師
- 程式設計師的十層樓(10)程式設計師
- 程式設計師的十層樓(9)程式設計師
- 程式設計師的十層樓(8)程式設計師
- 程式設計師的十層樓(7)程式設計師
- 程式設計師的十層樓(6)程式設計師
- 程式設計師的十層樓(5)程式設計師