說「不」 (Saying No) #
專業人士的標誌:敢於說「不」 #
作者在第二章提出了一個反直覺觀點:專業軟體工程師最明顯的特徵之一,就是敢於對不合理要求說「不」。
這並非出於頑固或懶惰,而是為確保整體決策的正確性。當面對無法達成與不合理的時程或需求時,說「好」是說謊,說「不」才是負責表現。
1. 追求「最佳可能解」 #
為什麼要說「不」?因這是你身為專業人士的職責所在。
- 捍衛目標:商業部門的目標是功能與時程,工程部門的目標是品質與可行性。這兩者本質上存在衝突
- 良性對抗:你須盡力捍衛自身的專業目標(如代碼品質、測試覆蓋率),透過與業務方的磨合與談判,才能讓公司在兩難中找到最佳可能解
如果你總是無條件點頭,你就剝奪了公司做出正確權衡與決策的機會。
唯有雙方都堅持自己的立場並溝通,才能產出最好結果。
2. 時局越關鍵,「不」越珍貴 #
在專案最緊急、壓力最大的時刻,說「不」變得極度困難,但也最為重要。
- 高昂的代價:當錯誤決策的成本極高時(例如關鍵發佈前夕),若你明知做不到卻因壓力而說「好」,後果將是災難性的
- 誠實的勇氣:在關鍵時刻,你的「不」字代表對現實狀況的誠實評估,這對決策者來說是極具價值的資訊
3. 重新定義「團隊精神」 #
許多人誤以為團隊精神就是「配合度高」、「不唱反調」,作者對此提出了修正。
- 真正的合作:具備團隊精神的人會頻繁與人交流、關心隊友
- 不總是說「好」:當隊友或專案正駛向冰山時,真正的團隊精神是大聲警告,而不是跟著一起沈默撞船
4. 警惕「試試看 (Trying)」與「英雄主義」 #
當被要求完成不可能的任務時,工程師常會說「我會試試看」或是試圖成為拯救專案的英雄。這往往是惡夢的開始。
勉強達成的後果 #
即便你勉強自己和團隊,透過加班或犧牲品質來盡力達標,結果往往不如預期:
- 對方不會珍惜:業務方通常無法理解你背後犧牲了多少(如技術債、個人健康),他們只會認為「原來只要逼一下,你們還是做得到」,進而將這種不合理節奏常態化
- 品質崩壞:所謂的「試試看」,通常意味跳過測試、忽略重構,最終導致軟體結構腐爛
英雄主義的誘惑 #
成為「拯救專案的英雄」是種巨大誘惑,讓人感到被需要與充滿力量。但專業人士知道:
- 這是個陷阱:英雄式的趕工雖然短期有效,但後續往往會產生更多麻煩(Bug 激增、維護困難)
- 專業的選擇:專業人士會選擇穩定的產出,而不是依賴奇蹟式的英雄行為
當你說「我會試試看」時,你其實是在承認你平常有所保留,或者是你準備開始犧牲品質。
專業人士不「試」,他們只承諾他們做得到的,並拒絕做不到的。