Welcome

首页 / 软件开发 / 数据结构与算法 / 宁愿编写代码?还是把事情都写下来吧!

宁愿编写代码?还是把事情都写下来吧!2014-03-15 infoq Nate McKie 译:臧秀涛开发者真的非常讨厌花时间写东西,除非写的是代码。然而他们还对这种厌恶振振有词:

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

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

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

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

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

为什么要写下来

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

记下因何而做的决定

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

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

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

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

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

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

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

只需要花点时间把事情写下来,这些后果都可以避免。当你的团队做了会改变你工作方式的决定时 ,把当时的日期以及决策背后的逻辑考虑写下来。以后,当有人问起“为什么那样做”或 “为什么使用那个工具”时,你就可以自信满满地回答了。

为将恼人的过程自动化做好准备

开发者经常会发现他们想将一些过程自动化。这些过程经常重复,而且会浪费宝贵的开发时间。然 而,我时常碰到一些执行不那么频繁的手工过程(可能几个月一次),这些过程会涉及一系列步骤,必 须按照特定的顺序完成。如果没人愿意费点力气把这个过程写下来,那就有很大的机会出现执行错误的 情况,或者是执行中漏掉了某些步骤,浪费的时间甚至更多。此外,如果不先把这些步骤写下来,我们 也就没有切实可行的方式将这个过程自动化。

如果你发现自己正在执行的任务有多个步骤,而且这个任务有很大的机会要再次执行,请把这些步 骤写下来。当再有人必须手工执行该过程时,能够节省时间,可能有一天你终于感到非常气馁,于是你 将这个过程自动化了,而今天的行动也为那一天做好了准备。