Saturday, December 25, 2010

To Err is Human…

(轉載自CUP magazine 2010年3月號)


當豐田汽車正式宣布預計將在全球六十個國家召回煞車系統出問題的新型油電複合動力車包括PriusSai、凌志(Lexus HS250h)和Phv等逾四十萬輛車,豐田汽車社長豐田章男用日語和英語公開謝罪後,「日本製造」長久享譽的優質保證已同時宣布破產。
這令我想起很多年前的一句從英文雋語“To err is human, to forgive is divine” 改過來的“To err is human, to really mess things up needs a computer” 。我看到後有如醍醐灌頂,馬上把印有這字句的牌子買回來放在辦公桌上,一直奉為座右銘,直至從技術部門轉到營業部做computer sales,才被經理勸喻把它拿走,礙眼!
犯錯乃是人之常情,寬恕乃是神的聖行,但電腦犯錯誰去寬恕它?很明顯,這樣問是不對的,誰說電腦會犯錯,犯錯的也是人,正如豐田汽車的汽車本身沒有錯,錯的是設計和製造豐田汽車的人。但為什麼一直以來,人們做了錯事喜愛賴電腦出錯 ? 曾幾何時,銀行的出納員對你說過:「對不起,這statement是電腦打印出來的,我再替你用人手計多次。」好像這工作本是由電腦做的,而這漂亮的女出納員「替你計多次」是項特別服務,你是我們尊貴的客户嘛!她纖纖的玉手指頭繼續忙着在計數機上飛躍,她說得對,是用人手計多次,不是用人腦計多次!
為什麼有錯時始終是電腦的錯,以及電腦永遠是為人推卸責任最佳藉口?同時矛盾地,我們也喜歡把電腦捧到像神一般的萬能地位,「嗱,電腦計出來的,怎會出錯!」。這把「進可攻,退可守」託辭雙面刃,我們用到今天也樂此不疲。
連電子計數機我也買過一個會計錯數的。我當然要花很多時間抽絲剝繭才能證明出來,絕對不關什麼浮點運算的事。那時我還年輕,未經醜陋人性的洗禮,便振振有辭寫信去原廠商追究責任,最後不還是一句「對不起,設計這計數機的電腦程式出錯」了事。那時,張宇的「都是你的錯」還未流行,我已寫了一首「都是電腦錯」的歌,當然也是落得曲高和寡收場。但仍大發奇想,將計就計,想設計出一款特定計錯數的計數機,尤其在%的功能上,放在鴨寮街去賣,看看可不可以用calculator去「整蠱」一些人,我承認那時是我的潛意報復心理作祟。今天,我依然相信坊間中還有很多計錯數的計數機存在。最具啓發性的,莫過於最近看過的一篇Creating learning opportunities through calculator “mistakes”文章用計錯數的計數機提供學習機會!問你服未?
寫到這裡,我好像只懂說人類犯錯是必然的現象和值得寬恕的,其實我真正想說的是:人性的醜陋,是在犯了錯後企圖欲蓋彌彰的手段是何等高明,尤其是在電腦工業和IT商業行為中,所見所聞,累積了一段日子後,我不得由不屈服到折服。
最初,在電腦術語中,我們早已神不知鬼不覺地預設了很多令人費解的的藉口來美化出錯。錯不叫錯,叫做bug,修改過程叫debug;軟件有bug,「有蟲咪捉蟲囉」有什麼大不了?我少不更事時曾誇下海口說:「我寫的program一定不會有bugs的,否則我怎對得起我的客户和自己的良心!」之後我給洋上司罵了整整一個下午,他最後一句是:「世上是沒有bug-free的軟件的,傻仔!」我記得當時真的想過憤然「辟炮唔撈」,道不同不相為謀,非常壯烈兼幼稚,若干年後才領悟到他的語重心長。
後來,軟件工業開始起飛,更具創意的術語例如alpha testbeta versionrelease candidatedogfooding等相繼出現。背後真正的意義,也不就是告訴全世界,世上真的沒有bug-free的軟件的。你喜歡也好,不喜歡也好,這是現實。你再批評軟件工程師只懂關在實驗室寫codes,不知道現實世界的要求,對,有些狗是不吃狗糧的,我們不是做了dogfooding的測試嗎?
再之後,應用軟件從數千行codes發展到數千萬行,debugging的工序已不是由一個人、或一隊人、或甚至單一企業機構可以應付得來。互聯網及時駕到,可以把全球的軟件工程師、用家和業餘愛好者的腦細胞全方位調動起來,齊齊參於debugging大行動,這就是為什麼LinuxWindows可靠,為什麼Open Source的軟件夠彈性,但奈何當IBM、微軟和Oracle 等公司茁壯起來,以賺取巨額的商業利益、股價就是一切的大前提下,每間公司也爭做一哥,也要做standard-setter,自我關閉起來,其他的先可置諸腦後。有訂單就是有用家,有用家軟件才有生命,才可投放資源繼續debugging下去,我們更可以冠冕堂皇稱此為優質銷後服務,定時推出upgradessoftware updates等來迎合客户要求。說白了,就是邊賺錢邊debug,一石二鳥,合乎經濟大原則,多好!
故此,對不懂IT的用家來說,你還敢用那些沒有優質銷後服務的Open Source軟件?出了事找誰來解困?而懂ITIT部門主腦人,就算他們有原碼在手,亦哪會有閒debug軟件?他們選購大公司的軟件就是買它們的銷後服務,只要有software update便依時依候update,有錢買upgrade便upgrade,出了錯哪會是我的錯,當然是軟件公司的錯。
而軟件公司也不是省油的燈,它們的律師團早已在Disclaimer條款中寫齊擺脫一切責任的可能,用我公司的軟件計算工程力學將來的建築物倒塌了怎關我事?用我公司的spreadsheet template 報錯稅怎能算到我公司身上?軟件工業永遠也在承擔和推卸責任之間走鋼絲,有bug的軟件也一直在我們的電腦內像計時炸彈一樣地潛伏着。我們已無力排眾,唯有take it for granted
今天,多謝豐田汽車,它真正向全世界示範出電腦怎樣可以really mess things up了。據豐田汽車官方網頁稱,這次回收和修理非常簡單,有關的Prius車輛,只要拿去代理商安裝一個software update,花時大約三十分鐘便可,真update!唉!丟出一個software update電腦術語,在承認和否認電腦出錯之間,卻沒膽說出問題的癥結:為什麼我們需要software update,因為軟件還有bug!今天update 過後,沒人擔保明天不用再updateupdate update,何時了?
回想上述我二十多年前說過壯烈兼幼稚的一句「我寫的program一定不會有bugs的,否則我怎對得起我的客户和自己的良心!」,可能也要update一下!(完)

No comments:

Post a Comment