“旁觀者效應”是如何毀掉我們的程式碼的
旁觀者效應
1964年,紐約昆斯區,28歲的Kitty Genovese在經受了長達35分鐘的性侵犯後最終被謀殺致死,共有38個本地區人性正常的居民經過,但沒有一人提供幫助。
這個故事例證了‘旁觀者效應’中的一個不幸的心理特:援助的機率與旁觀者人數成反比。旁觀者數量越多,他們當中任何一人進行援助的可能性越低。
作為程式設計師,我們幾乎每天都能看到“旁觀者效應”在起作用。如果你的程式碼庫已經有了相當的體積和年月,你很可能知道它們會存在一些問題,比如缺乏封裝或模組分離,類繼承結構過於複雜,方法太長——讀起來就像是Stephen King最近寫的小說,未經測試或無法通過測試等等——但沒人想去做點什麼。
“旁觀者效應”的問題根源
問題的根源是缺乏物主(所有者)身份。我們總是在假設別人會來修補這些問題。如果這些問題出現在我們的程式碼庫中,我們很可能對之無動於衷,因為“這事兒跟我無關”。程式設計師對這樣的問題通常的反應:這是別的程式設計師造成的問題,我才不管呢。這種“這事兒跟我無關”的態度很流行。
可是,這事兒事實上跟你有關。
外差因素(Externalities)的負面效應
經濟學上有個詞叫做“外差因素(Externalities)”,它形象的描繪了這樣一個情況:A人從某件事情上獲利,但B人卻要為此買單或部分的買單。你作為B人,免不了會遇到要去修改A人所寫的恐怖的類程式碼。你以為這個類應該是經過精心設計的,你以為它們都有相應的功能測試程式碼。但事實上,你為了一個小小的修改做了大量的工作。你的老闆會奇怪,這樣一個簡單的任務為什麼需要這麼多的時間。別人犯下的愚蠢錯誤最終卻要你來擦屁股——這就是“外差因素(Externalities)”的負面效應。
培養物主身份
糾正“外差因素“的負面作用的方法很簡單:接受問題的所有者身份——不論問題是不是由你造成的。為什麼要在意這個問題是誰的責任呢?造成這些問題的人很可能早就不知去向了。還在等待他們來修改這些問題嗎?你永遠都等不到。我們應該這樣去想:除了我,沒有人會來修改這些程式碼。
一旦你這樣做了,一種所有者的身份就開始出現了。當你花了很大的功夫修改好了這些問題,而問題再次出現時,這些問題自然歸你所有了,因為你為它們付出了汗水。
這樣一來,我們就會開始”義務“的改進我們的程式碼庫。你開啟一段有問題的程式碼,你憂心忡忡的研究它,你憂心忡忡的心情很快雲消霧散了,因為你發現有另外一個”聖人“已經把它修復了——多麼美好的世界呀!這樣的事情之所以能發生,是因為每個人都找到了自己的責任感。這是最美好的時刻。
行動起來!馬上!
感覺如何?在接下來的一週裡找一天時間,翻出一段程式碼,就當是走錯了路,拐進了一條本不想走到衚衕,修改一下。提交你的修改,並附加這樣的註釋:
/* JKH 09/12/2012 - 重構了有問題的事務處理。如果這是你喜歡的,請將此做法傳遞! */
相關文章
- 少寫一個`var`是如何毀掉我們網站的網站
- 信仰是如何毀掉程式設計師的程式設計師
- 黑客是如何知道我們常用的密碼的黑客密碼
- 如何結構化我們的程式碼
- 我們是如何使用 Electron 構建 Linux 桌面應用程式的Linux
- 我們應該如何編寫高質量的前端程式碼前端
- 我們是如何選擇框架的?框架
- 如何優化我們的程式碼(vue專案)優化Vue
- 使用者調研資料是如何欺騙我們的
- 別讓“防禦性程式設計”毀了我們的職業程式設計
- 如何讓我們的Android應用程式保活?Android
- 程式設計師如何保證我們的程式碼質量程式設計師
- 封裝我們的VBA程式碼封裝
- 我們的創業專案是如何夭折的創業
- 拱衛網路安全,無人可做旁觀者
- Nginx 是如何解決驚群效應的?Nginx
- 大前端摧毀了原生開發者的一切,但是我們應該開心前端
- 我們團隊是如何落地DDD的(1)
- 我的程式觀 (轉)
- 我是如何將業務程式碼寫優雅的
- 太多指令碼將會毀掉持續交付指令碼
- 哥們,B/S瞭解嗎?——啥玩意,我是敲程式碼的
- 那些被遊戲公司成就的和毀掉的IP遊戲
- 物聯網是如何影響我們的生活
- 如何殺掉一個使用者下的所有程式並drop掉這個使用者
- 記一次旁觀他人的技術面試面試
- 我們是如何設計儲存4億個電話號碼的
- 我在工作中是如何優化程式碼的優化
- 我們的程式“猿”
- 如何優雅的替換掉程式碼中的ifelse
- 我們正在錯誤的組織程式碼!
- 我們不需要程式碼之外的文件
- 我是如何評估面試者的軟技能的?面試
- 當我寫程式碼時 我寫的是
- 面試時如何擺脫嘴笨帶來的困擾?能力表達正在摧毀我們的前途面試
- 我們是如何將一個專案做爛的
- 你的程式碼是我的地獄
- 樂觀的程式設計師們程式設計師