- 代碼整潔之道:程序員的職業素養
- (美)羅伯特·C.馬丁
- 1588字
- 2025-01-09 17:19:11
第2章 說“不”

“能就是能,不能就是不能。不要說‘試試看’。”
——尤達
在20世紀70年代初,我和兩位19歲的朋友在一家名叫ASC的公司工作,為芝加哥卡車司機工會開發實時會計系統。如果你馬上想到Jimmy Hoffa[1]這樣的名字,那也是很自然的,1971年那會兒,沒人敢跟卡車司機工會的兄弟們搗亂。
我們的系統預期應在某個日子前上線,是的,那一天可事關一大筆錢。為了能按時交付系統,我們的團隊加班加點,每周工作60、70甚至是80小時,好幾周接連如此。
上線前一周,我們終于將系統完整搭起來了,不過還有很多待解決的bug和問題,我們按清單瘋狂地進行排查解決。當時大家幾乎連吃睡都顧不上了,更別提有什么單獨思考的時間了。
ASC的經理Frank是一位退役的空軍上校。他是那種會直沖著你咆哮的經理。這是他的行事風格,或者說是慣用手段吧。他會不給降落傘就直接將你從3 km的高空扔下去,迫使你按著他的指令辦事。我們這些19歲的小年輕當時根本不敢看他的眼睛。
Frank命令我們必須按期完工。就那么定了。到期交貨。完畢。不容置喙。然后拂袖而去!
我的直屬上司Bill人挺不錯。他已經和Frank共事了好些年頭,知道Frank是什么樣的人。他告訴我們,不管如何都必須按期上線。
因此,那天我們就把系統上線了。事實證明,那簡直是個悲劇。
我們的機器放在離卡車司機工會芝加哥總部50 km以北的郊區,中間通過十幾個300波特的半雙工終端連接。這些終端差不多每半小時就會鎖住一次。上線之前我們已經碰到過這個問題,但沒有模擬過工會的數據錄入員們往系統里猛灌數據時產生的大數據流情況。
更糟糕的是,通過110波特的電話線連接到我們的系統的ASR35電傳打字機,在單據打印到一半時可能罷工。
要解決打印中止的故障,需要重啟系統。因此,客戶只得讓那些終端還能運行的人趕緊完成手頭的工作,然后停下來。等大家都停下來后,他們讓我們重啟系統。此后,那些打印被中止的人又只好再重頭來過。這種狀況每小時都會發生,而且不止一次。
就這樣折騰了半天,卡車司機工會的辦公室經理要我們關掉系統。他告訴我們,除非系統能正常工作,否則就不要再啟動了。在這過程中,他們白費了大半天的工夫,最后不得不在舊系統上再重新錄入一遍。
Frank大發雷霆,整棟大樓都能聽到他的咆哮聲,久久不散。于是Bill和我們的系統分析師Jalil過來問我們,什么時候才能讓系統穩定下來。我說:“4周。”
他們嚇壞了,轉而一臉決絕地說:“不行,在周五之前必須讓系統跑起來!”
“要知道,我們上周才勉強讓系統跑起來。我們需要時間把問題解決干凈,讓系統穩定下來。4周不夠。”我答道。
但是Bill和Jalil也很頑固:“不行,一定要在周五前。你們至少也該試一試吧?”
我們的組長于是說:“好吧,我們試試看吧。”
周五這個點選得不錯,周末的系統負載比工作日的會小很多,這樣在周一之前我們還可以發現更多問題并解決。盡管如此,情況還是很不樂觀,險象環生,打印中止的故障每天仍會發生一兩次,此外還有其他問題也暴露出來了。慢慢地又過了幾周,對系統問題的抱怨終于逐漸消停下來,似乎一切回復正軌了。
不過隨后我們就都辭職不干了,這點我在前面的介紹部分也已經提到過。而他們還未真正擺脫危機,于是不得不另外招了一批程序員來應付客戶那邊不斷涌來的問題。
誰應該為這場災難負責呢?顯然,Frank的處事風格有問題,他對別人的威迫感妨礙了他自己聽到事情的真相。當然,Bill和Jalil本該更努力地阻止Frank的決定,我們的組長也不該屈從于周五完工的指令,而我也本該繼續說“不”,而不是乖乖站到組長那邊去。
專業人士敢于說明真相而不屈從于權勢。專業人士有勇氣對他們的經理說“不”。
你怎么能對自己的老板說“不”呢?畢竟,他們可是你的老板啊!難道不該照你老板說的去做嗎?
不應該照做。只要你是一名專業人士,那就不應該照做。
奴隸沒有權利說“不”。勞工或許也對說“不”有所顧慮。但是專業人士應該懂得說“不”。事實上,優秀的經理人對于敢于說“不”的人,總是求賢若渴。因為只有敢于說“不”,才能真正做成一些事情。
- Learning Microsoft Windows Server 2012 Dynamic Access Control
- The Supervised Learning Workshop
- C++程序設計(第3版)
- Java 開發從入門到精通(第2版)
- Flink SQL與DataStream入門、進階與實戰
- Learning Elixir
- C語言程序設計實訓教程
- Django Design Patterns and Best Practices
- Mastering Ext JS
- Learning JavaScript Data Structures and Algorithms
- Visual Basic程序設計實踐教程
- Access 2010中文版項目教程
- C#程序設計(項目教學版)
- C語言程序設計實踐
- Learning D3.js 5 Mapping(Second Edition)