Seven philosophical advantages for programmers

當程式碼需要智慧:程式人的七個哲學優勢

獨立專題 | 閱讀時間:18分鐘 | 概念:哲學思維(Philosophical Thinking)— 程式設計師的隱藏超能力

作者:Wina @ Code & Cogito


那次 Code Review 的沉默

那是一場氣氛凝重的 code review。

資深工程師看完我寫的推薦演算法,沉默了很久,然後問了一句跟技術完全無關的話:

「你覺得這個演算法『應該』推薦什麼給使用者?」

我愣住了。我花了三天優化點擊率,卻從沒想過這個問題。

「點擊率最高的內容,」我回答。

「那如果點擊率最高的是假新聞呢?」

那天晚上,我打開了一本哲學書。不是因為好奇,而是因為我發現——我的程式碼在做決定,而我不知道它憑什麼。

這篇文章,獻給每一個寫過 if 卻沒想過「憑什麼」的程式人。


為什麼是「七個」?

不是因為七是幸運數字。而是因為在十幾年的寫程式生涯中,我發現哲學訓練帶來的優勢,恰好可以歸納成七個明確的維度。每一個都不是空泛的「提升思維」,而是你明天上班就能用到的實戰能力。


優勢一:批判性思維——Debug 人生的底層能力

哲學的核心是批判性思維與邏輯推理。這聽起來像老生常談,但讓我給你一個具體場景。

分析問題的本質

你的服務掛了。監控顯示 CPU 飆到 100%。大多數人的反應是「加機器」。

但哲學訓練過的思維會問:這是症狀還是原因?

# 工程師的直覺:治療症狀
def fix_high_cpu():
    add_more_servers()  # 花錢,但沒解決根因

# 哲學式思維:追問本質
def investigate_high_cpu():
    root_cause = trace_back_to_origin()
    # 也許是一個 O(n^2) 的迴圈
    # 也許是一個沒有 index 的查詢
    # 也許是需求本身就有問題
    return fix_root_cause(root_cause)

哲學訓練我們深入問題的根源,而非僅僅修補表面。這在除錯時,幫助你找到真正的原因。

建構嚴謹的論證

程式碼本質上就是一系列邏輯論證的體現。每個函數都是一個論證:「給定這些前提(輸入),我能得出這個結論(輸出)。」

哲學中的邏輯學訓練——命題邏輯、謂詞邏輯、推理規則——直接對應你每天在寫的條件判斷和資料流。差別只在於,哲學家用自然語言,你用 Python。

識別隱含假設

每一個 bug 的背後,都有一個錯誤的假設。

「使用者一定會輸入數字。」「網路一定是通的。」「這個 API 回傳格式一定不會變。」

哲學教你識別推理中的謬誤和隱含假設。當你開始用這種眼光看程式碼,你會發現到處都是沒被檢驗的前提。


優勢二:倫理思辨——你的程式碼有道德責任

這是最被低估的一個優勢。

科技倫理不是選修課

從功利主義到義務論,不同的倫理學派為你提供了評估技術決策的工具。

# 功利主義式決策
def utilitarian_decision(action):
    total_happiness = sum(impact for impact in action.all_impacts())
    return total_happiness > 0

# 義務論式決策
def deontological_decision(action):
    return not action.violates_user_rights()

# 真正負責的程式人:兩者都考慮
def responsible_decision(action):
    is_beneficial = utilitarian_decision(action)
    is_ethical = deontological_decision(action)
    return is_beneficial and is_ethical

當你開發 AI 系統或處理使用者數據時,這些倫理框架幫助你做出負責任的選擇。不是因為法律要求,而是因為你寫的每一行程式碼都在影響真實的人。

隱私權與自由的平衡

哲學中關於個人自由與集體利益的討論,對設計涉及隱私權的系統有重要指導意義。「我們能收集這個數據」和「我們應該收集這個數據」是兩個完全不同的問題。

演算法公平性

正義理論幫助你思考如何確保演算法的公平性。當你的模型對某些群體產生系統性偏見時,你需要的不只是技術調參——你需要一個思考框架。


優勢三:抽象建模——從概念到架構

哲學培養的抽象思維能力,對程式設計師極為珍貴。

本體論:萬物的設計圖

哲學中的本體論探討事物的本質和存在方式。聽起來很玄,但你每次設計資料模型時,都在做本體論的工作。

「使用者」是什麼?是一個帳號?一個人?一組權限的集合?

你的 schema 設計,就是你對世界的本體論立場。

# 不同的本體論,不同的設計
class User_as_Account:
    email: str
    password_hash: str

class User_as_Person:
    name: str
    preferences: dict
    relationships: list

class User_as_Role:
    permissions: set
    context: str

每一種設計都隱含著對「使用者本質」的不同理解。哲學訓練幫助你意識到這些選擇,而不是無意識地做出假設。

系統性觀點

哲學強調整體性思考,幫助你不僅關注程式碼的細節,更要考慮整個系統的運作和與環境的互動。這就是為什麼最好的架構師往往也是最好的思考者。


