在出包中成長

一言以蔽之:工程師很怕出包,但出包後的學習曲線很陡。

彩虹的第八個顏色

彩虹

彩虹有七個顏色(紅橙黃綠藍靛紫),第一個是紅色、第二個是橙色、……第七個是紫色,那第八個是什麼呢?

答案是「黑色」,因為有bug要de的人都會黑掉。(debug會黑,第八個會黑。)

交大土地公廟拜拜

有包有粽,就是包中

來交大考試的學生,都要去交大門口的土地公廟拜拜。有拜過的人都知道,這裡要拜仙草蜜,所以隔壁的自動販賣機和商家就會賣仙草蜜。

在附近的商家買仙草蜜,會送一張許願卡,上面畫著包子、肉粽,表示考試「包中」、金榜題名。因此考生就會在這張許願卡上寫自己的名字和考號,把這張卡片和金紙一起燒給土地公。

當工程師tape-out後,為了祈求project順利,也會來土地公廟這裡拜拜,當然也是拜仙草蜜。這時候買仙草蜜,同時會得到這張許願卡。不過要注意,這張卡片要丟掉,不能燒給土地公。為什麼呢?因為肉粽、包子,表示IC會「中包」,出包就是出錯。

綠色乖乖

綠色乖乖

園區裡所有工程師都知道機臺上要放乖乖,這樣機器才會乖,大家也都知道要放奶油椰子口味的,因為這是綠色包裝(圖中左邊),而綠色代表綠燈,機器會平順的意思。

那有的人會覺得放這種小包的誠意不夠,於是他就買了大包裝的版本(圖中右邊)來擺,也是奶油椰子口味的綠色包裝,你或許會覺得這方案不錯,這樣機器就會大乖乖、大平安。

可千萬不要啊!為什麼呢?因為在大乖乖包裝的左上角寫了「狠大包」,很大包表示了會出很大的包,「大包」的底色還是紅色警戒。

我有個同事在位子上放了這狠大包,結果產品一直不順,後來有一天他把這狠大包丟掉,過沒多久bug就都解了,你說是不是很巧合。

從錯誤中學習

爬上bug樓梯

第一個笑話和後面二個故事,暴露出來的事實是,工程師對於出包(出bug)這檔事,都是避之唯恐不及。

在公司內,為了避免出包,工程師採取的策略通常是:

  • 最好不要改:留著歷史包袱,怕改錯而不敢改,這會讓IP無法進步。
  • 如果非改不可,那要加一堆option:這會造成IP不是最佳化。

工程師不喜歡出包是可以理解的,因為出包以後,產品仍然要上市,這時候在短時間內要解決問題的壓力變很大。

當出了錯以後,我們可以把錯誤轉變成學習機會、扭轉為正面收穫。比如說在除錯的過程中,學習的曲線是很陡峭的。以下這些學習機會,都是從出包中獲得的:

對自己設計的了解更透徹

我們在硬體設計模擬的時候,有些test case會沒有設計到,有些non-ideality會沒有考慮到,因此當硬體被製作出來後,就會出現bug。在解決bug後,我們便會知道自己設計的不足處,而回去增強我們test bench的coverage。

對夥伴設計的了解更明白

有時候bug是出現在和前後級的整合上,我自己的設計沒錯,夥伴的設計也沒錯,但兩個人的設計合起來就是會出錯。藉著這個除錯機會,我們就會發現兩個人的介面上缺了些什麼。

對系統應用的了解更完整

硬體工程師出包後,會儘可能避免hardware ECO,這是因為硬體重製需要金錢和時間,便會拖累產品發表進度,此時工程師就會尋求軟體規避方案。要提出軟體解,必須對系統有高度了解,才會知道如何workaround可以不影響使用者應用。

bug一詞的由來

有bug的IC

最後,同場加映,為什麼在業內,錯誤會被叫成bug呢?

很早以前,有一次電腦(那時候的電腦還是用relay和打卡紙帶)突然當機,大家不知道為什麼。經過一番尋找,才發現原來是一隻飛蛾飛進入了電腦內部,因此就用「bug臭蟲」來代替錯誤,而「debug除蟲」就是除錯。

維基百科還可以看到那一隻飛蛾的照片,旁邊的筆記寫著「First actual case of bug being found.(第一隻臭蟲被抓到了)」。

First Bug