

这听起来像捷径吗?对我来说是的。在这个行业职责了25年多,它如实让我联念念到一些东西。它看起来与瀑布才调如斯相通,仅仅当今有了AI的匡助。但我认为今天它与30年前的瀑布才调有着一些调换的谬误。
在Martin Fowler的一篇经典著述《联想已死?》中,他接洽了"缱绻联想"和"演化联想"之间的辨认。SDD嗅觉像是回到了缱绻联想。它假定咱们不错在构建系统之前了解对于它的一切。
在职何界限可不雅的模式中,你唯独起初编码时才会发现竟然的糟塌。要是你的模式小到不错放入LLM的高下文窗口,SDD可能有用。对于其他一切,详确的规格确认最终会撞上未料念念的时间履行的墙壁。
1、"浅陋"功能的陷坑
当我在2000年起初职责时,敏捷正在兴起。它陶冶咱们一个荼毒的真相:短迭代是拿获无理假定的独一才调。SDD假定咱们不错在构立功能之前了解对于它的一切。
让咱们念念象一个咱们系统中非时常见的任务:处理一个新的支付webhook。
它看起来很浅陋。你为你的AI智能体写一个了了、精准的规格确认。以下是咱们不错写的一个轻视选录:
- 创建一个POST端点 /webhook
- 从JSON负载中索求 order_id,不然复返400 Bad Request。
- 在数据库中查找订单,要是不存在则复返404 Not Found。
- 将其景况更新为'PAID'(pay_type_id = 3)——触发'ReceiptEmail'类。
AI透彻按照你的要求作念了。它写出了干净的代码,顺从你的AGENTS.md和测试。你将其部署到你的预发布环境。你嗅觉终点高效。
然后,履行打击了你。
你作念一个手动集成测试,坐窝瞩目到客户收到了三封收条邮件。发生了什么?你调试代码并意志到支付提供商盼愿在500毫秒内收到 200 OK 反应。要是莫得收到,它会重试。你的端戳破耗了600毫秒,因为它是同步发送邮件的,约略因为预发布作事器很小,被其他开发东说念主员的职责挤满了。
完好的规格确认莫得磋议到汇聚延长、重试或竞态条目。为了开辟它,你当今需要转向。你意志到你需要一个透彻不同的经过:
一个不错存储负载以便稍后处理的队伍,独立即复返 200 OK。
一个后台进度来异步更新和发送邮件。
一个幂等键来防护重叠。
米兰体育官方网站你本来的规格确认当今没用了。开动代码必须被排除。你唯独通过与环境的本体交互才发现了竟然的架构需求。
诚然,这仅仅一个例子,但它展示了一个浅陋的任务何如容易变得复杂。是的,我知说念你们中一些读者会认为我方会作念得更好,合计我方应该了解架构,经典的"你作念错了"。好吧,让我告诉你,莫得东说念主知说念一切,连LLM也不知说念。你的团队也不是充满了能揣测每个可能边际情况的高档工程师。
2、Token税 vs. 重构税
有了AI,事先联想引入了一个新的经济问题:Token税。
你花了token来讲明Webhook规格确认。你花了token来生成有谬误的代码。当履行迫使你转向时,Z6尊龙凯时2026世界杯推荐官网你又付了一次税,向AI讲明队伍、后台职责者和幂等性。这是低效的。
我更可爱将这些token投资于 重构税。从小处起初。让AI构建一个浅陋的宗旨考据(POC),只纪录传入的负载。运行它。不雅察提供商的本体行径。一朝你了解了履行,使用AI来合手续重构——索求邮件逻辑、添加队伍并在过程上钩帐代码。这保合手代码库健康,并让架构当然地泄露。
3、舆图,而不是蓝图
当我写联想文档时,我可爱Simon Brown(以C4模子闻明,这是一种友好的软件架构图表才调)的Google Maps类比。
你需要放松来看高下文。你不需要一张高慢每一根草的详确舆图。
恶运的联想文档(SDD作风):
WebhookController将知道JSON,考据签名,更新MySQL中的 status 列,并实例化Mailer作事。
好的联想文档(Fluid作风):
支付事件通过webhook接受并摈弃在队伍上。后台职责者处理订单履行和邮件分发,以确保幂等性。
关爱遑急的决策。为什么咱们使用队伍?这些模块何如解耦?将逐行罢了留给代码。
4、使用适合度函数,而不是规矩
要是你莫得详确的规格确认,何如防护AI制造繁芜?你使用适合度函数。
适合度函数是自动化的不休。你不是在文本请示中要求AI"请保合手HTTP层与领域解耦"。你写一个强制实施此要求的架构测试。我曩昔挑剔过这个,比如在这篇著述中。
咱们何如防护前边的情况发生?咱们写一个快速测试,当像 ReceiptEmail 这么的慢速作事平直在HTTP限度器中使用时立即失败(可选地,咱们不错在作事层本人进行快速检查,要求在后台任务中才能赓续)。
你不是在写规格确认;你是在诞生一个硬界限。将来的规格确认不再需要驰念这个问题。AI不错在这些墙壁内解放探索和编写代码;当其POC中抛出合适的无理音尘时,它会自动转向。
瞩目:有些东说念主认为测试驱动开发不错用于这些场景。我不太痛快。我发现TDD过早地固定了你的罢了;它终点妥当袖珍bug开辟,但在探索新功能并需要喘气空间时就不那么好了。但那是另一个话题。
5、我刻下的谜底:Fluid Design
那么,SDD的替代决策是什么?我可爱称之为Fluid Design。
联想文档,而不是规格确认: 只纪录高层决策、界限和模式。
主动原型联想: 不要规矩处治决策。向AI接头罢了选项。构建小的POC来测试未知身分(如webhook延长),然后再承诺于某个架构。
及时更新: 将你的联想文档视为活纪录。每次你在代码中发现新的敛迹时,更新文档。
你是船主: 你掌舵。你不是把舆图交给AI然后去寝息。你凭据代码告诉你的信息及时调度航向。
归根结底,独一遑急的规格确认即是代码。其他一切齐仅仅测度。勤俭单起初尊龙凯时官网进入网页,合手续重构,让你的架构当然演化。