迭代工作
让我们看其中一个用户故事:
作为博客作者, 我想向所有订阅者发送一封电子邮件, 以便在新内容发布时通知他们。
这在实践中意味着什么? 我们需要构建什么?
一旦你开始仔细研究这个问题, 就会出现大量问题——例如, 我们如何确保调用者确实是博客作者? 我们是否需要引入身份验证机制?
我们应该在电子邮件中支持 HTML 格式还是只支持纯文本? 那关于表情符号呢?
我们很容易花费数月时间来实现一个极其完善的电子邮件传递系统, 而甚至连基本的订阅/取消订阅功能都没有。
我们可能成为发送电子邮件领域的佼佼者, 但没有人会使用我们的电子邮件简报服务,因为它无法覆盖整个流程。
我们不会深入研究某个故事, 而是尝试在第一个版本中构建足够多的功能, 以在一定程度上满足所有故事的需求。
然后, 我们会回过头来改进: 为电子邮件发送添加容错和重试功能, 为新订阅者添加确认电子邮件等。
我们将以迭代的方式工作: 每次迭代都需要固定的时间, 并为我们带来略微更好的产品版本, 从而提升用户的体验。
值得强调的是, 我们迭代的是产品功能, 而不是工程质量:每次迭代生成的代码都会经过测试并妥善记录, 即使它只提供了一个微小但功能齐全的功能。
接下来
策略清晰, 我们终于可以开始了:下一章将重点介绍订阅功能。
起步阶段需要完成一些繁重的工作: 选择 Web 框架, 搭建用于管理数据库迁移的基础设施, 搭建应用程序脚手架, 以及设置集成测试。
预计以后会花更多时间与编译器进行结对编程!