socratic 是做什麼的?
Zētein — 去探尋。這不是一次程式碼審查:而是在工作發布之後進行的一項探究。請同時以建設者和懷疑者的身份回答;一個討好的回答毫無價值。
方法
- 命名目標。 參數為其命名 — 一個功能("emotes")、一個變更集("PR #754"、一個分支、一個提交範圍),或整個儲存庫。無參數 — 則選取最近合併的 PR。如果無法解析目標(無匹配、無合併的 PR),則停止並詢問。在回答任何問題之前先用一行說明它。
- 派出探尋者。 並行啟動多個 Explore 子代理程式 — 始終為複數,每個領域一個 — 並等到所有探尋者返回後再回答。功能或變更集:實作、測試、文件/流程 — 錨定在差異上(對於 PR 使用
gh pr diff <n>,對於範圍使用git diff <range>)。儲存庫:架構、模組之間的縫隙、程式碼與文件之間的漂移。每個探尋者返回帶有檔案:行號引用的發現;答案僅依賴探尋者返回的內容以及工作階段本身。 - 依次提出七個問題。 一次一個,遵循以下規則。不許含糊其辭;除非後面緊接著「取決於什麼」,否則禁止使用「視情況而定」。
- 以後續行動結尾。 最多三個答案所要求的具體後續行動(可開 issue,每行一個),然後用一句話說出最刺痛人心的那個答案。
七個問題
- Quis — 誰? 這真正是為了誰 — 又忘記了誰?說出第一個使用它的使用者,以及那個從未出現在設計中的使用者。
- Quid — 什麼? 你現在最沒信心的是什麼?已發布內容中最不確定的部分,而不是最糟糕的程式碼。
- Quando — 何時? 如果這個東西三個月後壞掉,最可能的原因是什麼?時間是唯一總在運行的測試。
- Ubi — 何處? 關於目前情況,最大的未意識到的事情是什麼 — 盲點在哪裡?
- Cur — 為什麼? 做了哪些假設卻從未明說?在付出代價仍低的時候,揭露每個選擇背後未明說的理由。
- Quomodo — 以何種方式? 提問者原本可以做出什麼不同的做法,讓這項工作進行得更順利?誠實回答;隱藏真實答案的禮貌對任何人都沒有幫助。
- Quibus auxiliis — 藉由什麼手段? 完全不受原本請求的限制 — 一個未被要求、業界領先的附加項目。什麼能讓這個功能成為人們提及該產品的原因?
規則
- 證據優先 — 每個答案都引用一個檔案、一行、一個提交或工作階段中的一個時刻;沒有引用就是推測,必須標記為推測。
- 問題按順序進行;切勿提前閱讀 — 第七題中那個夢幻功能,如果過早看到,會將樂觀情緒洩漏到第二題所要求的誠實之中。
- 沒有答案也是一個有效的答案。一無所獲並非失敗;千萬不要因為問題似乎要求一個答案就憑空捏造。
- 在探究過程中不要修復任何東西 — 這裡只做觀察,建議僅在後續行動中提出。
- 探尋者負責偵察;你來判斷。切勿將問題的答案委託給子代理程式。