很多進行持續(xù)集成實踐的軟件開發(fā)團隊雨饺,都會在開發(fā)人員的工位附近的顯著位置,擺放一個大顯示器钠龙,接上持續(xù)集成流水線炬藤。一旦流水線運行出現(xiàn)問題,比如編譯錯誤或自動化測試運行失敗碴里,就會顯示告警的紅色畫面沈矿,提醒開發(fā)人員及時修復。
但我在不少開發(fā)團隊看到的實際情況卻是咬腋,大部分這樣的流水線健康顯示屏羹膳,就是一個擺設(shè)。開發(fā)人員根本就不關(guān)注根竿。即使顯示屏變紅好幾天了陵像,也無人修復(如圖1)就珠。
持續(xù)集成流水線健康狀態(tài)顯示屏的初衷是好的。因為它仿照了豐田公司造汽車時在流水線上設(shè)置安燈系統(tǒng)以提升質(zhì)量的做法醒颖。即流水線上任何一位工人妻怎,只要發(fā)現(xiàn)汽車出現(xiàn)質(zhì)量問題,就會拉安燈繩泞歉,停下流水線逼侦,提醒組長過來和他一起解決問題。這樣能極大減少返工成本腰耙,提升產(chǎn)品質(zhì)量榛丢。
一般來說,流水線健康顯示屏成效差的主要原因沟优,是流水線上根本就沒有運行有效的自動化測試涕滋,而只是運行基本的編譯和打包任務(wù)睬辐。而如果編譯和打包出現(xiàn)問題挠阁,一般都由開發(fā)組長來修復,所以開發(fā)人員就不再關(guān)注了溯饵。要是開發(fā)組長平時開會很忙侵俗,就會出現(xiàn)好幾天都沒空修復的情況。
一些企業(yè)的IT部門丰刊,會請咨詢師幫助開發(fā)人員掌握編寫有效的自動化測試的技能隘谣,并將測試運行在流水線上,且要求開發(fā)人員無論是誰啄巧,只要看到了流水線健康顯示屏出現(xiàn)紅色告警寻歧,或聽到警報器鳴響,就要立即去修復秩仆。制定這樣的持續(xù)集成流水線紀律码泛,能解決上述問題嗎?
未必澄耍。
開發(fā)團隊持續(xù)集成流水線紀律落地的實際成效噪珊,還取決于在同一流水線上工作的開發(fā)人員數(shù)量。數(shù)量越少齐莲,效果越好痢站。在同一流水線上工作的開發(fā)人員,意味著他們的代碼最終都會合并到這條流水線上选酗。
上述預測阵难,是根據(jù)社會心理學的責任稀釋假說做出的。責任稀釋假說芒填,指“目睹緊急情況的人越多多望, 他們中任何一個人出面干預的可能性都越小”嫩舟。這個假說由社會心理學家Bibb Latané 和 John Darley 提出,并在他們于1968年所做的實驗中獲得支持怀偷。
啟發(fā)這個假說和實驗的家厌,是1964年發(fā)生在美國的深夜女子遇害案∽倒ぃ“1964 年的一個深夜饭于,年輕女子Kitty Genovese在返回公寓(如圖2)時,在一場持續(xù) 45 分鐘的襲擊中慘遭殺害维蒙£溃《紐約時報》報道稱,38 名公寓居民要么從窗戶看到襲擊颅痊,要么聽到吉諾維斯的尖叫聲殖熟,但沒有人試圖幫助她,甚至都沒人報警斑响。盡管我們現(xiàn)在知道《泰晤士報》夸大了無所作為的目擊者數(shù)量(Cook菱属,2014;Pelonero舰罚,2014)纽门,但這次謀殺報道生動地捕捉到了公眾的恐懼,并在當時迅速傳遍全美营罢∩土辏“(Aronson, E.; Wilson, T. D.; Sommers, S. R.; 2021)
出于對人們見死不救原因的好奇,Bibb Latané和John Darley這兩位在紐約大學任教的社會心理學家饲漾,決定研究一下遇害女子Genovese的鄰居所處的社會情境蝙搔。他們在1968年,用實驗模擬了一個人命關(guān)天的緊急情況考传。實驗結(jié)果發(fā)現(xiàn)吃型,當受試者面臨要出人命的緊急情況,并意識到周圍有4個旁觀者時伙菊,只有31%的概率會去施救败玉。若旁觀者下降為2人,施救的概率上升到62%镜硕。當周圍沒有旁觀者运翼,施救的概率會達到85%(如圖3)。
責任稀釋假說沦补,能解釋為何豐田公司的安燈繩的成效乳蓄,要好于持續(xù)集成流水線健康顯示屏。因為豐田汽車生產(chǎn)線上發(fā)現(xiàn)汽車質(zhì)量問題的工人夕膀,身邊沒有旁觀者虚倒,所以工人出手拉安燈繩的概率會很高。而一個由多位開發(fā)人員共用的持續(xù)集成流水線健康顯示屏所展示的質(zhì)量問題产舞,最先的發(fā)現(xiàn)者卻是機器魂奥。團隊雖然制定了持續(xù)集成流水線紀律,但當多位開發(fā)者同時看到流水線質(zhì)量告警易猫,就會出現(xiàn)責任的稀釋耻煤,出手修復問題的概率會降低。
責任稀釋假說和實驗准颓,給了開發(fā)人員有效進行持續(xù)集成實踐的兩點啟發(fā)哈蝇。當然,這兩點啟發(fā)的前提瞬场,是開發(fā)人員編寫了有效的自動化測試买鸽,并運行在流水線上涧郊。
第一贯被,工作在同一條流水線上的開發(fā)人員數(shù)量,如果控制在2~3人左右妆艘,那么開發(fā)人員主動解決流水線所發(fā)現(xiàn)的軟件質(zhì)量問題的概率彤灶,會高于開發(fā)人數(shù)更多的情況。有人擔心2~3人的開發(fā)團隊是不是人太少了批旺。在2022年之前是這樣的幌陕。但從今年開始,有了熟悉編程的類似ChatGPT強大的人工智能的幫助汽煮,再加上使用領(lǐng)域驅(qū)動設(shè)計DDD進行服務(wù)的拆分搏熄,組建2~3人的開發(fā)團隊,已經(jīng)不再是夢想暇赤。
第二心例,工作在同一條流水線上的開發(fā)人員數(shù)量,如果難以將控制在2~3人左右鞋囊,假設(shè)人數(shù)有5人止后,那么可以將給這5人共用的持續(xù)集成流水線健康顯示屏撤掉,再為每位開發(fā)人員單獨安裝一個僅供自己看的流水線健康顯示屏。同時要求每位開發(fā)人員译株,當向流水線合并代碼后瓜喇,需要觀察自己那塊流水線健康顯示屏變?yōu)榻】档木G色,才算合并成功歉糜。若發(fā)現(xiàn)紅色警報乘寒,因為只有她/他一人在場,周圍沒有旁觀者匪补,那么她/他主動修復流水線所發(fā)現(xiàn)的問題的概率會達到最大肃续。
以上就是將社會心理學的研究成果,運用到做軟件的人的工作中的一個實例叉袍。
如果你想驗證第二點啟發(fā)是否有效始锚,可以做一個有對照組的實驗。為了簡便起見喳逛,可以針對同一個開發(fā)團隊做實驗瞧捌。即在多位開發(fā)人員共用流水線健康顯示屏的情況下,統(tǒng)計開發(fā)人員主動修復流水線所發(fā)現(xiàn)的問題的概率润文。然后將公共顯示屏換成個人顯示屏姐呐,并按上述第二點啟示的描述,要求開發(fā)人員主動修復流水線問題典蝌。此時再統(tǒng)計一下開發(fā)人員主動修復流水線所發(fā)現(xiàn)的問題的概率曙砂。前后對比概率,就能驗證你的開發(fā)團隊的持續(xù)集成紅色告警實踐骏掀,是否支持責任稀釋假說鸠澈。
如果你覺得本文對你和其他做軟件的人有用,歡迎點贊截驮、評論和轉(zhuǎn)發(fā)笑陈。你的這些鼓勵,會激勵我繼續(xù)寫下去葵袭。
參考書目
Aronson, E.; Wilson, T. D.; Sommers, S. R.; 2021; Social Psychology 10th Edition Global Edition; Pearson
Cook, K.; 2014; Kitty Genovese: The murder, the bystanders, the crime that changed America. New York: W. W. Norton.
Pelonero, C.; 2014; Kitty Genovese: A true account of a public murder and its private consequences. New York: Skyhorse Publishing.