最近(2016年4月11日)在網路讀到一條小新聞,標題是「美國肯薩斯州的一個農場因為某一地圖軟體的小故障(glitch)而不停地遭受威脅和騷擾」,這標題讓我想起很久以前一個有關微軟(Microsoft)的笑話.
這新聞說美國一家地圖軟體公司的有個產品能幫你從「網路協定位址」(IP Adress)找到相關電子器材的真實地址.這類事情的資料庫(database)其實很難齊全,有時候那個地圖軟體只能告訴用戶要找的地址在某一城市或鄉鎮,真有需要的人可以到附近去找.問題在於如果你輸入的「網路協定位址」無法與資料庫配對的話,它就會告訴你真實地址在美國地理中心附近.肯薩斯州有一個農場剛好離美國地理中心不遠,常常有人因生意糾紛根據那地圖軟體提供的資料找上門,甚至聯邦調查局也為了追尋罪犯來拜訪,農場主人不勝其擾.農場主人的困境當然令人同情,但是我出身電子工程師,所以有另一個反應,我認為那不是小故障,那是設計上的大疏忽.
我從新聞報導推測,那公司的軟體工程師開始寫程式時為了方便先假定真實地址在美國地理中心附近,這算是正常軟體程式發展的程序.一旦軟體程式完成後與資料庫相連,它就會自動輸出正確的地址.問題是真實生活裡難免會碰上與資料庫不能配對的「網路協定位址」,軟體工程師在交貨之前應該修改程式讓它在這種情況時向客戶說明清楚,不應該讓它輸出當初工作時暫用的假想位置.「小故障」是那家軟體公司的對這件事的說詞,但是故障是不能預期的,給用戶一個明知不正確的位置是設計缺失,不是故障.
這種忽視設計疏忽的態度其實由來已久,話說DEC曾是1970-1980年代美國一家有名的電腦公司,要像我這麼老才有幸用過他們的產品,我在此要先聲明他們的產品很好.那公司早期有一位工程師在測試產品時偶爾會碰到一些無法解釋的現象,他發現這些奇怪的現象不太會在例行使用時發生,客戶「幾乎」不會碰上的問題值不值得費力費時去修正?他進一步研究後將這類問題分成兩類:(一)會造成不良後果,這類問題不用說一定要列入「unacceptable」,退回給原設計工程師修正.(二)只會帶給客戶一點點不方便,不會有什麼大害,反正發生的機會很小,運氣好的話在軟體更新時會自動消失,為了幫公司省錢就列為「尚可(tolerable)」,算是通過檢驗.
DEC所做其實還算合理,多年後微軟卻將這個態度「發揚光大」,演變出一個電腦工作者之間口耳相傳的笑話.當年微軟的第一個文書處理應用軟體(Word for Windows)有很多問題,用戶在「例行」使用有時會得到一些不可預期的結果,客服人員接多了質問電話就塘塞客戶說「這不是程式錯誤,這是本產品的功能之一,只是沒有列入使用手册而已!(It's not a bug; it's an undocumented feature)」這句話後來成為電腦工程界的名言.
那家地圖軟體公司雖然沒有像當年微軟那樣謊稱「功能」,但是稱之為「小故障」,也是五十步和百步之差(註).
註:《孟子梁惠王》孟子對曰:「王好戰,請以戰喻.填然鼓之,兵刃既接,棄甲曳兵而走.或百步而後止,或五十步而後止.以五十步笑百步,則何如?」