如果沒有除過錯的人,就不是個稱職的軟體工程師。也就是說,只要你是個軟體工程師,肯定除過錯!剛好碰見一張讓我感同身受的圖解除錯五個階段 (The 5 Stages of Debugging),仔細想了一下,我好像也差不多經歷如此狀況。
五個階段分別是:
- 拒絕
- 討價還價/自我責備
- 憤怒
- 沮喪
- 接受
第一階段拒絕,很明顯地我會說,「什麼!?」、「怎麼會?!」、「應該沒錯啊~」
第二階段討價還價/自我責備,我會回想當時寫那段code的狀況,說應該是那時候精神不濟,或是那時候沒有想透徹所有可能case。
第三階段憤怒,通常發生在找不到原因或解法,而且時間一點一滴過去,因為這個bug讓今天沒什麼產能。還有出現在很明顯是別人遺留下來的錯,比如承接前人的專案,或者串接伺服器介面,而我要為對方「擦屁股」。
第四階段沮喪,實在找不到原因,或是找到原因後無解,只好妥協跟老闆或業主承認無法做到。
第五階段接受,儘管知道各種狀況,自己也非常有信心可以勝任,但因為各種無法預期的事件(我的蠢、他人的呆、第三方套件不支援、客戶反覆改規格、介面設計繁雜、功能流程糾結等等),最終讓專案無法順利完成。跟自己說,下次會做得更好!
此外,我也有找到某程式開發人說六個階段:
- DENIAL. That can’t happen.
- FRUSTRATION. That doesn’t happen on my machine.
- DISBELIEF. That shouldn’t happen.
- TESTING. Why does that happen?
- GOTCHA. Oh, I see.
- RELIEF. How did that ever work?
我是很不喜歡改他人的專案,但卻是鍛鍊自己除錯能力的好機會,若剛好遇到寫得相當扎實的程式架構,也能學起對方優異之處。
老實說,我喜歡做自己的產品過於代工他人專案,其中一個原因是,不是很想花時間在無關緊要的bug上,有些bug可以暫時忽略,因為時間有限,要專注在核心功能上,若該功能受到熱烈迴響使用,就可以花多點時間debug囉~因為我總會想著,如何讓效益最大化,能讓使用的人越多且越開心,會使我更有成就感,進而樂在其中,挑戰更困難的任務。
哈~現在就是需要更多錢,來讓自己能做屬於自己的產品囉!看誰願意贊助我,讓我去做利己利人的事情:)~
參考:The Six Stages of Debugging、6 Stages of Debugging、5 stages of debugging。
隨意留個言吧:)~