返回

文章详情

选择无聊的技术(2015)

Hacker News2026年8月13日 17:48

我职业生涯中发生的最好的事情,可能就是让凯伦来负责我。我呆够了时间,看到了凯伦的技术决策开始结出成果。我从中学到了很多,也因为这个原因,我学到了更多。如果没有凯伦如此透彻地掌握技术选择,我就不会自由地成为那个写《数据驱动产品现在!》的工程师。在过去的一年里,自从离开Etsy,我重新找回了关心技术的能力。我的想法已经凝聚到能够有条理地写下来。以下是凯伦的要点提炼,希望能略微震撼他。接受无聊。假设每家公司大约有三个创新代币。你可以随意使用这些代币,但供应在很长一段时间内是固定的。在达到一定稳定性和成熟度后,你可能会得到一些更多的代币,但一般倾向是高估你钱包里的内容。显然,这个模型是近似的,但我觉得它有帮助。如果你选择用NodeJS编写网站,你就花费了一个创新代币。如果你选择使用MongoDB,你就花费了一个创新代币。如果你选择使用存在一年或更短时间的服务发现技术,你就花费了一个创新代币。如果你选择自己编写数据库,哦天啊,你就有麻烦了。任何这些选择在你是一个Javascript咨询公司或数据库公司时可能是合理的,但你可能不是。你可能在一个公司工作,至少表面上是在重新思考全球商业、重新定义网络支付或追求其他合适的宏伟使命。在这种情况下,把你有限的注意力投入到创新SSH上是失败的绝佳方式。或者在最好的情况下,延迟成功。什么算是无聊?这有点棘手。“无聊”不应该与“糟糕”混淆。有些技术既无聊又糟糕。你不应该使用任何那些技术。但有很多技术选择是无聊且好的,或者至少足够好。MySQL是无聊的。Postgres是无聊的。PHP是无聊的。Python是无聊的。Memcached是无聊的。Squid是无聊的。Cron是无聊的。无聊的好处(受到如此限制)在于这些东西的能力是很好理解的。但更重要的是,它们的失败模式也很好理解。任何了解我的人都会明白,我现在呼唤唐·拉姆斯菲尔德的幽灵,只有在有强烈的不适感时才会这么做,但我必须这么做。说清楚,去他妈的这个家伙。选择技术时,你有已知的未知数和未知的未知数。已知的未知是这样的事情:我们不知道这个数据库达到100% CPU时会发生什么。未知的未知是这样的事情:天呐,我们甚至没想到写统计信息会导致GC暂停。这两组通常都是非空的,即使是对于已经存在了几十年的技术。但对于闪亮的新技术,未知的未知的数量显著增加,这一点很重要。全球优化。我毫不避讳地认为偏向无聊技术是件好事,但这并不是唯一一个需要考虑的因素。技术选择并不是孤立发生的。它们的范围触及到你的整个团队、组织以及从你所有选择的总和中出现的系统。将技术添加到公司是有成本的。作为一个抽象的说法这一点是显而易见的:如果我们已经在使用Ruby,那么将Python添加到组合中并没有感觉明智,因为由此产生的复杂性会超过Python的边际效用。但不知为何,当我们谈论Python和Scala或MySQL和Redis时,人们却失去了理智,抛弃了所有约束,开始疯狂讨论使用最佳工具来完成工作。你的工作简而言之就是将业务问题映射到涉及软件选择的解决方案空间。如果软件选择真的没有包袱,你确实可以选择一堆在当地最好的工具来应对各种问题。疯狂。创建与草图。你可能在选择技术的方式:”为工作选择正确的工具。” 但当然,包袱是存在的。我们称这些包袱为“操作”,在较小程度上称为“认知开销。”你必须监控这个东西。你必须搞清楚单元测试。你必须知道关于它的第一件事以便进行黑客攻击。你需要一个初始化脚本。在这里我可以继续说好几天,所有这些累积得很快。理智。创建与草图。你在担心操作是一个严重问题的世界中选择技术的方式(即,“现实”)。“为工作选择最佳工具”思维的问题是,它对“最佳”和“工作”这两个词采取了短视的看法。你的工作是让公司维持运转,天哪。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