README 驱动开发

我近来听到很多关于 TDD(测试驱动开发)、BDD(行为驱动开发)、极限编程和 SCRUM(敏捷开发)的讨论,还有站立式会议,以及各种开发更好软件的方法和技术。但这些都是无关紧要的,除非我们正在开发的软件能够满足使用者的需求。让我换一种说法,完美地实现错误的规范毫无价值。按照同样的原则,一个精美但没有文档说明的软件库也几乎毫无价值。如果你的软件解决了错误的问题,或者没有人知道如何使用它,那么就会发生一些非常糟糕的事情。

好吧,那么我们如何解决这个问题呢?它比你想象的要简单,而且它的重要性足以保证值得这样做。

首先写出你的 Readme 文档。

是的,首先。比如,在你写代码、测试、行为、故事或任何东西之前。我知道,我知道,我们是程序员,该死的,不是技术作家。但这样想,你就错了。写一个 Readme 对于编写好的软件来说是绝对必要的,否则你根本不知道你编码干什么,除非你已经写完软件。对瀑布设计的强烈反对和对敏捷开发的热烈推崇之间,我们忽视了大片的中间地带。不要误解我的意思,瀑布设计的确太过分了。每个细节都详细定义的庞大系统最后变成一个错误的系统,我们反对它是正确的。但取而代之的是另一个极端,现在很多项目要么文档太过简短,要么文档质量很差,要么完全没有文档——有些项目甚至连一个 Readme 都没有。

这是不能接受的。在大量的技术规范和完全没有规范之间必须有一些中间地带。事实上,我们有这个中间地带,它就是卑微的 Readme。

把 Readme 驱动开发(RDD)从文档驱动开发(DDD)中区分开来是非常重要的。RDD 可以被认为是 DDD 的子集或受限版本,通过将你的设计文档限制在一个单一的文件中(这个文件的目的是为了介绍你的软件),RDD 避开冗长或过度精细的规范,从而保证你免于 DDD 引发瀑布综合症。与此同时,你的收获是,软件库保持小型和模块化。这些简单的增强方法可以让你的项目朝着正确的方向发展,而不需要花费太多的时间来确保你做正确的事情。

一开始就写下 Readme,你会给自己一些非常重要的优势。

考虑为你的项目写一个 Readme 的过程是真正的创造行为,这就是你所有出色的想法应该表达的地方。这份文件应该自成一体,证明你的创造力和表现力。在你的代码库中,Readme 应该是最重要的文档,正确的做法就是首先把它写出来。

原文:Readme Driven Development