宁愿编写代码?还是把事情都写下来吧!

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

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

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

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

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

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

为什么要写下来

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

记下因何而做的决定

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

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

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

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

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

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

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

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

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

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

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

时间: 2024-10-02 00:23:28

宁愿编写代码?还是把事情都写下来吧!的相关文章

事情是这样的,我刚来这个公司不久,要维护一个系统,是基于C++,CORBA的服务器系统,写的好大好复杂,仅服务器这边就有10多个进程,而且没有任何文档,没有任何说明,代码乱七八糟,没注释,说是面向对象C++编写,可全局变量到处都是,类里边全是public变

问题描述 事情是这样的,我刚来这个公司不久,要维护一个系统,是基于C++,CORBA的服务器系统,写的好大好复杂,仅服务器这边就有10多个进程,而且没有任何文档,没有任何说明,代码乱七八糟,没注释,说是面向对象C++编写,可全局变量到处都是,类里边全是public变量.现在人家客户用的时候出问题了,客户端每调用一次服务端,服务端内存就增长几十兆,而且没有任何性能测试工具可用,开发这个程序的人都走了.大家说面对这种复杂系统的内存泄漏问题,在没有性能测试工具的情况下该怎么办,怎么找出问题在哪,想用L

网页设计师学习编写代码的一些理由

通常,在完成了一件网页设计后,设计师的无知都会显露无遗而备受指责.他们把创建网页代码的繁重工作都留给了程序员们.这种现象不只出现在网络开发行业,在软件及游戏开发业也是如此. 残酷的事实就是:开发进度可能会因设计师而停滞不前.为了追求最佳效率,设计师不仅需要描描画画,还需要能把它做出来!本文中,我想与读者分享一些为什么设计师需要学习编写代码的理由. 做现实可行的设计 有了一个最终产品将如何实现的明确印象,设计师将拿出更多实际可行的概念.作为开发进程中不可或缺的一份子,设计师肩负着确保他们的设计能够

linux下如何编写代码用于监控特定程序的CPU,内存,磁盘和网络使用情况?

问题描述 linux下如何编写代码用于监控特定程序的CPU,内存,磁盘和网络使用情况? 初学,linux(ubuntu)环境下,如何编写代码用于监控特定程序的CPU,内存,磁盘和网络使用情况?初学者,希望从这些基础程序入手,谢谢大家~ 解决方案 读取proc下面的文件. /proc/stat 里面是CPU使用情况,/proc/meminfo里面是内存使用情况,进程信息在/proc/$pid/stat,statm里面. /proc/net/dev里面是网络使用情况,磁盘IO可以使用iostat命令

你拼命编写代码你的老板有感谢过你吗?

程序员似乎都热衷于长时间地工作.但是我想说的是,你就承认吧,你的工作或者老板其实并没有让你这样做,只是你自己要这样做而已.当然,我也知道,也许不是所有程序员都喜欢长时间的编程.但是我能肯定的是,当加班成为业内的普遍现象,至少有一半的程序员必须回喜欢加班,不是这样的吗? 我早就已经听厌了以下这类借口."不,并不是那样的,我们只是因为喜欢炫酷的技术活,而且我们不想遗留未解决的问题.实际上,加班就是一件好事,因为它让我们变得出色!" 但是我认为,你不能只看见树木,而不见森林.而从某个角度来说

微信公共号的文章中点击一张图片后,自动变为全屏浏览。这是编写代码实现的功能还是手机or微信自带的功能?

问题描述 微信公共号的文章中点击一张图片后,自动变为全屏浏览.这是编写代码实现的功能还是手机or微信自带的功能? 求解!如何不是手机的自带功能如何编写这个代码? 我写了一些放大功能的代码都达不到全屏的那种效果.. 解决方案 这个是通过微信公众平台提供的JsApi接口来实现,点击图片直接调起微信客户端自带的图片播放组件.// 调起微信客户端的图片播放组件进行播放 var srcList = []; $.each($('img'),function(i,item){ if(item.src) { s

Android计算器编写代码_Android

其实这个安卓计算机,所有的后台思想与<C#计算器编写代码>是一模一样的.Win窗体程序移植到安卓,从C#到Java其实很简单的,因为两者的基本语法都很相像,唯一的难点是安卓的xml布局部分,不像C#窗体能够直接拖.  还是如下图一个能够完成基本四则运算的计算器:  先在res\values\strings.xml设置按钮相应的字体,以免布局文件警告满天飞: <?xml version="1.0" encoding="utf-8"?> <

《驯服烂代码:在编程操练中悟道》一第2章 按图索骥地编写代码

第2章 按图索骥地编写代码 现在,设计文档都齐备了,github也配好了,安装了JDK7和Maven,空项目已经用Maven建好了.还安装好了一个免费使用的IntelliJ IDEA 13.1 Community版,用来编程.现在就可以按照细化后的类图来编写第一个类TimeSubject了. 下面就是TimeSubject类的代码: public abstract class TimeSubject { protected Map<String, Clock> clocks = new Has

VS2010编写代码对excel文件进行处理的方法

问题描述 VS2010编写代码对excel文件进行处理的方法 求大神指教,可以不用长篇的都写出来,只要给我个相应的例子,能参考学习就行,跪谢!!!! 解决方案 VS2010调试找不到exe文件处理方法VS2010进行远程调试方法 解决方案二: http://www.cnblogs.com/wang_yb/articles/1750419.html 另外你还可以用 NPOI 库操作 解决方案三: 这个python比较简单,有专门处理excle的库

再说,设计师,为什么要学习编写代码?

通常,在完成了一件网页设计后,设计师的无知都会显露无遗而备受指责.他们把创建网页代码的繁重工作都留给了程序员们.这种现象不只出现在网络开发行业,在软件及游戏开发业也是如此. 残酷的事实就是:开发进度可能会因设计师而停滞不前.为了追求最佳效率,设计师不仅需要描描画画,还需要能把它做出来!本文中,我想与读者分享一些为什么设计师需要学习编写代码的理由. 做现实可行的设计 有了一个最终产品将如何实现的明确印象,设计师将拿出更多实际可行的概念.作为开发进程中不可或缺的一份子,设计师肩负着确保他们的设计能够