备选分析
永远考虑至少 2 备选——首想法罕最佳、"无备选"是红旗。
为什么
脑中首架构常是熟悉的而非最好的。考虑备选逼你列还有什么可能及为何不选——要么确认首想法(现有理由)要么揭更好选项。"无备选"是最常见 ADR 缺陷且最强信号决策被合理化非做。即使首想法最佳,备选节记了拒什么及为何,防重审("为何不用 X?"——在 ADR)。纪律是选前生备选、非选后辩。
何时使用
每中+决策。1-2 小时。仅便宜决策可跳过(见 reversibility)。
如何做
1. 述问题非解——备选来自重框问题 2. 生至少 3 备选(逼自己;第 3 常是洞察): - 显然的(默认会做的) - 相反的(唱反者会建议的) - 第三路(完全不同框) 3. 每备选记: - 做什么好 - 做什么差 - 采需什么(成本、迁移、学) 4. 按决策标准比(见 decision-criteria) 5. 选;把备选+理由记 ADR 6. 若生不出 3,你不理解问题——多研究
示例
问题:"API 限流" 备选: 1. 应用内令牌桶(Redis+lua)——显然、准、加 Redis 依赖 2. 云供方限流(API Gateway)——相反、无码、欠灵活 3. 边缘限流(Cloudflare)——第三路、流量到源前、便宜 比较: 1:准,但 Redis 依赖+应用延迟 2:无码,但每区域限+厂商专 3:最便宜、全局限、但粗(每 IP 非每用户) 决策:3 做每 IP、1 做每用户(已认证)。 两者分层。备选+理由在 ADR-017。
常见问题
- ⚠生稻草人备选——"备选 2:什么都不做"非真备选;每应可行选择。
最佳实践
- ✓逼第 3 备选即使你以为知答案——它是揭前两隐假设的那个。
- ✓把拒备选记够详细使未来工程师不重提——"我们考虑了 X、因 Y 拒"关问题。