由屎色自行车棚引发的思考

7,799 阅读5分钟

有一天,我走在路上,看到了一个屎色的自行车棚。车棚颜色饱满,让我不禁停下了脚步。在阳光的照射下甚至感觉闻道了什么莫名的味道。

路边走来一个老大爷,站到了我的旁边,开始吐槽起来:“如果我是市长,一定不会批准人们使用这个颜色来建造自行车棚!简直是太可恶啦!”

我对着大爷笑了笑作为回应,然后转身走开。

但内心却升起了疑问:“自行车棚到底应该使用什么颜色?”

自行车棚应该使用什么颜色?

简短的回答是:你不需要关心这个问题。

长一点的解释是:拥有建造一个自行车棚的能力并不代表你就要阻止别人建造一个色的自行车棚。

这个比喻是说:不能因为你懂,就要去针对每一个细枝末节争论不休。有人发现一个问题所引发的争论会与问题的复杂度成反比。

这是什么梗?

在上古世纪(约 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 英镑的提案。

关于这三个提案,帕金森分别做了描述:

  1. 一千万英镑的核反应堆在数额和技术含量上都高高在上、遥不可及,在 2.5 分钟的讨论之后便通过了。一名议会成员提出了完全不同的计划,然而没有人愿意放弃议会目前取得的进展所以响应寥寥,另一位熟悉该议题的成员略有担忧,但是他觉得无法向议会的其他成员解释清楚,最终作罢。

  2. 自行车棚的议题则处于所有人的理解范围之内,并有丰富人生经验予以支撑意见,议会成员 Softleigh 先生表示铝制棚顶价格高昂,应使用石棉;Holdfast 先生提议使用镀锌铁;Daring 先生则对是否有必要建自行车棚表示质疑;Holdfast 表示反对。辩论自此拉开帷幕...... 在经过 45 分钟的讨论,并得出有可能节省 50 英镑的结果之后,议会成员们带着完成使命的成就感纷纷坐回原位。

  3. 帕金森继续描写第三项议题:“也许有些成员无法区分铝制棚顶或石棉棚顶,但是所有人都了解咖啡:它是什么,应该如何做,该在哪买,以及到底该不该买。这项议题将会占用议会成员一小时十五分钟的时间,然而由于时间关系,会议结束时议员要求会议秘书提供更多信息,同时将此项议题的决定留待下次议会处理。”

当下的自行车棚问题

现在我们知道 Bikeshed (自行车棚) 可以用来代表一些无关紧要但会引起大量争论的问题,那么我们软件开发行业当下的自行车棚问题有那些呢?

  • 世界上最好的编程语言是?(或许这个问题已无需争论
  • React 和 Vue,哪个更好?
  • 世界上最好的编辑器是哪个?Emacs 还是 Vim?
  • 代码中的缩进应该用 Tab 还是空格?
  • ......

类似的问题还有很多,并且通常争论不休。与其参与到其中图个嘴上痛快,不如踏踏实实地关注眼前的问题。愿你能够辨别自行车棚问题、远离自行车棚会议,充实地过好每分每秒。

还有更多关于自行车棚的资料,感兴趣可以继续阅读:


关注微信公众号:创宇前端(KnownsecFED),码上获取更多优质干货!