The Art of bodging

Last updated on August 22, 2023 pm

今天看到一个抨击少数派的论调,突然想到了这一点。

Bodging?

Bodge v. Make or repair (something) badly or clumsily.
– Lexico

如果在读的你也是CS同行,你应该能够理解这样一个情景:

开发的App马上要上线了,但处理数据库的模块突然出了bug导致无法正常回收废旧条目。
距离实际上线还有十几分钟,而且因为App本身Highly Demanding而绝对不能延迟,这时候要去改已经编译好并且部署了的后端服务模块已经来不及了。
你的一位同事临时想了一个Dirty Hack:用cron调用一条SQL语句定时清理24小时内没有更新的条目。
App顺利上线了,虽然时不时会有条目丢失需要重新补上,但数据库没有过度膨胀导致整个服务降级。
这给了你们团队宝贵的时间去修补实际的后端,很快,bug被确定,一切回复了正常。

上述同事实行的举措就叫Bodge。它的核心思想就是:虽然手法肮脏,稳定性差,也不是什么正经的解决方案,甚至时不时会失效需要重新顶替,但在当前的情况下,它有用,它管用。
Bodging不是一种妥协,它是救命稻草。如果你面对的问题关乎大局甚至生死攸关,你不会去试图达到什么“优雅的解决方案”,Get things done是你的唯一要务。
(可能是)史上最著名的Bodging之一,应该要算Apollo 13任务。“Try to fit square ‘pegs’ into a round hole”真正的拯救了一个任务。在这次任务后,NASA对所有的宇航任务都做了材料、接口统一化,以保证某一部件灾难性失效下能有充足的零部件顶替。
说到NASA,还有一个相关的Bodging的例子——Flight Rules

Flight Rules are the hard-earned body of knowledge recorded in manuals that list, step-by-step, what to do if X occurs, and why. Essentially, they are extremely detailed, scenario-specific standard operating procedures. …
NASA has been capturing our missteps, disasters and solutions since the early 1960s, when Mercury-era ground teams first started gathering “lessons learned” into a compendium that now lists thousands of problematic situations, from engine failure to busted hatch handles to computer glitches, and their solutions.
– Chris Hadfield, An Astronaut’s Guide to Life on Earth

基本上来讲,这就是一本Bodging method总集,为了方便宇航员紧急情况下有所参照而不会走前人的老路。
这就是Bodging。It’s Dirty, but with right method, it will always work.

少数派?

我所说的“论调”在这里:

抨击少数派的论调

所谓“吃饱了撑着”,实际上是一种不甘于Bodging的态度。作为一名长期少数派读者,我很清楚这一”屠龙刀切菜“实际上是对优雅的工作方式的不懈追求。
然而,很多时候在实际工作中,并不是一栋大厦就必须建在坚实的地基之上。有些时候,有一根看似脆弱且廉价的钢筋作为支撑,足以让整个大厦保持平衡。
从我自己的运维实践中,尤其如此。我们心理很清楚系统有多少看似致命的漏洞,那些任何Best Practice都会要求覆盖甚至被大多数人称作“安全 101 ”的东西我们都没有实施。然而事实是,Pixivel安全运行了一年多,除了运维团队主观失误之外从未下线。
如果有闲情逸致,没人会阻止你因为想做一个优雅的实现方案而钻牛角尖。然而生命有限,与其去Best Practice工作流程,不如去多创造些对人类、对宇宙有益的东西。在一些不是那么重要的事情上,Bodging一点,能腾出富足的精力去应对生活的困难,真正让自己『高效工作,品质生活』。

延伸阅读:


The Art of bodging
http://elfile4138.moe/2022/02/The-Art-of-bodging/
Author
Matrew File
Posted on
February 2, 2022
Updated on
August 22, 2023
Licensed under