开发者真的非常讨厌花时间写东西,除非写的是代码。然而他们还对这种厌恶振振有词:

  如果不是代码,它无法通过编译,也无法确定它是不是有意义。

  如果不是代码,它无法执行,所以可能永远无法用于完成任何事情。

  如果不是代码,也无法对它进行测试,因此也无法证明它的真实与正确。

  敏捷宣言中甚至都不再强调文档:可以工作的软件胜过面面俱到的文档。


  那文档一无是处吗?我想你知道答案。

  为什么要写下来

  很多时候,项目中的些许文档会起到很大的作用。但是要得到那些好处,开发者必须停下手中的代码,抽点时间把事情写下来。我来举一些例子,我想他们会发现文档物有所值。

  记下因何而做的决定

  如果项目不止持续几个月,总有这样的时候,所做的决定会改变开发过程。可能是决定使用(或明确地避免使用)某个特定的工具、框架或平台;可能是决定以某种方式编写测试,或是在某些情况下根本不编写测试;可能是决定丢掉惯常的实践方式,并且以完全不同的方式做事。这些决定将会出现,而且往往会持续下去。

  在做下决定很久之后的某,团队里的某个人(通常是新加进来的,他们很烦人,是不是?)会问“我们为什么这么做?”。他们会得到什么样的答案呢?

  如果团队里有一个人或几个人记性不错,而且这个项目他们也跟得足够久了,新的团队成员或许能得知真实原因。但是大部分情况下,恐怕答案是“因为我们总是这么做的”。谁都不想听到这样的答案。

  请记住,如果碰到这样的答案,可以有所选择。你可以按照往常做事的方式继续做下去,因为你已麻木,或是因为这样做更为安全,你已经不记得开始这样做的原因了。作为选择,你可以作出改变,希望你考虑了所有可能的影响。究竟会出什么问题呢?哦,后来发现问题多的是。例如:

  你可能走了一条已经被探索过而且被否定了的路,浪费宝贵的项目时间和精力。

  你的修改可能与客户要求的系统工作方式相冲突,让客户非常懊恼。

  本来有所缓和的合规审查可能因为你的做事方式而破坏,并使你和/或你的客户遇到法律上的麻烦。