不以程式碼為惡:軟體開發者的倫理與自覺/Quincy Larson
Uber辨識執法人員的方法很聰明:將執法人員的信用卡資料拿去和公開的公務人員名單資料交叉比對,然後把這些人列入服務黑名單之中;執法人員永遠叫不到Uber車輛,只會以為叫車的地方和時機不對。
電腦科學家納達尼爾.伯倫斯坦(Nathanial Borenstein)曾經說過:
不應該讓沒有受過倫理訓練的軟體工程師開發「摧毀巴格達」(DestroyBaghdad)這樣的程式;有基礎專業倫理素養的軟體工程師,會選擇寫一支「摧毀城市」(DestroyCity)的程式,而巴格達可以是提供給軟體的一個參數。
Uber用隱藏程式碼,在上百個城市逃避查緝
2017年三月,紐約時報踢爆Uber上線以來的最大醜聞:從2013年起,Uber就開始透過複雜的方式,來欺瞞世界各國的執法單位。
Uber這支程式叫做「灰球」(Greyball),運作方式如下:
在許多Uber營運仍屬違法的城市,Greyball可以辨識出試圖叫車以對司機搜證的執法人員身分,提前通報司機,司機就會避開這類叫車。
當執法人員打開Uber App想要叫車時,在Uber App地圖上會出現很多「幽靈車」跑來跑去,但實際上這些執法人員一台車都叫不到。
既然在地圖上出現的Uber車輛,沒有一台是真的,執法人員也叫不到車來搜證,當然就無法進行任何取締。
由於有這樣的軟體,Uber就可以無視各地對共享搭乘的禁令,大剌剌地作起生意。Uber就靠這招逃避司法監管。
Uber用來辨識這些執法人員的方法很聰明。Uber將執法人員的信用卡資料拿去和公開的公務人員名單資料交叉比對,就可以找到誰可能是執法人員,然後把這些人列入服務黑名單之中。執法人員永遠叫不到Uber車輛,但只會以為自己叫車的地方和時機不對。
這就是多年來Uber之所以能在許多未開放其業務的城市中,大張旗鼓營運的秘密,而且一直要到少數心懷罪惡感的Uber工程師出面揭穿,Uber的不當做法才得以公諸於世。
編按:最近Uber還發生另一樁與此相關的醜聞。
蘋果發現Uber的iOS app違反蘋果規定,不僅會追蹤安裝Uber app的用戶,甚至在用戶刪除Uber app之後還可以繼續追蹤。Uber為了避免被Apple人員發現這件事,竟透過定位功能偵測手機是否在Apple總公司範圍之內、並在進入之後改變程式碼。
不過紙包不住火,這種作弊手法還是被蘋果公司發現;在蘋果執行長Cook親自警告之後,Uber才移除這項「功能」。
Zenefits以軟體幫上百位保險業務員不當取得資格認證
Zenefits是家提供企業用軟體的公司,他們的主要營收,來自於對企業用戶銷售各種保險商品。2016年該公司CEO Parker Conrad遭到揭穿:該公司開發一種特別的軟體作弊工具,讓保險業務員更容易通過資格認證。
從Uber、Zenefits到福斯汽車,各種欺世犯行都透過軟體作弊進行。
Zenefits做了一個特別的瀏覽器擴充套件,讓旗下的保險業務員,在接受法定的52小時線上訓練時,可以直接跳過大部分的課程內容。這樣Zenefits就可以讓業務員馬上開始賣產品,省下一星期半訓練期間的薪資。
當這件事被揭發後不久,Conrad就辭職下台;該公司為這個醜聞付出的代價高達250億美元,是其市值的一半,更有上百人因此失業。
靠軟體作弊,福斯賣出一千萬台污染超標柴油車
從2008年到2015年,福斯製造出超過一千萬台「清潔柴油車」;這些柴油車不但和傳統柴油車一樣省油,其污染排放量甚至低於無鉛汽油車,這樣的科技成就讓許多汽車工程師嘖嘖稱奇。然而在2014年,研究單位發現:福斯其實是用不正當的方法來達到這些「成就」。
福斯高層命令該廠工程師,設法在環保單位進行污染排放測試時作弊。福斯知道在測試過程中,環保單位會使用特殊的測試方式和參數,所以他們針對這一點,改寫柴油車內部的控制程式:一旦偵測到使用到這些參數時,引擎就會以特殊的模式運作,藉以降低污染排放,得到漂亮的測試成績。
透過這種作弊方式,福斯汽車掩飾了「清潔柴油車」的污染事實:其引擎運轉時產生的氮氧化物,嚴重超過美國聯邦法規許可標準值,最高超標達到四十倍。氮氧化物正是造成肺癌的元兇之一;麻省理工學院的科學家估計,這種污染量會造成六十人死於肺癌,而這估計值還僅僅包括美國一地而已。
正是軟體工程師寫出來的程式碼,成了無辜受害者的殺手。2016年,福斯汽車為這樁醜聞,付出高達147億美元的代價;而這個案子也將成為史上最大的環境悲劇之一。一切的一切,都是來自於幾個聽命行事的軟體工程師。
軟體開發者的自覺與自省
有句俗話說:「能力愈強,責任愈大。」這個世界日漸依賴開發者創造出的程式碼來運作,因此程式開發者很快就變成世界上最有權力的一群人。
軟體工程師掌握改變世界的權力,更應負責任地小心運用,萬勿為虎作倀。
程式開發已經變成一種超級權力。靠著軟體,開發者可以按照自己的意志改變現實;可以造福人群,讓世界更加美好,但也能輕易毀了這個世界。你或許可以欺騙監管單位、瞞過警察、騙過法官,甚至隻手遮天,把整個社會大眾全都蒙在鼓裡,壞事做盡,依然逍遥法外。但這是不對的。有能力隱瞞一切真相,不表示你就是對的。
開發者既然掌握極大的權力,當然也應肩負極大的責任,以負責的態度運用手上的權力。
如果你是軟體開發工程師,或是想要躋身開發者之列,筆者建議各位詳讀Bill Sourour寫的這篇〈我依然引以為恥的程式碼〉(The code I’m still ashamed of)。
如果有人要你撰寫明顯違法,或是用來為惡的程式碼,你可以直接向媒體爆料。上面的三個案例,正是良心發現的工程師向媒體投訴,才讓惡果不再持續下去。
請大家牢記:只有你,才能阻止邪惡的程式碼繼續為非作歹。