bug-fixing的人生

查看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. Befuddlement.

  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 第一個階段。

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

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