2011年6月11日 星期六

都是軟體問題惹的禍?

    大學畢業取得電腦工程學士學位後,我曾在一家線鋸公司擔任軟體開發人員。多年來,這些線鋸產品不定時地會發生一些鋸線從鋸片上脫落的問題,但大家都一直認為這問題並不嚴重。直到有一天,公司決定打造更大且具有更多切割軛的新款線鋸。


資深專案工程師認為這項任務需要兩個月的時間,但根據工作排程,我們只有一個月的時間,最後,銷售人員卻告訴客戶我們能在兩週內交貨!機械/硬體人員總算在交貨日的前幾天把線鋸交給軟體部門後,我們必須做的就是載入一般的軟體(經修正)、測試,然後就可準時出貨給十分興奮的客戶了!

接著,有趣的事發生了。線鋸產品完成後,每個切割軛都開始出錯,且發生的問題都不一樣。機械與硬體組裝人員認為它顯然是軟體錯誤。由於我是負責這一線鋸產品的唯一嵌入式軟體工程師,因此他們在經過微調處理卻仍面臨瓶頸後,所有目光的焦點就都落在我身上了。

經過開會決議,既然每個人都採用和以前其它線鋸產品同樣的機械/硬體,從來也沒沒發生過這些新問題,所以這一切的工作就都該由我來負責了。經過幾個小時的測試後,我發現同樣的軟體執行於幾個平行切割軛上卻出現不同的問題──但這應該是硬體功能故障或脫線問題(這種採用上百條線銓螺絲的方式,過去也曾經出錯)。

沒有人採信我的說法,他們認為我在試著為自己的軟體能力不足而指責他人。同樣地,這其實是因為他們每個人都做自己原有的工作,而我卻是取代一名「超級」工程師的「討人厭的新人」(FNG)。在接下來的幾天內,我開始頻繁地被叫去回報修復的最新進展。工程技師們好幾次都拒絕了我提議重新檢查線路的要求,我只好自己拿起一把螺絲起子,用肉眼反覆檢查每一切割軛之間的硬體差異,終於找到了每一切割軛都有好幾處脫線。

修復這些問題後,現在軟體在所有的切割軛上都能協調運作了。但高階與中階主管們走出他們的會議室時仍要我待在修復軟體的車間中,我告訴他們這只是幾個脫線問題罷了。但他們卻更深鎖眉頭地看著對方,然後又匆匆跑回會議室中。

現在這些線鋸仍存在鋸片脫落的問題。同樣地,經過數次會議後,他們仍要我修正我的軟體問題後才能出貨。因此,管理團隊找回了「超級」工程師以及另一位工程師,以便能使HMI/資料記錄更順利運作;而我在他們連接硬體時也作了一點「小小的貢獻」(事實上我並不以為然)。我在顯微鏡下修正「因新軟體而變得更糟糕」的鋸片脫落問題,而我的主管則不經意地說著年輕工程師要更努力點之類的風涼話。因此,我就在車間、小辦公室與檔案室之間來回奔波,以便進行修改,但一直沒什麼進展。

在我的辦公桌上,我匆匆拼湊出一款測試線鋸來測試我的軟體作業。首先,由於軟體改變又花了20分鐘才完成載入與驗證(採用EEPROM)。其實我花了好幾個月的時間才申請到除錯EEPROM與一款IDE,現在只要在幾秒鐘內就改變軟體了。奇怪的是,軟體在我的辦公室中運作正常,但到了線鋸生產後卻又不定期會出錯。在多次會議中,我已表明問題來自於以ADC檢測線速的單線程式碼(LOC)中,但銷售業務卻質疑──為什麼五年來運作正常的所有其它線鋸而今在LOC卻出錯了?

只要從線鋸產線上執行IDE的流程就能證明我的論點。稍早前,我曾要求公司提供一款好一點的筆記型電腦,以便能在線鋸產線上執行IDE──管理/銷售人員使用的是P4/Core電腦,而我們工程團隊用的卻是舊款的Pentium筆記型電腦。唉……我用的這款舊型筆記型電腦在IDE延遲時常常導致當機。這種讓每個人都印象深刻的當機狀況現在還讓鋸線亂成了一團。工程技師每次進行測試時仍使用我的筆記型電腦,最後,IDE即使接收到正確且穩定電壓時,也顯現出ADC存在紋波,使得LOC無法測得原速。

由於線鋸測試並未發現問題,在條件不變的簡單原則下,18”長的顯示器線纜導致ADC產生紋波。我將顯示器線纜縮短至6”後,線鋸就可正常運作了。當我對工程技師說明此問題後,他仍批評說客戶不可能到處走來走去反覆開啟機盒來看面板,而且這種長度的產品看來很不專業。

我開始感到不耐煩,同時也想起幾個月前他告訴我曾經進行過一項棘手的線鋸開發計劃而使公司面臨破產,所以才會有目前的新管理團隊。在諮詢過幾位嵌入式電路板製造商後,另一位工程師與我最後設計了一款可解決這一問題的面板緩衝器。

這款線鋸後來得以順利出貨,而我的工作職責對公司來說卻已沒太大存在意義了。就在我離開前,我的經理說我該「擁有自己的事業」。後來,這家公司雇用了公司員工兒子的朋友,讓這位年輕的工程師擔任「完全不同的職位」,但他也沒做多久。很諷刺地,幾年後,大部份具有特殊背景的那些人們都被開除了。還留在那兒工作的工程師們則為線鋸開發寫下我當年所用的HW/SW解決方案,時至今日,這一方案仍用於這家公司現有的線鋸生產中。

編譯:Susan Hong

(參考原文:It always worked before, so you broke it,by Tim Fyock)

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。