l 为什么文档大部分是后补的,或者是做完系统之后做了大量的修改?

l 真正意义上的文档应该什么时候写?

l 为什么很多团队不愿意写文档?

程序员在看别人的代码的时候常常抱怨没有注释,没有文档……但是当自己该写注释或者文档的时候却懒懒的能少写就少写。这本身就是一个巨大的讽刺,一个喜欢注释和文档的人却常常不写注释和文档,俨然就是典型的只许自己放火不许别人点灯的行为。

下面是程序员们不想写文档的种种理由:

“写文档多浪费时间,有这个时间老子七八个类都写完了!”

“写他妈的文档也没有人看,写个磷啊!”

“现在的开发一般都是从零开始,在原有的基础之上开发简直就是自虐,既然从零开始那么就不需要看他们的文档,自己做自己的就行!同理以后别人也不看我们的文档!”

以上理由的根源在于,程序员最不喜欢去读别人的代码,更不愿意调试别人的代码,遇到不通顺的代码常常是ctrl+A然后delete,接下来就是自己创造一片新天地,写完后看着自己的代码,越看越喜欢,越看越喜欢,那真是满心的自恋之情无法言表。

然而一般的项目经理都是从程序员干起的,所以看到别人的系统,别说没文档就是有文档也懒得看。除非用户强行要求,不然绝不会在原来老系统的基础上进行新的开发。就算用户强行要求,项目负责人也会千方百计的告诉客户老系统哪里不好,哪里需要完善如此云云。然后劝客户重新开发新系统,总之就是通过各种勾引,各种“强奸”,各种游说让用户接受一个崭新的与老系统完全没有联系的系统。

遇到负责的项目负责人想在以前的系统之上改进,但是由于文档不全或者以前的设计者已经跳槽,了解没有文档的旧系统简直就是自杀,有那时间还不如从零开始开发嘞!所以这种情况下项目负责人最后只好按照自己的想法重新设计,重新构建,从零开始。他们认为只有这样才能干净!方便!“效率高”!

如此一来人们对文档的重视程度就大大减小了,写了文档没人看,谁还去写呀!然后恶性循环,渐渐的文档就沦为形式了。

我们为什么写文档?

写文档究竟是为了什么,现在大部分的文档写的都很形式,都是做个样子。很多团队都是先有代码后有设计说明,简直就是笑话。完全的形式主义,为了文档而写文档,完全把文档的意义给扭曲了。

l 文档帮助我们进行更好的沟通

这里就涉及到一个问题:文档写到什么程度为好?答案就是合格的文档不需要文笔多么的好,不需要文字多么多,不需要什么特别严格的格式;只需要能让他人看懂,能让他人拿到文档后不需要再向你咨询直接根据文档就能比较全面的了解这个系统,仅此而已。说起来容易做起来还是比较难的。

问过很多团队不写文档的原因,最多的回答就是为了“高效”的完成系统,但是纵观没有文档的开发似乎也并不高效,没有文档的情况下团队中往往充斥着以下对话。

A:我那的接口呢

B:你们要那的接口了吗?没有吧

A:谁说的,****时候不是给你说了我们要****接口了么!!

B:没有吧,不记得了

A:……

假如当时马上能拿出一份文档,那么到底是谁的责任就明确的多了,所谓有文档有真相就是这么个意思吧。况且如果真有文档的话,也不会发生上面的对话了。相信每个开发团队中的开发人员的阅读和理解中文文字的能力还是有的,不至于对照着文档还能落掉哪个方法丢掉哪个类吧。所谓好脑子不如烂笔头就是这个道理,所以说没有文档作保证,高效的交流什么的就是浮云。

l 文档帮助我们记录开发周期的点点滴滴

不要认为以后没有人看就不需要写文档了。

一个优秀的团队应该把每个开发过的项目中用到的东西,例如典型的技术,经典的算法,等等都应该以文档的形式保存下来。因为你的团队不可能只开发一次系统,下次可能开发别的系统但是很有可能用到这次开发过程中的部分技术或者部分算法等等更有甚者或者两个项目业务几乎一致完全可以把以前的架构拿过来用,这都不是不可能的。这样一来文档的巨大作用就体现出来了。

