立即捐款

Debugging - David J. Agans

除蟲(Debug)是每個寫程式或做設計的人也必須要懂的基本求生技巧。
沒有人可以落筆永不犯錯﹐所以去找出錯誤並加以修正是必經的階段。
這個除蟲的過程很多時間痛苦而漫長﹐特別是那隻蟲在別人的傑作裏面。
我自小玩寫程式和砌電腦﹐大學時讀工程系﹐出來做時是當工程師﹐
無不是和蟲打交道。不是自賣自跨﹐我對抗蟲害經驗豐富﹐除蟲快而準。
很多時候我覺得除蟲不單要腦筋好﹐還要有點除蟲的藝術才能夠有效率。
但說起來我除蟲好像沒有什麼特別方法﹐也沒有什麼可靠的系統可言。
就像語文那樣是與生俱來的能力﹐自己懂如何去做﹐但很難教別人如何除蟲。
Debugging這本書正好填補這個空位﹐很有系統地歸納出除蟲九大定律。

這書的作者畢業於MIT﹐在科技行業工作多年﹐是很有經驗的工程師。
他見市面上完全沒有關於除蟲的書﹐於是把多年的除蟲心得整理寫下來﹐
希望可以幫助後輩掌握除蟲技巧。書中依次例出除蟲九大定律﹐
每一定律也有詳細解說﹐並且附以作者經驗的真實案例去說明應用。
最後幾章將所有定律融會貫通﹐展視給讀者由發現問題到找出錯誤﹐
如何把定律綜合整個除蟲過程。最後一章很特別﹐從helpdesk的角度出發﹐
把定律在他們的眼中演譯一次。對在helpdesk當技術支援的人故然有用﹐
對打電話去helpdesk救助的人﹐即是其他所有人也有幫助。
知道helpdesk如何運作﹐配合他們想要的資料﹐才能更快解決問題。

我把除蟲九大定律翻譯出來﹐給大家作一個簡介﹕
1. 徹底明白系統的運作。如不明白﹐請先把使用手冊由頭到尾讀一次。
2. 讓系統失靈。系統失靈是除蟲的第一條線索﹐看不見失靈就找不到蟲。
3. 不要靠估﹐要看清楚那兒出錯。除蟲的精髓不在於要估得準﹐
而是如何去減少估錯的機會﹐一估錯就會浪費很多時間行錯路。
4. 分而攻之。把蟲出沒的笵圍收窄﹐如是者就會找到蟲的位置。
5. 每次只改一樣。一次過改太多﹐不單不能除蟲﹐還有可能產生新的蟲。
6. 所有事也要有記錄。沒有詳細的記錄﹐就沒有足夠的資料去除蟲
7. 看看有沒有插電掣。最安全的地方就是最危險的地方﹐
最白痴最顯眼的錯誤﹐往往最容易被忽略看不見。
8. 不要鑽牛角尖﹐想不到就要虛心問人。
9. 試清楚修正是否有效。很多時候以為找到蟲錯誤修正好就完工﹐
只不過恰巧那些好彩沒有遇上問題﹐蟲還是好端端在那兒等下次再咬人。

雖然我在看這本書時﹐不禁想這除蟲九大定律只不過是簡單常識﹐
任何寫過程式的人也必定無師自通學會。可是回顧一下我的除蟲經驗﹐
久不久我自己也會一時大意違反這些定律﹐弄得團團轉不知如何去解決。
現在有人很有系統地寫了出來﹐不單讓我更深刻記得這些除蟲定律﹐
還可以讓我很精確地把除蟲技巧教人﹐不會自己懂但找不到言語形容的煩惱。
這本書奉送除蟲九大定律的海報﹐我特別印了出來貼在我的工作間。
當自己找不到蟲毫無頭緒時﹐抬頭細看這九大定律﹐回想自己違反了那條﹐
警惕自己改過﹐很快就可以找到害蟲。當別人問我有關除蟲的問題時﹐
我可以很省氣力地著其中一條回答他。不論是除蟲新仔還是經驗老手﹐
這本書應被奉為除蟲寶典﹐任何設計程式或硬件的人也應該要讀一遍。