優勢四:溝通與協作——跨越語言的鴻溝

程式設計絕不是孤立的活動。

精確使用語言

哲學訓練精確使用語言和概念的能力。這幫助你更好地撰寫文檔、與團隊溝通技術概念,以及與非技術背景的利害關係人對話。

你有沒有發現,最難寫的不是程式碼,而是把你做的事情解釋給不寫程式的人聽?

理解不同觀點

哲學教你理解和評估不同的觀點,而不是急著反駁。在 code review 中,這意味著你能真正理解別人為什麼選擇了不同的方案,而不是堅持「我的方法比較好」。

建設性的辯論

哲學培養進行建設性辯論的技巧。你會學到:攻擊論點而非攻擊人、承認對方論證中的合理之處、修正自己的立場而不覺得丟臉。這在技術決策討論中極為寶貴。


優勢五:創新思維——打破框架的勇氣

質疑既有假設

「我們一直都是這樣做的」——這句話殺死了多少創新?

哲學訓練你質疑看似理所當然的事物。為什麼資料庫一定要用關聯式的?為什麼前後端一定要分離?為什麼部署一定要走 CI/CD?

不是說這些做法不對,而是你需要知道為什麼它們是對的——這樣當情境改變時,你才能看到新的可能。

處理不確定性

哲學教你在不確定性中思考和行動。在快速變化的科技領域,這種能力幫助你適應新技術和不斷變化的需求。

那些能從容面對「我不知道」的工程師,往往比「我什麼都知道」的人走得更遠。


優勢六:理解計算的本質

哲學與計算科學有著深刻的歷史淵源。

心智哲學與 AI

對意識和智能本質的哲學思考,直接影響人工智慧的發展方向。當你建立一個 chatbot 時,你其實在回答一個兩千年前的問題:什麼是「理解」?

語言哲學與程式語言

對語言本質的哲學思考,有助於理解程式語言的設計原理和局限性。維根斯坦說「語言的界限就是世界的界限」——對程式語言來說也是如此。你選擇的語言,決定了你能表達什麼。

知識論與資訊系統

對知識本質的哲學探討,為設計知識管理系統和資料庫提供理論基礎。資料不等於資訊,資訊不等於知識,知識不等於智慧——這個層次關係,每個設計資料架構的人都該理解。


優勢七:長遠視野與人文關懷

技術快速發展的同時,程式設計師需要保持人文關懷。

技術的社會意義

哲學幫助你思考技術在社會中的角色和意義,避免純粹的技術導向思維。

有一種工程師,能寫出完美的程式碼,卻不在乎它被用來做什麼。另一種工程師,不只問「怎麼做」,還問「為什麼做」和「應不應該做」。

第二種人,才能真正改變世界。

可持續發展意識

環境哲學和可持續發展理論指導你考慮技術的長期影響。你的系統會消耗多少能源?會產生多少電子廢棄物?這些不只是 ESG 報告的填充內容,而是真實的哲學問題。

文化敏感性

哲學中的文化相對主義幫助開發跨文化的軟體產品。你的 UI 預設是左到右閱讀嗎?你的「預設值」反映了誰的文化假設?


如何開始:給程式人的哲學入門路線

不需要從頭讀柏拉圖全集。以下是一條實用的入門路徑:

第一步:邏輯學基礎
學習形式邏輯、命題邏輯和謂詞邏輯。這些直接對應程式設計中的邏輯運算,你會發現很多東西早就會了,只是沒有系統化。

第二步:倫理學經典
從亞里斯多德的《尼各馬科倫理學》開始,然後是康德的倫理學。不需要讀原文,好的導讀就夠了。重點是理解不同倫理框架的思考方式。

第三步:認知科學與心智哲學
了解意識和認知的哲學討論。如果你在做 AI 開發,這一塊特別有價值。

第四步:科學哲學
學習科學方法論和科學理論的哲學分析。這有助於理解軟體工程方法論——為什麼敏捷開發有效?為什麼 TDD 的邏輯和科學方法一致?


結語:走得快與走得遠

哲學不是程式設計師的額外負擔,而是提升專業能力的重要工具。

具備哲學素養的程式設計師能夠:

  • 寫出更清晰、更可維護的程式碼
  • 做出更負責任的技術決策
  • 與團隊和使用者進行更有效的溝通
  • 在快速變化的技術環境中保持適應性
  • 為技術發展貢獻更深層的洞察

技術能力決定了你能走多快,但哲學素養決定了你能走多遠。

回到開頭那場 code review。

後來我重新設計了那個推薦演算法。不只優化點擊率,還加入了內容品質的權重、多樣性的考量、以及使用者長期滿意度的指標。

那位資深工程師看完後,只說了三個字:「這才對。」

那是我第一次覺得,寫程式不只是在寫程式。


延伸閱讀:本文主題與「程式人的哲學思辨」系列相關,特別是 #00 導讀:為什麼程式人需要哲學?,該篇從系列角度完整介紹程式思維與哲學的交會點。

Similar Posts

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *