Fix Bug的五個階段

下面的文章和《各種流行的編程方式》有異曲同工,請你不要理解錯了。本文來源,翻譯如下:

——————————————————

一個非常嚴重和困難的bug,能夠成就一個飽經滄桑深受壓力的有經驗的專業程序員的職業生涯。經受這種考驗的創傷程度,相當你受到了一次嚴重的身體傷害,離婚,或是家庭成爲的離世。

研究人員在研究了計算機編程心理學後,得出了一個程序員們在解決一個困難的bug時的心路里程。這些不同的境界,很像爲大衆所知的Kübler-Ross Stages of Grief(這個模型描述了人對待哀傷與災難過程中的5個獨立階段(否認,憤怒,耍賴,抑鬱,接受)。絕症患者被認爲會經歷這些階段),而且原因都很相似。就好像死亡所伴隨的悲傷一樣,fix一個bug是一個過程其初始化了一個事件,一開始是拒絕相信,其造就了你苦悶的情緒並開始逐步影響你的心智。這種苦悶的情結果會讓你糾結要努力忍受,最終會你會找到一個滿意的結果。

瞭解下面這幾個bug-fixing的階段,會讓我們更好的生存下來,並持之以恆,最終帶來……關閉我們所有的bug的結果。

第一階段:牴觸

本階段的狀態: 多疑 Skeptical. 生氣 Offended. 易怒 Petulant.

1. 不理睬

也許這個bug會安靜地離開。

2. 標記上“不是bug”

也許這是用戶的錯,或是本地配置有問題。是的,我確信就是那樣,一會就會好的。

 

3. 就是一次小故障

我想這就是一次小故障,很奇怪地發生了一次,它不會再發生的,雖然沒有搞清楚是爲什麼發生了,不過這就好像我們的數據庫,網格,瀏覽器或別的什麼打了幾個嗝一樣。一會就會好的,我確信。

4. 躲藏.

我要休幾天病假,也許他們會把這個bug轉給別人的。

5. 標記爲“修改需求中”

你看,我是按照需求實現的。如果你們想要改這個行爲和UI,就一定要修改需求。也許他們會決定就這樣了。

6. 需要更多的信息

我不能確定這是一個bug,除非我能在錯誤日誌中看到一條特定的報錯信息。

7. 轉給其他人

我調查這個bug中看到了其它模塊中我看不懂的數據,問題很大。我應該把這個bug轉給開發那個模塊的人。我可以在我的模塊中檢查一下那個邊邊角角的情況,但是正確的fix應該是在別人的模塊中。反正那個在別的國家,我見不着他。

第二階段:接受

本階段的狀態: 認命 Resigned. 被打擊 Defeated. 被激怒 Annoyed.

1. 接受現實

行了,行了,行了!這是我的bug,我會修正它的。

2. 把這個bug放到最後

也許,我可以在我需要fix這個bug之前找到一個新的工作。

3. 和你的經理討價還價

好的,你看,我可以正確地fix這個問題,不過我需要一個月。也就是說,我可以給這個問題貼個創可貼,那不會真正的解決它,但是我們可以避免用戶的抱怨,這可以爲我們贏得幾天的時間。

4. 爲這個bug標記一個無恥的時間

上帝啊,我希望這時間夠了。

第三階段: 投入和沮喪

本階段的狀態: 眼花 Giddy. 頭暈 Light-headed. 緊張 Nauseous.

1. 開始調查

我能搞定它,我能搞定它!只需要小小的調整一下,小小的關注一下,多一點咖啡因,再加上一點時間,我能搞定它。

2. 迷惘

Shit. 這太扯了。我居然沒有一點進展。這代碼真是亂。這樣的代碼居然能編譯和運行,真TMD的神奇,我有機會能搞清楚它什麼不正常嗎?

3. 再次躲藏

你看,很對不起。我不得不要去切除我的闌尾。再一次,是的,既然你提到了它,我的確有兩個闌尾。現在我一個也沒有了,你高興了吧?。

4. 犯賤

好吧,總之,你到底期望什麼?想讓我在一個沒有高級調試器的環境下改這個BUG。我是什麼?千里眼嗎?我在我的Commodore 64上一個更好的調試器!

5. 瞎搞

看看我試試這麼改?Kao,這樣不行。要不然這樣搞?也不行。那麼那樣搞呢?Shit,居然變得更糟了。

6. 絕望

我不可能fix這個bug了。我是個糟糕的程序員。我太笨了。我在這個滿是聰明人的地方幹什麼?遲早他們會知道我的能力太差,那時我就玩完了,在這也混不下去了。

7.恥辱

我的經理問我爲什麼我用了一個月的時候來fix這個只需要兩天就可以解決的bug?老實說,我不知道怎麼去讀日誌信息,我搞壞了我們的編譯腳本。現在,我不敢去讓別人來幫我,因爲這樣只會讓我顯得更愚蠢。

8. 恐慌!

這事變得比我相像的要複雜!而我開始覺得複雜的事變得簡單……而我覺得簡單的事變成需要重定半打的類。爲什麼我以前在我的經理前拍着胸說我可以搞定這個事?

9. 通宵工作,遠離朋友和家人

(語無論次的喃喃自語,一陣一陣地大聲咒罵)

第四個階段:愚蠢的快感

本階段的狀態: 感恩 Grateful. 安心 Relieved. 極端地自我欣賞 Awfully Impressed with Yourself.

1. 醒悟

哦!我終於明白怎麼搞定它了……

2. 寫正確的代碼

我真NB,我是編碼機器!

3. 測試

牛!通過一個測試。真牛!又通過一個測試了。靠!有測試失敗了。這是爲什麼……

4. 隱藏測試失敗

反正這完全是一個不重要的測試案例。沒有人會檢查它,這個測試真是毫無意義。

5. 提交代碼

我太牛了,廚房裏有個餡餅可以慶祝一下嗎?

6. 關閉 bug.

我聽說那裏有個餡餅可以慶祝一下

第五個階段: 與“完成”肉搏

本階段的狀態: 焦燥不安 Twitchy. 神經過敏 Nervous. 迷信 Superstitious.

1. 有人reopen了這個 Bug

真的?他們發現了你引入了另一個bug? Shit – 那只是一個不重要的案例永遠不會發生的。

2. 修正以前的修正

是的,我甚至檢查了員工的年齡是一個虛數的情況,就是爲了防止出錯。

3. 關閉 bug

是的,賤貨,你被關閉了。全部都關了,再也不用心煩了。

4. 發誓以後再也不幹這種事了

5. 大家都意識到你現在是那個模塊的專家了

哦,不!現在他們又給了我三個那個模塊的新bug

沒關係,現在你只需要GOTO 第一個階段。

此外,作爲一個工作中的程序員,你會永遠經歷這些爛事,直到你——死亡,退休,或是被升到管理層。

 

(轉自:http://coolshell.cn/articles/4045.html)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章