《Humans vs Computers》作者访谈录
內容提要
\\- 《Humans vs Computers》其中包含一系列故事,其中有的很有趣,也有的很可怕,這些故事都是人們在軟件缺陷和二進制邏輯中能夠遇到的\\t
- 現代軟件交付是持續努力的過程,它將現實世界中的某些部分進行抽象、簡化,并且將其建模成為一個自動化流程。然而,缺乏專業領域的知識、迫于時間的壓力以及不完善的信息常常會使我們過度簡化現實世界,因此邊緣問題就會在這些漏洞中涌現出來\\t
- 鑒于現在有許多軟件正在成為我們生活中的一部分,看起來很小的錯誤也有可能對人們造成嚴重的影響\\t
- 現在許多軟件開發團隊似乎與用戶端“絕緣”了,以至于他們很難想象到一個很小的錯誤也會造成嚴重影響,例如一個小數點顯示錯誤有可能會將用戶送進醫院\\t
- 希望這本書能夠幫助讀者同那些遭受我們軟件錯誤的用戶進行換位思考,畢竟最后總是用戶在付出代價\
軟件開發者、作家、思想領袖Gojko Adzic繼《Impact Mapping》和《Specification by Example》兩書之后又出版了一本新書《Humans vs Computers》。在這本書中他以講故事的形式闡述了軟件缺陷和軟件錯誤對于人們現實生活的影響,并且提出了一些建議來幫助軟件開發者避免這些錯誤。
\\這本書的主題可以被概括如下:
\\\我們的生活正越來越多地被軟件進行跟蹤和監控。在這個美好的新世界里,人們很難應對信息超載的問題。政府和公司正在依靠計算機自動檢測欺詐行為、預測各種行為以及進行行政執法。但是,有一些不靈活的自動化程序,往往不會比冰箱聰明多少,它們正在做著能夠改變我們生活的決定。計算機會根據指示作出決定,但是這些指示是人制定的,是有缺陷的!結果可能是意想不到的、災難性的,也可能非常非常有趣。
\\\本書的樣章可以點擊這里進行下載,并且可以點擊這里進行購買(InfoQ讀者在2017年10月11日前購買會有30%的折扣)。
\\紙質版書籍可以點擊這里進行購買。
\\Gojko和InfoQ談了關于這本書的背景,他為什么要寫這本書,以及這本書是寫給誰的。
\\InfoQ:是什么促使你寫了這本書,你想要通過它解決什么問題呢?
\\\《Humans vs Computers》其中包含一系列故事,其中有的很有趣,也有的很可怕,這些故事都是人們在軟件缺陷和二進制邏輯中能夠遇到的。有這樣一件事,有一個人的個性化車牌給他帶來了一個月2000次的停車罰款,他也因此而入獄,而他又被自動化假釋審查系統提前三年釋放。這些警示性故事有望幫助人們預防、避免和減少此類問題在他們自己的工作中所產生的影響。
\\現代軟件交付是持續努力的過程,它將現實世界中的某些部分進行抽象、簡化,并且將其建模成為一個自動化流程。然而,缺乏專業領域的知識、迫于時間的壓力以及不完善的信息常常會使我們過度簡化現實世界,因此邊緣問題就會在這些漏洞中涌現出來。例如,圍繞微服務構建起來的復雜分布式系統通常需要某種生產監控,用于通過測試數據處理端對端事務,并且在成功檢測后刪掉這些測試用例。我們很難想象到這樣的事情可能會造成嚴重的損害,有一個例子是,由于負責處理轉機航班的航空公司未留任何痕跡地將一名叫Jeff Sample的旅客機票刪除了,導致了Jeff Sample【譯注1】被滯留在布宜諾斯艾利斯機場。
\\回顧整件事,很容易看出這是有人愚蠢地疏忽了一個有效的名字,但這并不能真正幫助一個不得不花幾個小時在電話上與旅行社、卡片處理公司和航空公司代表爭論的人,以便他能夠繼續他的旅程。
\\鑒于現在有許多軟件正在成為我們生活中的一部分,看起來很小的錯誤也有可能對人們造成嚴重的影響。現在許多軟件開發團隊似乎與用戶端“絕緣”了,以至于他們很難想象到一個很小的錯誤也會造成嚴重影響,例如一個小數點顯示錯誤有可能會將用戶送進醫院。
\\我想要提高人們對這些問題的認識,并幫助人們通過預防常見的錯誤來構建更好的軟件。
\\\InfoQ:這本書的受眾是誰?讀者能從中獲得什么?
\\\這本書的受眾是每一個參與軟件交付的人,不論他在其中的角色是什么。參與需求和產品管理的人員將會得到一些關于如何避免典型分析盲點的好主意。參與架構、設計和開發的人可以從中學到常見的過度簡化的問題并且能夠學會在討論實現細節的時候提出更有價值的問題。參與測試和質量改進的人能夠得到一些可以用于嘗試的優秀示例和啟發,并且可以了解到一些特定問題的根本原因,以便他們能夠在問題出現的初期就解決掉它們。
\\我所寫到的這些問題是完全可預測的,而且是可以避免的,并且現在真的沒有理由還出現這些類型的bug了。雖然這些問題被編纂到各種軟件測試書籍中,但是往往被分類為啟發類的書籍,人們常常想不起來去讀它。通常情況下,只有測試人員會閱讀那些書,鮮有開發者會去關注它們。當然了,囿于時間緊迫人們也不會立刻就能回想起那些分類里的書籍,因此人們總是不斷地犯著同樣類型的錯誤。
\\這就是為什么我想用令人難忘的故事來說明這些問題的原因,無論你在軟件交付中扮演什么角色,都將對這本書產生興趣。故事使得想法始終存在于我們的大腦中。你可能想不起來有哪幾種方法會在監控系統時搞砸測試數據,但是你可以記住Jeff的示例,這將使你想得更多,并且防止類似的問題再次發生。
\\希望這本書也能幫助讀者從錯誤中找到更多的共鳴,因為最終我們總是為各種錯誤付出代價。這本書可以幫你不需要記住任何一種特定的技術就能交付更好的軟件。
\\\InfoQ:你將這本書分成了不同的章節討論了各種類型有關軟件的問題,都有哪些分類呢?還有你為什么這樣分章節呢?
\\\這本書的第一部分是“人工,但不智能(Artificial, but not intelligence)”,它處理的是決策算法中典型的錯誤,這是由于過度簡化了現實世界造成的。這部分有一些很好的故事,它們解釋了雙胞胎是如何破壞生物特征檢測的,時區混亂是如何造成交通混亂的,以及地理位置IP地址映射是如何導致人們被錯誤地指責為嚴重犯罪的。
\\第二部分叫做“世界上不可思議的事實(The surprising facts about our world)”,這一部分講述了一些奇怪而又奇妙的邊緣案例,這些案例打破了看似合理的驗證規則,比如有人的名字只有一個字符,或者名字中有太多的字符導致不符合駕照的要求。
\\第三部分叫做“算法快如食物(Algorithms as fast as food)”,這一部分涵蓋了工序自動化中典型的疏忽和問題。這其中包括,算法陷入自我強化的循環,導致股市崩盤;一家T恤公司在設計軟件初期鼓吹對女性的暴力行為;以及由于銀行軟件故障,一個澳大利亞男人意外獲得了無限的信貸。
\\第四部分叫做“狂之又狂的技術(Wild, wild tech)”,這一部分討論了現實世界中的概念,如時間、金錢和數量與計算機中的數字之間的映射存在的問題。這其中就包括了一些故事,比如關于小數四舍五入的誤差如何改變了一場選舉結果的故事;一個107歲的婦女為了上學是如何與當地議會抗爭的;以及一張折扣券是如何引發了數百人的摔跤比賽的。
\\\InfoQ:這本書中你最喜歡的故事是哪個?為什么呢?
\\\如果非要我選一個的話,那可能是關于來自洛杉磯的Robert Barbour的故事,他想要為他的汽車定制一個車牌。最上邊的兩個定制文字的選項是BOATING和SAILING,但是Barbour兩個都不想要,但是計算機表單有三個表單域(第三個可以自己填),并且都是強制要填的。于是,他就在第三個表單中填了“no plate(意思是前兩個都不想要)”。之后他的車牌就是按照他所填的選項(no plate)通過審核的。雖然車牌看起來很奇怪,但是Barbour決定不去抱怨了。一個月后,他開始收到來自加州各地逾期停車罰款的通知。當一輛違章停車的車輛沒有牌照的時候,警官們仍然要開罰單,計算機不會不作反應【譯注2】。官員們需要找一個變通的方案,但是人畢竟是人,有許多人會有和Barbour一樣的想法。截止到目前,Barbour每月至少收到2000張罰單,他的遭遇已經廣受媒體關注。他有幾次甚至不得不在法庭露面,解釋相關情況。問題變得頗具政治意味,因為所有相關的系統都無法迅速更新,相關部門就發布了一項指導方針,記錄沒有牌照的汽車為“MISSING”。但是,由于有人的車牌已經是“MISSING”了,同樣的問題依舊在上演。
\\當然了,很容易就能找到原因。用戶體驗設計人員創建了這些不靈活的表單,需求分析人員沒有涵蓋沒有牌照的汽車的情況,開發人員編寫的查詢語句將缺失的數據匹配給了有效的條目,而測試人員沒有發現這個bug。回顧整件事,總會有人感到內疚。但更有趣的問題是,為什么會出現這樣的問題。
\\我喜歡這個故事的原因是,它很好地說明了當人們向計算機提供了一段不可用或根本不存在的信息時,會發生什么,所以用戶會從中找到其他解決方法。真正的有趣的是,當幾個系統需要交換信息,并且它們都使用不同的解決方法的時候。一個系統中的占位符和標記會成為另一個系統中的有效數據,并且錯誤地進行復制和傳播。數據標記的問題可以在很長一段時間內保持休眠狀態,不會被人們發現。一旦這些記錄開始與有效的信息聯系起來,比如某人得到了一個“no plate”的車牌,混亂就開始了。
\\如果涉及到軟件交付的人能夠考慮多一下,就能完全避免這種情況的發生。強制放入數據不一定能保持正確性,有時恰恰相反。我經常在打印書籍的時候遇到問題,因為常常需要手機號碼才能發送訂單,然而我很少填寫這類信息。我輸入了我的電話號碼。但是,在半夜我接到了來自世界各地搞錯了的快遞員的電話。
\\\InfoQ:最后一章講的是“逆向猴子規則(Inverse Monkey Rule)”,這是什么?技術人員從這部分的內容中獲得哪些建議呢?
\\\我打算用這本書來闡述一些典型的、常見的、令人難忘的故事。然而,我不只是給讀者提供一些在喝酒的時候可以講的有趣故事,我還想給讀者留下明確的可操作的建議。這本書的最后一部分結合了所有的故事,提供了一些很好的建議和技巧,并且提供了對計算機系統進行分析、開發和測試的啟發。
\\最后一章的名字來源于émile Borel于1913年提出的著名的無限猴子定理(infinite monkey theorem)。Borel提出,如果有無限的時間和無限的嘗試次數,猴子們會創作出莎士比亞的作品。Borel的定理是統計學和微積分的一個很好的例子,但在實際情況下,其中事件發生的概率是無限小的。另一方面,對主題和結果的放大能夠給我們一些更有實踐意義的東西,在本書中用最少的時間涵蓋了盡可能多的問題。“再聰明的人,通過電腦鍵盤有意識地打字,不出幾個月也會敲出像猴子敲出的一樣的垃圾內容。”我把這個定理命名為“逆向猴子定理”。
\\最后一部分絕不是一個完整的測試用例列表或者是一個完整的測試策略,它只是幫你快速消化理解書中的故事。我的目的是讓大家在使用其它工具的時候把這本書當做一個檢查列表,并且希望能夠激發你的靈感想出更多想法。
\\\關于作者
\\Gojko Adzic是 Neuri Consulting LLP的成員。他也是2016年歐洲軟件測試杰出成就獎的獲獎者,同時,他還是2011年最具影響力的敏捷測試專家獎的獲獎者。Gojko所著書籍《Specification by Example》獲得了2012年Jolt最佳圖書獎,他的博客也獲得了2010年英國敏捷獎中的最佳在線出版物獎。Gojko是重要軟件開發會議的主要發言人,也是MindMup和Claudia.js的作者之一。作為一名顧問,Gojko幫助世界各地的許多公司改善了他們的軟件交付,其中包括一些最大的金融機構到小型創新的初創公司。Gojko專注于敏捷和精益的質量改進,尤其是通過實例和行為驅動開發來影響數據映射、敏捷測試和開發規范。
\\譯注1:由于旅客姓名中含有Sample(樣本)這一單詞,所以誤被認作測試樣本而被刪除。
\\譯注2:當違章停車的車輛沒有車牌的時候,計算機會標注為“no plate”,正因為Barbour的車牌是“no plate”,所以他會收到那些違章罰款。
\\查看英文原文:Article: Q\u0026amp;A on the Book \"Humans vs Computers\"
總結
以上是生活随笔為你收集整理的《Humans vs Computers》作者访谈录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ContextLoaderListene
- 下一篇: 2017年10月23日23:58:04