核心觀點#
太多人以為「專精某項技術」只是意味著不懂其他東西。真正的專家不是淺層的標籤專家,而是像醫學專家一樣,對自己的領域有深入到底層的理解。
淺層專家的問題#
- 作者在招聘 Java 專家時,問了一個簡單的問題:「如何用純 Java 讓 JVM crash?」自稱 9 分(滿分 10)的候選人完全答不上來,甚至連反向思考(如何寫一個不會 crash 的程式)都做不到。
- 數千名 Java「專家」申請職位,幾乎沒有人能解釋 class loader 的運作原理或 JVM 的記憶體管理機制。
- 這些人用 specialist 這個詞作為只懂一件事的藉口,而非真正的深度專精。
如果你是 .NET 專家,那意味著所有跟 .NET 相關的事你都是權威。IIS server 掛了?「沒問題。」效能出了詭異的問題?「給我三十分鐘。」如果這不是你對 specialist 的定義,那請不要自稱專家。
真正的專家#
- 在醫學中,專家是對特定領域有深入理解的人,能在特定情況下提供比全科醫生更好的照護。
- 軟體領域的專家應該深入理解程式語言與部署環境,能處理 80% 的情境,剩下 20% 的知識深度能讓生活輕鬆得多。
- 使用高階抽象時,應該理解抽象背後的實作細節。
行動建議#
- 如果你的語言在虛擬機上執行,花時間學習 VM 的內部機制。了解原始碼如何變成電腦可以執行的指令、外部函式庫如何被引入和連結。
- 找機會教授你想深入的技術主題。教學是最好的學習方式之一。