很多的团队没有及时的文档,请注意是及时的文档,不包括代码完成后补充的文档。虽然补充文档要比没有文档强的多,但是补充的文档有很多问题。比如记录工期不准确,记录所用到的技术或者算法不完全,补充的文档非常耗费时间等等。我们能顺手做而且又不得不做的事情为什么要单独拿出来做呢?。

l 文档可以帮助我们整理思路

没有文档需求岂不是之上谈兵。今天说个样,明天说个样,这系统还能做么?

没有概要设计或者详细设计,如果团队整个开发周期中如果人员不流动的话还好一点,人员万一流动就会出现文章前面说的那个情况:ctrl+ A 然后delete接着一群自恋的人就开始开辟自己的一片新世界了。这样的话等待整个团队的将是功能实现上的矛盾,工期的无限延长,但是如果有文档的话情况就大大不同了。

设计人员通过写文档可以对整个软件或者自己的模块有一个比较详细的了解,写文档说白了就是用文字编码。有一句很经典的话:能编码不一定能写好文档,但是能写好文档的一定可以很好的编码。画过UMl图的人都知道,简单的几条线要比几十行甚至几百行代码来的快。同样的道理文档作用也是如此,几行文字要比N行代码来的省事。由于UML毕竟是建模的语言不是真正的人类交流的语言,所以在与用户或者与水平比较低的团队队员之间交流过程中文档的作用就更加明显了。根据文档程序员就能直接编码才是优秀文档最理想的效果。

l 文档可以为我们节约时间

除了上文中说的没有文档的话交流没有合理的记录之外,没有文档的另一个弊端就是非常容易浪费双方的时间。很多团队感觉文档没用,于是整个团队之间最常见的交流方式是qq或者飞信,更有甚者直接口头交流。相互说你要什么接口我需要什么方法,重复的话说的不少,时间也耗费了不少,结果却很难令人满意。

显而易见,没有文档的交流(无论是qq、飞信还是口头)都是需要两个人同时参与的。整个过程如下:在你向别人传递信息的时候大脑是不断思考的,也就是说你是边说边思考,那么你的话必定是断断续续的,而且还很有可能是重复或者错误的。更加可悲的是在这短时间里对方必须等待你思考完毕以及你表达完毕,然后对方才能去理解你的意思,最后对方再把他理解的意思阐述给你听以确保理解无误。在这段时间里对方同样也在边说边思考,和上面的情况类似你也不得不等待他思考以及表述完毕,然后才能给予肯定。

算下来整个过程浪费了很多不必要的时间,如果加入用文档的话将是一个情况。前者把思路理顺后直接用文档的形式传递给后者,在前者写文档的时候丝毫不浪费后者的时间。后者拿到文档后直接理解传递过来的文档,理解的过程中也丝毫不浪费前者的时间。最后双方进行反馈,由于大家都已经阅读过文档相对而言准备的已经比较充分了,所以就可以直奔主题进入关键部分了,为整个团队节约了很多时间,效率自然而然就高了。

