4/18/2007

工程師的美麗與哀愁13--蟲蟲危機

  這邊的『蟲』(Bug),不是生物界的蟲子,像是蟑螂、蜘蛛、螞蟻等等。
  我指的是程式或是硬體上的錯誤。

  為什麼要說錯誤是『蟲』呢?
  話說早期的電腦,是一大堆的繼電器所組成。有一天某個超級電腦出了問題,電腦管理者就到主機裡頭去看,看到一隻飛蛾死在電路板上。
  當天的管理日誌,不但把那隻死掉的飛蛾貼在日誌上,下頭還寫著:這可能是全世界第一之臭蟲。
  後來,不管是程式或是硬體有錯誤,都沿用了這個名詞。

  時至今日,當年的那隻飛蛾有了許多的後代。像是除錯就稱為『除蟲』,邏輯上的錯誤,就叫做『邏輯蟲』,語法上的錯誤,就叫做『語法蟲』。電路上的錯誤,就叫做『電路蟲』……
  抱歉,電路蟲我瞎掰的。

  不管軟硬,工程師最討厭的就是看到臭蟲的出現,那代表工程師必須耗上好幾個白天,好多個晚上去找這隻臭蟲出現的原因。
  排除錯誤不算是真的除錯喔!要找到問題的原因那才叫真正的除錯。
  每到除錯除到深夜,只剩下貓頭鷹和蟑螂和我這個工程師醒著的時刻,我都會很想拿出殺蟲劑在電路板上噴個兩下,看看那些『臭蟲』會不會就這樣死掉。
  不過那是我癡心妄想。

  工程師除蟲,就好像在修道一樣;那些該死的臭蟲,不斷在考驗著工程師的耐性、毅力、體力和經驗。而且每出現一個錯誤,就會打擊工程師自信心。
  因為那些錯誤,都是工程師當初設計的時候,粗心大意或是趕著交貨所造成的苦果。
  有的工程師在除錯的時候,會不斷的自言自語,再不然就是沉著一張臉不說話,或者是菸不離手。
  你問我啊!如果問題解不出來的話,我很可能著急到哭出來。

  打先前,我曾經說過業務是工程師最大的敵人。最可惡也最活該的業務,就是當工程師在除錯的時候,自己討罵挨,跑到工程師面前說:你明天能不能把東西交給我?
  那時候聽了真的會很想打人!

  還有一種人也很討人厭。
  那種人就是生雞蛋沒有,拉雞屎有的工程師。通常這種人都是主管。
  我指的不是我現在的主管,是我以前的那個老闆。
  那老傢伙自以為很懂,實際上一知半解,他還擺出一副高高在上的樣子,他總是說有問題去問他,但是真正問他的時候,他卻給了我一個很沒有意義的答案。
  也就是因為那個老傢伙,我養成了除錯時獨立排除問題的習慣。
  反正別人也幫不了我什麼忙,我還是得悶著頭去幹!

  軟體的蟲比較沒有什麼問題,解出來之後,安裝到硬體就好了。只不過你要花時間去看那將近上萬行的程式碼,同時也得去看那些好幾G的PDF檔的規格書。
  硬體的蟲就很麻煩了!
  像是線路設計錯誤,電路板的走線不對,鋪地鋪的不好,造成輸出的時候出現雜訊,或是某條線路訊號接錯等等。
  假設整個系統有一萬條線,只要錯了一條,那就代表必須重頭來,從修改電路,到繪製印刷電路板,洗版、打件。這中間來來回回,是牽扯到數萬塊到數十萬的金錢,更別提中間所浪費的時間了。
  消費性電子產品那還好,如果是IC設計呢?喔~~那壓力更大了!只要這顆IC出了什麼問題,那可是數百萬到數千萬不等。
  所以幹硬體的,會比做軟體的還要痛恨臭蟲。

  不只是電子相關產品的工程師討厭臭蟲,其他類型的,像是建築業、化工產業,造船、汽車……等等,只要被冠上『工程師』的行業,他們都討厭臭蟲!
  就算是生物界的臭蟲,也沒多少人會喜歡,除非是研究生物生態的科學家。

  所以啊~~臭蟲,是所有工程師心中永遠的痛!

PS:
  本篇文章所提及的工程師,絕對不包含在微軟工作的工程師。因為他們根本不是在寫程式或是做硬體,他們根本就是臭蟲製造工廠。

(本篇原發表日期:2006/02/23 16:08:44)
Google
Creative Commons License markscat的異想世界markscat製作,以創用CC 姓名標示-非商業性-相同方式分享 2.5 台灣 授權條款釋出。