說不與承諾的語言

★★★★Draft

FromThe Clean Coder

📚 From the Books

說不與承諾的語言專業素養

專業軟體工程師最明顯的特徵,就是敢於對不合理的要求說「不」。這不是頑固或懶惰,而是負責。面對明知做不到的時程,說「好」是說謊,說「不」才是誠實。而說「不」的另一面是正確地說「是」——用明確的承諾語言,把「我盡量」換成「我將在星期二完成 X」。

🧠 Core Ideas

TIP

當你說「我會試試看」時,你其實是在承認:你平常有所保留,或你準備開始犧牲品質。專業人士不「試」——他們只承諾做得到的,並拒絕做不到的。「試試看」聽起來合作,實際上什麼都沒承諾,只是把責任模糊化、把災難往後推。

⚖️ 當你無法承諾時,該承諾什麼

不敢承諾,往往是因為存在不可控因素。專業人士不會因此陷入沈默或含糊,而是把不確定性轉化為「自己能控制的行動」。

三種無法承諾情境的轉化
  • 依賴第三方:別承諾你控制不了的結果,改承諾你能控制的行動——「我無法承諾他們何時交付,但我承諾明天中午前聯繫他們,並每天追蹤直到取得回應」。

  • 需求或細節不清楚:承諾先做一個「探勘(Spike)」或先釐清達標條件,把不確定性轉化為已知資訊,縮短你與目標之間的距離。

  • 確定做不到:盡早通知相關人員。這是風險控管的一環——讓對方能及時調整計畫,而不是等到最後一刻才引爆。

🖼️ 堅守原則的協商,長什麼樣子

Uncle Bob 用一段對話示範「說是」的藝術。當 PM 逼問能否週五前完成一件其實要到下週二的工作,專業的回應不是屈服,也不是硬碰硬:

「這樣我得回答『不能』。為了要有十足把握完成,最快得等到下週二。」PM 追問有沒有加速的辦法,回應仍然堅定:「不,我沒法保證。我很抱歉讓你的進度被打亂,但我不能給出我做不到的承諾。」——重申立場,不因壓力妥協承諾的可靠性。若最後要交換,也是有條件的:「好吧,我會這週末加班完成,作為交換,我下週會休息到週三。」這不是無底線的退讓,而是等價交換,保護了自己的可持續性。這整段對話的底層邏輯是:對方問你,正是因為你是那個懂技術現實的人;順從地給出你知道做不到的承諾,才是真正的失職。而「盡量」之所以危險,是因為它給對方虛假的安全感(經理會當成「應該可以」上報)、讓你逃避真正的協商、並在一次次跳票後侵蝕你的專業信譽。

IMPORTANT

軟體領域最有價值的評價,是「這是位嚴謹負責(disciplined and responsible)的開發人員」。而這份評價的基礎,正是你只在真能做到時才說「是」,一旦說了就一定兌現——你的話之所以有分量,是因為它從不打折。

🔑 Takeaways

✍️ My Notes

No notes yet — jot your takeaways or Q&A here.

📖 Further Reading