为变更优化,而非应用性能

Hacker News Top 新闻

摘要

本文指出,软件团队常常过度优化微性能基准测试,却牺牲了开发者体验和工程吞吐量,而这两者才是长期交付速度与可维护性的真正瓶颈。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/05/12 12:59

# 开发者体验是一项性能特性 | Christian Rackerseder 来源:https://www.echooff.dev/blog/developer-experience-is-a-performance-feature ## 很多性能讨论优化错了方向\# (https://www.echooff.dev/blog/developer-experience-is-a-performance-feature#many-performance-discussions-optimize-the-wrong-thing) 团队花了几周时间把渲染性能提升了几毫秒,而工程师却不敢碰代码库。 工程讨论往往把大量精力放在: - 渲染基准测试 - 打包体积 - 水合速度 - 不必要的重渲染 - 微优化 性能确实重要。 但很多团队优化错了维度。 技术层面更快的系统,并不自动让整个组织变得更快。 尤其是当: - 测试很痛苦 - 调试很痛苦 - 入职培训需要数月 - 部署让人压力山大 - 堆栈跟踪难以阅读 - 没人再理解那些抽象层的时候 在许多组织里,真正的瓶颈不是应用性能。 而是工程吞吐量。 ## 性能不仅仅用毫秒来衡量\# (https://www.echooff.dev/blog/developer-experience-is-a-performance-feature#performance-is-not-only-measured-in-milliseconds) 我不在乎一个框架重渲染是否稍微快一点,如果: - 我无法妥善测试它 - 调试变得极其痛苦 - 那些抽象层变得无法理解 - 工程师不停地和工具链作斗争 - 架构越来越难以维护 测试依赖浏览器环境的前端架构,常常需要越来越复杂的环境模拟。 我在这篇文章中更详细地讨论过这个问题:为什么不应该直接访问浏览器全局变量 (https://www.echooff.dev/blog/avoid-direct-browser-globals)。 一个难以协作的系统,整体速度会变慢。 CPU 或许更快了。 但组织往往没有。 现代工程营销喜欢用“极速”这个词。 通常衡量的是运行时基准。 很少衡量调试体验、可维护性或工程信心。 性能不仅仅是毫秒。 它也在于工程吞吐量。 它体现在: - 工程师能多快**安全地**交付功能 - 修复 bug 有多快 - 重构能多自信地完成 - 新工程师上手有多容易 - 部署变得有多可靠 长期的产品质量,通常反映了其背后的工程体验。 ## 开发者体验会随时间产生复利\# (https://www.echooff.dev/blog/developer-experience-is-a-performance-feature#developer-experience-compounds-over-time) 良好的开发者体验不仅仅是“好用的工具”。 它直接影响: - 交付速度 - 可维护性 - 可靠性 - 入职上手 - 事件响应 - 重构信心 - 工程满意度 而这些东西会随时间累积增长。 一个易于理解的代码库会变得更容易维护。 一个易于维护的代码库会变得更容易优化。 一个工程师不害怕修改的代码库,演化得更快。 从长远看,这比赢得那些合成的渲染基准测试重要得多。 ## 真正的瓶颈往往是工程信心\# (https://www.echooff.dev/blog/developer-experience-is-a-performance-feature#the-real-bottleneck-is-often-engineering-confidence) 我见过团队花了巨大精力优化运行时性能,而与此同时: - 持续集成流水线要跑 30 分钟 - 端到端测试经常不稳定 - 本地开发环境不可靠 - 部署时总是提心吊胆 - 工程师回避重构,因为他们不信任系统 渲染性能并非瓶颈。 缺乏工程信心才是。 恐惧会让一切慢下来: - 功能交付 - bug 修复 - 重构 - 事件响应 - 入职上手 团队很少会去优化他们害怕碰的系统。 我在这篇文章中更详细地讨论过:为什么你的单元测试感觉很脆弱 (https://www.echooff.dev/blog/why-your-unit-tests-feel-fragile)。 ## 良好的开发者体验常常间接改善性能\# (https://www.echooff.dev/blog/developer-experience-is-a-performance-feature#good-developer-experience-often-improves-performance-indirectly) 颇具讽刺的是,良好的开发者体验往往最终还是能提升应用性能。 因为工程师更愿意去优化他们能理解的系统。 清晰的架构。确定性的行为。可靠的工具链。易理解的状态管理。良好的可观测性。快速的反馈循环。 这些都能增强信心。 而信心赋能改进。 一个更容易理清头绪的系统,通常日后也更容易优化。 ## 复杂性有其代价\# (https://www.echooff.dev/blog/developer-experience-is-a-performance-feature#complexity-has-a-cost) 很多优化会引入隐藏的复杂性。 额外的构建步骤。编译器魔法。激进的记忆化。自定义缓存层。框架特定行为。 有时这些性能提升是值得的。 但通常并非如此。 特别是当付出的代价是: - 更差的可测试性 - 更差的调试体验 - 更差的可维护性 - 更高的认知负荷 - 更低的可靠性 一个理论上更快但更难演进的系统,最终往往会让业务整体变得更慢。 ## 快乐的工程师构建出更好的软件\# (https://www.echooff.dev/blog/developer-experience-is-a-performance-feature#happy-engineers-build-better-software) 这听起来很简单,但以我的经验来看的确如此。 快乐的工程师通常会: - 更用心 - 更多尝试 - 主动改善系统 - 更早修复问题 - 协作更好 - 更自然地承担责任 良好的开发者体验会减少挫败感。 而更少的挫败感,意味着有更多精力去解决真正的客户问题,而不是去和开发环境作斗争。 或者用更简单的话说: > 快乐的工程师 = 快乐的客户 至少我的经验是这样。 ## 为长期的工程速度优化\# (https://www.echooff.dev/blog/developer-experience-is-a-performance-feature#optimize-for-long-term-engineering-speed) 作为工程师,我们当然应该关注性能。 但我们应该全面地优化。 而不仅仅是面向运行时性能。 也要为以下方面优化: - 可测试性 - 可维护性 - 可靠性 - 可观测性 - 清晰性 - 运维简洁性 - 开发者幸福感 因为最快的代码库,往往是工程师不害怕去修改的那个。 而快速的工程师,通常最终也会构建出快速的应用。

相似文章

Elixir 应用优化之旅

Lobsters Hottest

一位开发者分享了优化 Elixir 应用的经验与教训,重点介绍了针对 Postgres 连接池工具 Ultravisor 的性能改进。文章涵盖了使用火焰图、调用追踪等性能分析技术,以及 eFlambè 和 tprof 等工具。

@dotey: https://x.com/dotey/status/2055097242755706984

X AI KOLs Timeline

资深开发者常因过于强调代码复杂性而无法与业务团队有效沟通,而业务团队真正关心的是消除不确定性。文章建议开发者用“能不能试个更快的办法”来拉通双方案,并指出AI虽能快速写代码,但承担责任的仍是人类。

优化CPU密集型Go热路径的笔记

Hacker News Top

本文讨论了CPU密集型Go代码的性能优化技术,指出了泛型和接口抽象因无法内联而产生的局限性,并主张在热路径中使用代码复制。文章通过一个Brotli移植示例和深入基准测试进行了说明。

你需要能够降低维护成本的 AI

Lobsters Hottest

James Shore 认为,AI 编码代理必须显著降低软件的长期维护成本,才能真正带来生产力的提升,而不仅仅是加快初始代码的编写速度。文章引用了“大众智慧”对维护负担的估算,并警告称,如果不降低这些成本,团队将面临收益递减和技术债务的问题。