但剃牦牛毛是有趣的
从零开始构建的乐趣 2019.07.31 KO | EN 本博客不使用静态网站生成器或像 Jekyll、Hugo 或 Gatsby 这样的框架。一开始我试用了其中几个,但它们给我定制的自由度太小,所以我决定自己构建博客。最初我只是用 HTML 写帖子,但这太不方便了,于是我建立了一个将帖子写为 JSON 文件的系统。这对于较长的文章来说也有点尴尬,因此我开发了一个将 Markdown 文件转换为 HTML 文件的服务。然后我构建了一个工具来编译和部署生成的文件。最终,我从零开始构建了一个静态网站生成器。这种事情被称为剃牦牛毛。这个术语是由麻省理工学院人工智能实验室的博士生 Carlin Vieri 创造的,指的是为了一个单一目标而做一系列相关任务,直到完全失去原来的目的,最终陷入与目标毫无关系的事情。LangDev IRC 上提到的一个例子清楚地解释了为什么叫剃牦牛毛。我拿了一把斧头去砍树。斧头太钝了,所以我去找一块石头来磨尖它。但是我听说某个村庄有一块很好的石头。于是我找一头牦牛去那个村庄。牦牛的毛太长了,于是我开始给它剃毛。还有一个来自企业家、市场营销专家和作家 Seth Godin 的例子。“我今天应该洗车。”“哦不,水管坏了。我最好去 Home Depot 买个新的。”“但 Home Depot 在 Tappan Zee 大桥的另一边。我必须通过收费站,所以我需要一个 E-ZPass。”“等一下!我想我可以借邻居的 E-ZPass……” “但是 Bob 不会在我儿子归还他借的枕头之前借给我他的 E-ZPass。”“那个枕头掉了那么多牦牛毛,我不能就这么还给他。我得重新填充牦牛毛。”所以,仅仅是为了洗车,我最终到了动物园剃一头牦牛。这两个故事都出现在这个术语被创造之后;术语本身其实是在另外的地方诞生的。玩了一个星期二夜间的曲棍球的 Carlin Vieri,在午夜吃晚餐并看电视。电视上正在播放《Ren & Stimpy Show》的剃牦牛毛日剧集。剧情是这样的:剃牦牛毛日还有五天。Ren 和 Stimpy 挂着一个脏尿布装饰房子,把卷心菜沙拉倒进他们的靴子里。然后他们在浴室洗手槽上放置剃须泡沫和剃刀,祈祷一个剃过毛的牦牛能骑着魔法皮划艇飞进来给他们带来礼物。那天晚上,牦牛从浴缸的排水管里出现,剃毛并在离开之前在水槽里留下了一个礼物:它用来剃毛的那种泡沫的浮渣。Carlin Vieri 觉得这太离奇了。几天后,在熬夜处理文书工作(像获得管理员的许可、设置 DHL 账户和寻找邮局这样烦人的琐事)时,他告诉同事他在剃牦牛毛。接下来的几个月里,他继续在实验室里和人们使用这个短语,这个术语就流行开了。那部动画片太奇怪,与软件几乎没有关系,以至于它的起源似乎不为人所知。工程师(或运行工程团队的管理者)常犯的一个错误是“从零开始构建”。一位工程师可能不太喜欢现成的解决方案,或者可能想证明自己的技能。客户或经理可能对现有解决方案的功能有误解,或者可能认为这些解决方案并不完全符合要求。无论是生产还是玩具项目,大多数项目都有有限的预算和有限的时间。从零开始构建最终会让你开始剃牦牛毛,一旦开始剃毛,就无法预测结果会怎样。最终,你会放弃原始目标。在这种情况下,正确的做法是找到一个能够满足核心需求的替代方案,并尽量缩减工作量。但剃牦牛毛是有趣的。剃牦牛毛一定是有趣的。创造出以前不存在的东西,发现和解决问题,通过知识链挖掘以理解某件事是如何运作的:所有这些都会吸引工程师。自己构建想要的东西这个想法,即使你不是工程师,也会让人感到吸引。在《神话般的人月》中,Frederick P. Brooks Jr. 给出了为什么编程有趣的理由:做事情的纯粹快乐。做出对其他人有用的东西的快乐。将一个复杂、像谜一样的物体,由相互连接的运动部件构成,并观察你构建的规则在微妙循环中展现出来的迷恋。不断学习的快乐。用易于处理的表达媒介工作时的快乐。TeX 也是在剃牦牛毛中诞生的。TeX 是斯坦福大学教授 Donald Knuth 创建的排版系统;这个名称涵盖了运行程序的整个系统,包括排版语言和处理它的编译器。因为它使公式的输入变得简单,因此在社会科学以及科学和工程中被广泛使用。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