🎯 什麼情境該想到我

當你被要求「一定要在不可能的時程內做完」,或者面對不合理的要求卻不敢拒絕、只能說「我試試看」的時候。

出處:Robert C. Martin《程式設計師的職業素養》(The Clean Coder)第 2 章「說不」與第 3 章「說是」(站內為掃描版 PDF,引文依 OCR 核對,保留原書簡體字)。

⚙️ 怎麼用

說「不」是盡職,不是不合作(第 2 章)

原書的觀點是:經理和程式設計師是對抗角色,而這對雙方都有利。

「每位经理都承担着工作职责……其中一部分的工作职责,便是要竭尽所能追求和捍卫他们设定的目标。」程式設計師也一樣。

「你的经理要求你在明天之前完成登录页面……如果你明知第二天之前不可能完成登录页面,嘴上却说”好的,我会试试的”,那么便是你失职了。这时候,唯一的尽职方式便是说”不,这不可能”。」

「可能的最好结果,是你和你的经理共同追求的目标。最关键的是要找到那个共同目标,而这往往有赖于协商。」

沒有「試試看」這回事

原書的分析:「尝试」的意思是「付出额外的精力」。

  • 「许诺”尝试”,就意味着你承认自己之前未尽全力,承认自己还有余力可施。」
  • 「只要你许诺自己会去”尝试”,你其实是在承诺你会确保成功。这样,压力就要由你自己来扛了。」
  • 「如果承诺尝试,你其实也在承诺将改变自己原来的方案……新方案是什么?」

原書的例子:經理 Mike 施壓,工程師 Paula 回答「好吧,我們會盡量試試」——Mike 把它當成「好的,沒問題」。

說「是」:承諾的三個步驟(第 3 章,Roy Osherove 撰寫)

「口头上说。心里认真。付诸行动。」

缺乏承諾的用語:

  • 需要/應當:「我們要把這活做完。」「有人應當負責去推動這件事。」
  • 希望/但願:「希望明天我能完成這個任務。」
  • 讓我們(而不是「讓我」):「讓我們把這事做完。」

原書說,這些說法的共同點是:說話的人「要么显得事情不在”我”的掌控范围内,要么不愿意承担个人责任」。

真正的承諾:「我将在……之前……」——例如「我將在星期二之前完成這個任務」。它是對自己將做的事的清楚陳述,而且有期限。

目標取決於別人時:承諾行動,不承諾結果

「你只能承诺自己能完全掌控的事。」你無法承諾模組能和另一個團隊的系統無縫整合,但可以承諾:

  • 和基礎設施組的同事坐下來,花一小時釐清模組間的依賴。
  • 建立一個介面,把對其他團隊的依賴抽象出來。
  • 本週內至少和負責建置的同事碰頭三次。
  • 寫自己的建置腳本做整合測試。

做不到時:越早說越好

「如果你无法兑现承诺,那么最重要的就是尽早向你的承诺对象发出预警,越快越好,越早越好。」——越早發出預警,團隊越有機會調整優先順序、找人結對、或改用另一個承諾代替。

在工作中的樣子

情境✗✓
不可能的時程「我盡量試試看。」「兩週內做不完全部。我可以在兩週內交付登入和註冊,付款流程需要再兩週。」
可以做到「應該可以吧。」「我會在週四下班前送出 PR。」
依賴其他團隊「我保證下週整合完成。」「我會在週二前跟 API 團隊確認介面,週三前完成我這邊的模擬測試。」
發現會延遲等到截止日才說一發現就說,同時提出選項

🧪 我實際套用的紀錄

  • 2026-07-15:(待填)

⚠️ 注意 / 什麼時候不適用

  • 說「不」要附上選項:原書強調要協商、找到共同目標,而不是單純拒絕。
  • 說「是」卻做不到,比一開始說「不」更傷信任。
  • 有些審閱者不同意「對抗角色」的說法:原書自己提到,一位審閱者很討厭這一章,說他的團隊從未有過對抗關係。作者的回應是,要做出艱難決定時,對抗角色間的衝突反而最有利。

🔗 相關工具