有一天,我走在路上,看到了一個屎色的自行車棚。車棚顏色飽滿,讓我不禁停下了腳步。在陽光的照射下甚至感覺聞道了什麼莫名的味道。
路邊走來一個老大爺,站到了我的旁邊,開始吐槽起來:“如果我是市長,一定不會批准人們使用這個顏色來建造自行車棚!簡直是太可惡啦!”
我對著大爺笑了笑作為迴應,然後轉身走開。
但內心卻升起了疑問:“自行車棚到底應該使用什麼顏色?”
自行車棚應該使用什麼顏色?
簡短的回答是:你不需要關心這個問題。
長一點的解釋是:擁有建造一個自行車棚的能力並不代表你就要阻止別人建造一個屎色的自行車棚。
這個比喻是說:不能因為你懂,就要去針對每一個細枝末節爭論不休。有人發現一個問題所引發的爭論會與問題的複雜度成反比。
這是什麼梗?
在上古世紀(約 1999 年左右),FreeBSD 開發社群在關於 sleep(1) 函式是否應該接受非整數引數(以精確到毫秒、微秒的級別)展開了一場曠日持久的爭論。
每個人都能看懂這個問題,於是每個人都開始發表自己的看法,導致當時的郵件列表裡充滿了關於這個問題的討論。
當時 FreeBSD 的精神領袖 Poul Henning Kamp 在一封標題為 [A bike shed (any colour will do) on greener grass...] 的郵件中引用了自行車棚 (Bikeshed) 這個說法:
The sleep(1) saga is the most blatant example of a bike shed discussion we have had ever in FreeBSD. The proposal was well thought out, we would gain compatibility with OpenBSD and NetBSD, and still be fully compatible with any code anyone ever wrote.
Yet so many objections, proposals and changes were raised and launched that one would think the change would have plugged all the holes in swiss cheese or changed the taste of Coca Cola or something similar serious.
"What is it about this bike shed ?" Some of you have asked me.
他說關於 sleep(1) 函式的討論是在 FreeBSD 社群內出現過的、自行車棚問題的典型代表。這個問題引發了那麼多的反對、建議以及變更,搞得好像是一旦做了這個調整,世界上所有瑞士乳酪上小孔都會被堵住、所有可口可樂都會變味一樣。
從此之後,在 FreeBSD 社群內,Bikeshed(自行車棚) 這個單詞就有了特殊的含義,通常用來指 某些簡單到所有人都可以發表觀點,並且幾乎所有人都會去發表觀點的問題。
久而久之,隨著 FreeBSD 開發者當時在網上的影響力,Bikeshed(自行車棚) 這個說法逐漸傳播開來。
帕金森定理
但 Bikeshed (自行車棚) 到底是從何說起的呢?
在 1957 年,英國作家 西里爾·諾斯古德·帕金森 提出了「帕金森瑣碎定理」,用來說明大型組織會花費大量時間在討論無關緊要的瑣事上,但是真正重大的決議反而可以輕鬆過關這種現象。
帕金森描述了一個虛構的財政會議,其中有三個議題:第一項是搭建一個價值千萬英鎊的核反應堆,第二項是建一個價值 350 英鎊的員工自行車棚,第三項是每年為聯合福利議會咖啡店贊助 21 英鎊的提案。
關於這三個提案,帕金森分別做了描述:
-
一千萬英鎊的核反應堆在數額和技術含量上都高高在上、遙不可及,在 2.5 分鐘的討論之後便通過了。一名議會成員提出了完全不同的計劃,然而沒有人願意放棄議會目前取得的進展所以響應寥寥,另一位熟悉該議題的成員略有擔憂,但是他覺得無法向議會的其他成員解釋清楚,最終作罷。
-
自行車棚的議題則處於所有人的理解範圍之內,並有豐富人生經驗予以支撐意見,議會成員 Softleigh 先生表示鋁製棚頂價格高昂,應使用石棉;Holdfast 先生提議使用鍍鋅鐵;Daring 先生則對是否有必要建自行車棚表示質疑;Holdfast 表示反對。辯論自此拉開帷幕...... 在經過 45 分鐘的討論,並得出有可能節省 50 英鎊的結果之後,議會成員們帶著完成使命的成就感紛紛坐回原位。
-
帕金森繼續描寫第三項議題:“也許有些成員無法區分鋁製棚頂或石棉棚頂,但是所有人都瞭解咖啡:它是什麼,應該如何做,該在哪買,以及到底該不該買。這項議題將會佔用議會成員一小時十五分鐘的時間,然而由於時間關係,會議結束時議員要求會議祕書提供更多資訊,同時將此項議題的決定留待下次議會處理。”
當下的自行車棚問題
現在我們知道 Bikeshed (自行車棚) 可以用來代表一些無關緊要但會引起大量爭論的問題,那麼我們軟體開發行業當下的自行車棚問題有那些呢?
- 世界上最好的程式語言是?(或許這個問題已無需爭論)
- React 和 Vue,哪個更好?
- 世界上最好的編輯器是哪個?Emacs 還是 Vim?
- 程式碼中的縮排應該用 Tab 還是空格?
- ......
類似的問題還有很多,並且通常爭論不休。與其參與到其中圖個嘴上痛快,不如踏踏實實地關注眼前的問題。願你能夠辨別自行車棚問題、遠離自行車棚會議,充實地過好每分每秒。
還有更多關於自行車棚的資料,感興趣可以繼續閱讀:
- Why Should I Care What Color the Bikeshed Is?
- Who was Brett Glass named in the original "bikeshed" email?
關注微信公眾號:創宇前端(KnownsecFED),碼上獲取更多優質乾貨!