Site logo

从可用到正确到高效的工程实践之道

创建于:2025年9月26日

“先让它能用,再让它正确,最后让它更快。”——肯特·贝克
“先让它能用,再让它正确,最后让它更快。”——肯特·贝克

“先让它能用,再让它正确,最后让它更快。”——肯特·贝克

先“能用”:以最小闭环降低不确定性

首先,“能用”意味着交付一个可端到端运行的最小版本,哪怕粗糙,也能完成核心任务。它将抽象的需求转化为可触摸的行为,迅速验证假设并暴露真正的约束。Alistair Cockburn称之为“行走的骨架”,在《Crystal Clear》(2004)中强调应先打通关键路径,再逐步充实细节。这样的起步让团队与用户在同一现实上对齐,避免在文档和猜测里兜圈子。

再“正确”:用测试与重构稳固基石

随后,“正确”聚焦于行为的可验证性与设计的可演化性。Kent Beck在《Test-Driven Development: By Example》(2002)展示了以测试驱动塑形的路径:先写失败的测试,再让其通过,最后重构以消除异味。与之呼应,Martin Fowler《Refactoring》(1999)说明了通过小步重构维持设计整洁。此阶段还需将领域规则、边界条件与并发一致性等纳入可重复的测试套件,使“能用”不再脆弱。

后“更快”:以度量与剖析精准提速

接着,“更快”并非盲目追求速度,而是基于数据的定点优化。Amdahl 定律(1967)提醒我们:系统加速受限于非并行部分;因此应先剖析瓶颈,再选择手段。Knuth在“Structured Programming with go to Statements”(1974)中警示“过早优化是万恶之源”。实践中,可通过剖析器定位热路径,随后在数据结构、I/O、缓存、并行与批处理上做针对性改造,并用p95、吞吐与成本等指标闭环验证。

方法论呼应:XP、YAGNI与精益闭环

因此,这一顺序与方法论彼此印证。Beck《Extreme Programming Explained》(1999)主张小步快跑、持续集成与YAGNI——在“能用”前不预作复杂设计。Eric Ries《The Lean Startup》(2011)的“构建—度量—学习”闭环,与先交付、再验证、后优化的节奏一致。将二者结合,可在不牺牲速度的前提下,逐步收敛质量与性能,从而把风险拆解到可管理的增量里。

实战一隅:支付结算的三步修复

例如,某支付系统日终结算延迟。第一步,先打通最小流程:从订单聚合到对账文件生成,保证能跑完整闭环,即使暂用脚本串接与简单队列。第二步,补齐正确性:为跨币种、重放、对账差异等场景写TDD用例,并重构出清晰的领域模型与幂等策略。第三步,才针对性加速:为热表加复合索引、将聚合改为批处理、把文件上传改为异步队列并引入缓存。结果p95由12秒降至900毫秒,对账差异率归零。

团队维度:节奏、认知负荷与交付健康

最后,这一顺序还能降低团队认知负荷。先封闭一条可运行路径,再用测试固化正确性,最终在度量牵引下优化性能,避免同时在功能、设计与性能上分心。研究也表明,小批量与持续集成关联更好的交付表现——参见Forsgren等《Accelerate》(2018)。当团队据此建立稳定节奏,质量与速度不再对立,而是在明确的阶段目标中相互成全。