程序員,告訴他們被打斷的真實代價
對程序員來 說,打斷是低效率的最大原因之一。說實話,這種情況可能對任何人來說都是這樣,只是對程序員而言相更糟糕一些。我舉個例子來解釋吧,比如有一個做銷售的 人,他的大部分時間可能就花在接打電話或者在不同會議之間交替的途中了。在某一個會議上,或者某一次會議之前的回顧過程中,對銷售人員來說,一次中斷的代 價意味著他花在處理被打斷上的時間。比如一次搖頭,或者“我剛講到哪兒了?噢,我想起來了。”
再比如一個經理,他的一天總是充滿了一系列沒完沒了的中斷。在管理層面,我發現到了中午卻仍然沒有做完計劃中的第一件事是很常見的。Paul Graham寫過一篇非常好的文章,是關于管理者和他所說的“制作者(maker)”的每一天的不同本質。而程序員,很顯然的就包括在“制作者”這個分類中。
中斷對于一個程序員來說是如此的不同。你坐在電腦前,現在有十二個調用在調用棧中。一個顯示器上是精心挑選的輸入集,它們將會輸入到負責生成內容的 一個復雜表格中。另一個顯示器上有著舒服的暗色調主題的IDE,調試器的當前行泛著憤怒的黃光。你為了這一刻已經工作了50分鐘了——終于輸入了正確的 值;搞明白了事件觸發的順序;成功通過了正好數量的foreach和while循環,每一個都花了個好幾分鐘時間;在異常觸發前設置好斷點,使得你跳轉到 代碼庫另一側的一些處理程序上。就在現在,這個非常時刻,你意識到了為什么Orders集合中有22個物品,你搞明白了 _underbilledCustomerCount 值是什么,你還匆匆忙忙寫下”8xZ204330Kd”這個字符串,因為它是一個從一些隨機數和全局唯一標示符(GUID)的組合自動生成的驗證碼,你還 沒搞懂GUID,但是你也不想去搞懂它,因為你只需要知道這個字符串是什么就可以了。現在這個時候,你已經完全陶醉了,因為你馬上就要揭開在這個第三方庫 函數調用中到底是什么引發了一個未將對象引用設置到對象的實例的異常(null reference exception),你非常確定那就是 ——
“嗨!!!事情做得怎么樣了?對了,你也覺得客戶訂單崩潰的事情很糟糕吧?或許你能給我一個解決它的預計完成時間(ETA)?”
臥槽!!!!
項目主管剛剛在你即將按下下一條指令時,在你打算使用“跳過”而不是“進入”時嚇了你一跳。他嘮嘮叨叨的講述自己或者是客戶或者是其他什么事情的重 要性,反正你是沒在聽,因為你一邊在極力控制著失去所有調試的前后聯系的暴怒,一邊在提前思考怎么樣再能回到二十分鐘前的那個狀態。但這些都無濟于事,項 目主管的老大看見他正在跟你討論,也走了過來。現在你的鄰桌上爆發了一場的關于Initrode賬戶的討論,十分吵鬧,并充斥著莫名其妙的 buzzword bingo(譯者注:一種游戲)和一些關于“在球門區處理比賽”的體育隱喻等等。當吵鬧結束的時候,你在六西格瑪(譯者注:一種商業管理戰略,詳見[維基 百科]維基百科)體制中黑帶三段的手下乖乖就范。你知道自己得點一個披薩,在晚上7點大家都走了再來做這件事兒,這樣才能夠安安靜靜的工作。你現在能做的只有搖搖頭,然后想著“ 8xZ204330Kd 到底代表著什么?我為什么要寫下這東西?”
但接下來才是真正雪上加霜的時刻。當你嘗試著向向項目主管解釋剛剛的舉動對你的工作成果造成多了多么毀滅性的破壞時,他哼你一聲并告訴你不要這么聳 人聽聞。他也總是在想,為什么程序員總是跟女主演一樣過于戲劇性。同樣,不管你多少次說明,你的非技術的同伴也搞不懂你的苦衷。試想你的工作差不多就是整 天走來走去,不停要求別人更新進度以及接受來自上層的同樣的要求,理解程序員們風格迥異的工作模式的確不是易事。以上兩種角色我都曾扮演過,而現在我每天 用相當大一部分時間做策劃和管理活動。我必須抑制住不時的走到我的隊伍所在的地方并打斷他們來獲得一丁點信息的沖動,即使我能用這些信息發一封郵件,或者 將他們加到已解決事件列表中。項目管理,或是其他管理者們,都有十分現實的問題,其中許多涉及到試圖給合作伙伴,客戶或內部員工提供及時的支持。在他們看 來,事務或者問題都是可以被打斷的。
好了,別擔心,我想我有一個方法能讓你能夠向他們證明,跟他們的工作相比,一個中斷對于你的工作成果有多么毀滅性的影響。換句話說,能夠讓別人理解 對于你來說,一個中斷不僅僅是一個馬上就能補回來的耽擱這么簡單,而是毀掉了你直到那個時間點之前的所有工作。以下就是該方法。
邀請你的項目管理,經理,銷售或者其他什么人,讓他們坐在凳子上,然后告訴他們你的小幽默。打開記事本軟件,輸入一串3到4位的數字,就像這樣:
123 234 345 543 432 321 999 888 777
現在,告訴他們將這些數字用心算加起來。只能盯著屏幕或者在口中默念,不能寫下任何東西,也不能輸入任何內容。他可能會笑你,但你可能用一頓午飯賭他五分鐘之內連僅僅是得到一個答案都無法完成。他可能接著笑話你并且開始嘗試。
你只需雙手抱頭愜意地坐下來,給他半分鐘或者更長的時間,慢慢聽他念念有詞地計算。然后拿起你的手機打給他的辦公室。如果他無視這個電話,開口問他是否準備接這個電話,因為這通電話有可能很重要。他可能會嘀咕一會兒,不得不重頭開始。
再給他30秒或者更多時間,跟他說:“嗯,比想象的難是吧。你現在加到哪兒了?知道我經常想到哪個數字嗎?333。這數兒挺有意思。噢,也有可能是 221。也可能是加起來是9365的一些數。瞧瞧這些數字,你說是吧?哎喲,說了些廢話,不好意思,你在集中注意力啊。我閉嘴我閉嘴。”
再等一分鐘。拿出你的電話,假裝對著沒有人聽的話筒大聲的說話,模擬一通電話。開始背誦想象出來的電話號碼,裝出一副羞怯和歉意的表情。
一分鐘后,突然告訴他今天你的工作狀態非常低落,問問他是否還要讓你將那三樣東西,以及四五件其他東西加到六七個即將到來的業績展示的幻燈片上。噢,天吶,你又提到數字了,你個壞人。
最后給他一分鐘。告訴他只剩下20秒了,或許是30秒,也可能是25秒。不管是多少,他現在正是關鍵時刻。哈哈好吧,你知道他會失敗的。那就提前感 謝他請你吃午餐吧。但是,如果他答應以后當你編程 — 事實上就像是整天在腦子里追蹤一連串數字 — 的時候,不再不停的對你做剛剛你對他所做的那些事情,就讓他留著那午餐錢吧。
原文鏈接: DaedTech 翻譯: 伯樂在線 - Hacker_YHJ
譯文鏈接: http://blog.jobbole.com/59657/