Museum of Failed Experiments
失败博物馆
作品集展示成功,这里展示失败。
真实的技术成长不是直线向上的。
已放弃
用 GraphQL 替代 REST API
2025.08 — 2025.10
起因:REST API 接口太多,一个功能要调三四个接口。GraphQL 一次查询搞定,前后端很舒服。
经过:但真正的问题在于:N+1 查询爆发——一个看似简单的查询背后是 47 次数据库调用。三个月后缓存变得极其复杂,REST 用 HTTP 缓存就行,GraphQL 需要 Apollo Cache,学习成本超出预期。
结局:项目规模不大,GraphQL 的优势在大型多团队协作中才能体现,一个人维护前后端 REST + Swagger 足够了。
💡 技术选型的关键不是「更好」,而是「在什么场景下哪个更好」。
已放弃
$ rust_rewrite --target=data-pipeline
2025.11 | duration: 2 weeks
> 预期:Python 处理 10 万条文档,5 秒
> 瓶颈:0x...
> 实际结果:2 秒(3.75x)
> 代码量:Python 的 4 倍
> 后来给数据库加了索引
> Python 版本,3 秒
> 比 Rust 版本还快 🤡
> 瓶颈根本不在 Python,在数据层 I/O
> 在优化之前,先 profile
烂尾
《从零搭建微服务》系列
2025.06 — 写了 3 篇后停更
计划写 8 篇,实际写了:
✓ 第 1 篇:服务注册与发现(Consul)
✓ 第 2 篇:API 网关,Nginx
✓ 第 3 篇:服务间通信,gRPC vs REST
✗ 第 4 篇:分布式事务 — 写不下去了
写到 Saga 和 TCC 的区别,发现自己讲不清楚。更关键的是:写到一半意识到,大部分读者不需要微服务。单体 + 好的代码组织能解决 90% 的问题。
那 3 篇还在线,但我在开头加了警告:“在决定微服务之前,先确认你真的需要它。”
性能翻车
WebSocket 实时协作编辑
2026.01
单机测试完美。两台机器同时编辑,延迟 < 50ms。
部署到 3 个用户同时编辑,就开始丢失消息。Nginx 的 WebSocket 代理配置有问题,连接频繁断开。修好 Nginx 后,OT 算法在复杂场景下产生冲突,文档内容错乱。
最终方案:砍掉实时协作。改成「锁定编辑」——一个人编辑时其他人只读。用 Redis 分布式锁,代码量减少 80%。
💡 Google Docs 团队有几十个人专门做协作。一个人做不了。
过度工程
折腾的 CI/CD 流水线
2025.12
Jenkins 配置 3 天 → Dockerfile 2 天 → Ansible 1 天
总共 6 天,部署一个 3 页面的静态网站
最终方案:GitHub Actions + 一个 shell 脚本。配置时间:2 小时。
💡 基础设施的复杂度,应该和项目复杂度成正比。
认知翻转
曾经坚信「测试覆盖率必须 80%+」
2024 — 2026
以前觉得覆盖率是代码质量的硬指标。低于 80% 就是不负责任。
现在觉得:覆盖率是过程指标,不是结果指标。100% 覆盖率的代码照样有 bug——你覆盖的只是「代码路径」,没有覆盖「业务场景」。
对于小项目,我甚至不写单元测试了,只写 E2E 测试,覆盖核心用户流程,性价比更高。
"The only real mistake is the one from which we learn nothing."
这个页面会持续更新,每次失败都值得记录。
如果你也有类似的经历,或 写信告诉我。