项目开发文档是必须的相关推荐

  1. DotNet 项目开发文档的自动生成和相关工具的使用

    在 VS.Net 的 IDE 中对C#提供了一些可以自动生成的 XML 注释,使用这些注释可以对代码中定义的对象进行说明.注解:通过设置项目属性,在生成项目时,可以让VS.Net自动的将这些注释信息输 ...

  2. 编写一个项目开发文档

    项目开发过程中为了增加程序的可读性和程序的健壮性, 方便后期程序的调试和维护,所以需要在开发过程中统一技术规范,一般会在项目初期确定好相关文档作为这一统一的规范.不同公司会对文档做不同要求,划不同的分 ...

  3. Laravel5.5 项目开发文档,精简版,不适合新手使用。

    Laravel5.5 开发规范 声明,本文档来自 laravel-china 社区,根据个人知识水平阅读记录. 原文地址:https://laravel-china.org/docs/laravel- ...

  4. 聊天室(2)-项目开发文档-李兆龙

    西邮Linux兴趣小组 大一暑期项目 开发设计文档 项目作者 项目名称 李兆龙 聊天室 1.项目引言 1.1项目综述 聊天室项目目的在于实现一个类似qq的通讯软件,支持好友模块,群模块,单聊,群聊,收 ...

  5. 爬虫豆瓣top250项目-开发文档

    项目托管平台地址:https://github.com/gengwenhao/GetTop250.git 负责内容:1.使用python的request库先获取网页内容下来 2.再使用一个好用的lxm ...

  6. 【IT基础】常见的开发文档

    Perface 随着技术的进步,小作坊式的软件开发年代已经过去.目前的软件开发能力在不断提升,用户对软件的功能和性能要求也越来越高,软件开发质量受到关注. 在软件开发过程中,各种数据和代码的管理需要经 ...

  7. Struts2增删改查 myeclipse开发文档加项目源码及eclipse开发项目源码

    Struts2增删改查 myeclipse开发文档加项目源码及eclipse开发项目源码 git里只有myeclipse开发的项目 文档及项目github下载地址:https://github.com ...

  8. M5(项目)-01-尚硅谷谷粒商城项目分布式基础篇开发文档

    M5(项目)-01-尚硅谷谷粒商城项目分布式基础篇开发文档 分布式基础篇 一.环境搭建 各种开发软件的安装 虚拟机: docker,mysql,redis 主机: Maven, idea(后端),Vs ...

  9. 什么是项目文档?什么是开发文档?

    项目文档分三类:(1)用户文档.包括软件需求规格说明书.用户手册.操作手册.质量报告以及各类建议. (2) 开发文档.包括可行性研究报告.软件需要规格说明书.项     目开发计划.设计说明书(包括概 ...

  10. 开源轻量级办公系统Sandbox介绍以及配套开发文档连载

    1.Sandbox介绍 Sandbox是一个基于django框架开发的轻量级办公平台,主要模块有:权限控制.资产(库存)管理.设备管理.客户信息管理和工单流程管理,其目的在于建立一套规范化.统一化和清 ...

最新文章

  1. 天堂Lineage(單機版)從零開始架設教學
  2. Android架构篇-5 CI/CD(持续集成、持续交付、持续部署)
  3. MATLAB从入门到精通-Simulink模块连续模块之积分(Continuous-Integrator)
  4. kegra:用Keras深度学习知识图
  5. linux内核2018,CVE-2018-1000001 linux kernel
  6. RHCS配置web高可用集群
  7. Eclipse SVN插件检出Src下面的包变成了文件夹解决
  8. 用Redux来进行组件间通讯
  9. window点location(仅介绍window点location对象,不介绍属性,因标题不能含有非法字符,.用点来代替)
  10. python连接sqlserver 多条sql语句后提交_利用python操作sqllite
  11. shell通过sshpass远程ssh执行命令
  12. PHP面向对象重要知识点----------第一部分
  13. ‘source‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  14. 阅读图像显著性检测论文三:Saliency Detection A Spectral Residual Approach
  15. mentohust配置
  16. 详解华夏银行iDo平台一体化运维的落地过程
  17. halcon多模板匹配,每种模板匹配结果不同颜色轮廓
  18. 使用golang链接达梦数据库
  19. java代码实现pdf按页拆分以及合并
  20. Scratch(三十一):掌握打字技巧

热门文章

  1. VMware 12 专业版永久许可证密钥
  2. Python:计算器(代码全+解析+实现结果)
  3. TwinCAT3中台达A2增量编码器伺服使用PDO方式回零
  4. vscode 中的 Lammps Syntax Highlighting 插件
  5. FTPSFTP的基本命令
  6. 御剑php字典,Newyujian1.5 御剑源码 主要用于扫描网站目录 - 下载 - 搜珍网
  7. 三星s7250d下载php,HTML5表现令人满意_三星 S7250D(Wave M)_手机其它OS-中关村在线...
  8. MD5详解(校验文件完整性)
  9. DBC2000有什么作用?DBC2000的安装与配置
  10. 基于基因数据的神经网络模式分类研究