iT邦幫忙

2026 iThome 鐵人賽

DAY 13
0

昨天寫到 cyclone-hermes PR #140 的第二輪審查。第二輪裡有一條意見,變成我在這個系列裡反覆想起來的一課。

先講清這件事在吵什麼。我的升級前檢查腳本裡,有一小段工作的用意很單純:找出最近 36 小時內產生的備份檔,確認備份流程有在跑。寫程式的時候,「最近 36 小時」有幾種不同的寫法,我當時用的是其中一種。

第二輪審查時,reviewer 對著這一行提出質疑:這種寫法在 Linux 的電腦上有效,在蘋果電腦上會直接出錯。而我每天在用的正是蘋果電腦。如果它說得對,我這一行等於從來沒有成功運轉過。

我聽到的當下,有兩種馬上能選的反應。第一種是照單全收:它說不對,我就改,何必多問。第二種是硬拗回去:我想我以前用過,應該沒問題。

兩種我都沒有選。第一種,是把對錯的判斷全讓給它;第二種是憑我自己的印象,跟它看誰聲音大。這兩種都不會讓我們更接近真相,只是把決定權搬到言語往來的聲勢裡。

先跑,再回答

我做的是第三件事:進到那台真的會執行這段程式的機器,把那個指令原封不動打進去,看會發生什麼。

結果它正常跑完,一次不差地列出了我要找的兩個備份檔。

在 reviewer 說會失敗的電腦上,這行指令好好地運作著。它對我的質疑,錯了。

我把這個結果照實寫在 PR 留言裡,附上我實際跑了這個指令、機器回傳正常的紀錄。要反駁,靠的是這些,不是我認為自己對。

我贏了那一行,然後我還是改了

真正讓我花了一點時間才想通的是下一步。

實驗之後,那條質疑在我手上站不住腳。但接下來,我還是照 reviewer 一開始的方向,換成了另一種所有電腦都看得懂的寫法。

這是我的決定,也和那場辯論的輸贏沒有關係。

原因是:我的實驗只證明了「這一行,在我這台機器,今天沒有出錯」。它是有效的一次樣本。換一天、換一台機器會怎樣,沒有證明。reviewer 建議的寫法,背後的保障比較寬:不管哪一種電腦都看得懂。

所以那場辯論的最後結果是,reviewer 錯了一半:那行在我機器上能用,但它的確不是最通用的寫法。我錯了的那一半,是我一開始選了通用性較低的寫法。兩邊拿證據對照完之後,整段程式碼換成比較穩的做法,這個結果比原本的任何一種選擇都好些。

最後裁決權在證據

這次攻防我後來歸納成三件事:reviewer 的質疑可以挑戰;我要挑戰,只能拿重現得出的紀錄,不能憑印象或嗓門;最後落在哪一邊,不看誰說得比較會講,看的是跑出來的結果。

同一輪還有另外兩條意見,一條合理,改掉了安裝程序的檢查範圍;一條是小問題,順手處理掉。這兩條都沒有走到挑戰那一步,安靜地修完了。但這兩天真正想寫下來的,是這一條的形狀:review 流程最需要不是令挑戰變得困難,而是有一個放證據的位置,讓每一條質疑最後都變成「親自跑一次」的結果對照。

明天

那個 PR 進到第三輪的時候,碰到一條我自己訂的規則:審了兩輪還沒有結束,就必須停下來問人。明天寫收斂的判準。


上一篇
12 Round 1: changes-requested —— 一次真實攻防
下一篇
14 什麼時候該收手?review 迴圈的收斂判準
系列文
國小教師的 Agent OS:30 天讓 AI 的「做完了」有證據14
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言