2174 字
12 分鐘
請注意,本文編寫於 5 天前。
👁️ 程序員的宿命:隱性知識與工匠精神
Cover image for 👁️ 程序員的宿命:隱性知識與工匠精神

#一個沒有人說出口的困境

你花了三週做了一個帶熔斷降級、自動故障轉移和零停機部署的系統。

上線那天,老闆點開管理後台,點了幾下按鈕,說:「不錯,跑起來了。」

你知道這個系統在壓力峰值下的表現,知道它在某個節點宕機時的自愈流程,知道這個架構三年後還能支撐多少倍的流量。
但這些,沒有任何人會問起,也沒有任何人會在意。

這是程序員的宿命,幾乎每個認真做技術的人都會碰到它。

今天我想從兩個角度解釋它:一個是哲學家的解釋,說明為什麼是這樣;另一個是社會學家的回應,告訴你應該怎麼面對它。


#隱性知識:你知道的,比你說得出的更多

1966 年的著作《隱性維度》提出了一個影響深遠的觀察:

“We can know more than we can tell.”

——Michael Polanyi, The Tacit Dimension

這個框架區分了兩種知識:

顯性知識(Explicit Knowledge):可以被語言化、文字化、傳授的知識。比如演算法的時間複雜度、資料庫的索引原理、API 文件——這些可以寫成文章、印成教科書。

隱性知識(Tacit Knowledge):深植在實踐者身上、難以言傳的知識。比如一個資深工程師看一眼代碼就知道哪裡有潛在問題、一個架構師在設計階段就能嗅到未來的瓶頸、一個老手在估計工作量時的那種直覺——這些難以被教導,只能被積累。

書裡用「騎自行車」來比喻:每個人都知道怎麼騎車,但幾乎沒有人能用語言完整說明騎車的物理原理和身體協調機制。那個「知道怎麼做」和「能說清楚為什麼」之間的鴻溝,就是隱性知識的所在。

隱性知識的特徵
  • 只能在實踐中習得,無法純靠閱讀或聽課掌握
  • 往往以「直覺」或「第六感」的形式表現
  • 高度個人化,難以移轉給他人
  • 越複雜的工藝,隱性知識的比重越高

#技術深度是隱性知識的集合

這個概念直接解釋了程序員的困境:

好的代碼,好在隱性知識的部分。

外行人能看到的,是顯性知識的輸出——功能有沒有跑、界面是否順暢、速度夠不夠快。這些他們看得懂,因為這些是表面的結果。

但那些真正體現工程師水平的東西——在設計階段就預見了未來三年的流量增長、在邊界條件裡埋下了防禦性代碼、在壓力場景中的降級策略——這些不只是外行人看不懂,甚至初級工程師也可能看不懂。

它們是這個工程師多年積累下來的隱性知識的具象化。
它們只對有同等或更高程度積累的人,才是「可讀」的。

這就是為什麼你的最強代碼,99% 的人永遠看不懂。不是因為你做得不夠好,而是因為它需要隱性知識才能被閱讀。


#德雷福斯模型:從新手到專家的隱性化過程

在研究人類技能習得的過程中,有一個框架我一直覺得很準——技能習得五階段模型(Dreyfus Model of Skill Acquisition)——它把學習者分為五個階段:

階段特徵知識形態
新手(Novice)遵照規則,不知道為什麼純粹顯性
進階初學者(Advanced Beginner)開始辨識情境模式主要顯性
勝任者(Competent)能設定目標、有計畫地行動顯性+少量隱性
精通者(Proficient)整體感知,靠直覺辨識問題大量隱性
專家(Expert)不再需要規則,直覺即是答案主要隱性

這個模型說明了一件重要的事:越往高手方向走,你的知識越是以「隱性」的形式存在。

高手看問題不是靠一條一條推演,而是靠整體感知——他「感覺到」這個架構有問題,「嗅到」這段代碼有潛在風險,然後才去找顯性的解釋來驗證他的直覺。

這種「感覺」,正是多年隱性知識積累的表現形式。


#工匠精神:為什麼你應該在看不見的地方繼續做好

如果《隱性維度》解釋了「為什麼工程師的深度工作對外人是不可見的」,那麼 2008 年的著作《工匠》The Craftsman)裡給了我面對這件事的答案。

書裡的核心論點是:

“Craftmanship names an enduring, basic human impulse, the desire to do a job well for its own sake.”

——Richard Sennett, The Craftsman

工匠精神,是「為了把事情做好而做好」的衝動,而不是為了被看見、被認可、被回報。

《工匠》觀察到,當人類從事工藝性的工作時,一種特殊的滿足感出現了:不是來自外部的獎勵,而是來自工作本身完成得好的那個瞬間。 這種滿足感,是人類在工業化之前最普遍、也是最被忽略的一種快樂形式。

工匠精神的邊界

這個概念特別強調:工匠精神不是只關乎工藝品或手工業者,它存在於任何以「把它做好」為核心驅動力的工作中——包括醫生、教師,以及程序員。


#材料的阻力:代碼和你的對話

《工匠》裡還引入了一個有趣的概念:材料的阻力(Material Resistance)

當一位陶藝師傅在捏製陶器時,粘土不只是被動地服從他的意志——它有自己的物理特性,會抵抗、會裂開、會和師傅「對話」。正是在這種與材料的對抗和協商中,師傅學到了材料的本質,也訓練出了他的技藝。

對程序員而言,這個材料就是代碼本身:

  • Bug 不只是障礙,是代碼在告訴你它的邊界在哪裡
  • 效能瓶頸不只是問題,是系統在告訴你它的設計在哪裡撐不住
  • 維護困難不只是頭痛,是舊代碼在告訴你它的結構設計有什麼問題

書裡的觀點是:最好的工匠,是那些願意傾聽材料阻力的人,而不是那些只想「完成任務」的人。


#AI 時代的工匠精神:隱性知識更稀缺了

AI 代碼生成工具的出現,讓「寫出能跑的代碼」這件事的成本大幅降低。
這個事實,表面上看起來對工程師是威脅,但它其實揭示了一個更清晰的分水嶺:

AI 能生成顯性知識的輸出,但它無法生成隱性知識。

AI 可以寫一個 Redis 緩存的範例代碼,但它不知道在你這個特定業務場景下,這個緩存策略在黑色星期五流量下會不會雪崩。

AI 可以生成一段負載均衡的配置,但它不知道你的服務在某個特殊的硬體環境下,這個配置會帶來什麼副作用。

這些「知道什麼是對的、在這個特定情境下」——正是隱性知識的核心。而它只能從實踐積累中來,不能從 prompt 裡召喚。

AI 時代,隱性知識不是變得更不值錢,而是變得更稀缺、更有區分度。


#在看不見的地方繼續做

回到最開始的困境:你做了一個很好的系統,大多數人看不懂它好在哪裡。

《隱性維度》說明了:這是知識的本質,越深的理解越隱性,越隱性越只能被同等程度的人看見。
《工匠》回答了:這不是做好工作的理由消失了,反而是「為什麼而做」的問題變得更清晰了。

不是為了掌聲,是為了把它做對。

不是為了讓老闆看懂,是因為當這個系統在凌晨三點遇到突刺流量的時候,它能撐住。
不是為了炫技,是因為三年後維護這段代碼的人,能夠讀懂這裡的設計意圖,而不是罵你留下了一堆謎。

工匠精神的本質,是把標準設在「它應該是什麼樣」,而不是「別人能不能看出差別」。

這是程序員的宿命,也是程序員的驕傲。
接受它,然後繼續在沒人看見的地方做對的事。

👁️ 程序員的宿命:隱性知識與工匠精神
https://illumi.love/posts/生活向/程序員的宿命/
作者
𝑰𝒍𝒍𝒖𝒎𝒊糖糖
發布於
2026-04-18
許可協議
🔒CC BY-NC-ND 4.0
分享

如果這篇文章對你有幫助,歡迎分享給更多人!

💬 參與討論
使用 GitHub 帳號登入參與討論