文档是程序开发过程中的蓖麻油:主管们认为它会对程序员有益,而程序员却讨厌它!

——Gerald Weinberg,《程序开发心理学》

当你听到文档这个词会想到什么?

  • 它很无聊。

  • 要写很多字。

  • 意味着你要试着使用 Microsoft Word,还不能忘了在哪里插入图片。

  • 作为开发人员,我喜欢那些展现动作和行为的动态可执行文件。对我而言,文档是静止的,它就像一株枯草,了无生趣。

  • 本来以为它能帮上忙,结果总是耽误事儿......

  • 写文档很无聊,我宁愿写代码也不愿意编写文档!

我还是写代码去吧......

编写和维护文档需要大量时间。文档很快就会过时,通常不完整,编写文档和阅读文档的过程令人沮丧......是的,程序员眼里的文档就是这样,而且大家还能“如数家珍”地列出文档的十大缺陷

传统文档的缺陷

就像劣质酒的香味会快速消失一样,纸质文档的内容也会迅速失效,令你头痛不已。

——@gojkoadzic

传统文档存在许多缺陷和几种常见的反模式。几乎每个程序员的项目中都有以下列出的这样或者那样的问题。

1. 自扫门前雪

即便是在声称“敏捷”的软件开发项目中,决定构建内容、编码、测试和准备文档这几项工作之间也常常是相互独立的。

自扫门前雪

活动之间相互独立会浪费大量时间并错失一些好机会。基本上,所有的活动都会用到相同的知识,只是以不同的形式和工件来使用,并且可能伴有一定程度的重复。另外,在流程中,这些“相同”的知识可能会演进发展,从而导致不同活动中的知识内容不一致。

2. 为文档再写一份文档

需要编写文档时,团队成员会选择一些已完成工作的知识要素,然后手动将它们转化成适合目标受众的格式。基本上,这是一个为代码里已经写好的文档再写一份文档的过程,就像古登堡发明印刷机之前的抄写员一样。

为代码里已经写好的文档再写一份文档

3. 文档很快就会过时

以上描述的“抄写”过程导致了知识的重复:最终,你获得了反映真实情况的原始知识来源(通常是代码)和一堆以各种形式复制成的知识副本。不幸的是,当一个工件(例如代码)发生变化时,你很难记得要更新其他文档。于是,文档内容很快就过时了,留给你的是一份无法信任的不完整文档。这样的文档有什么用呢?

4. 无聊的时间陷阱

管理层想为用户提供文档,还想用文档来解决团队中人员流动引发的问题。然而,开发人员讨厌编写文档。与写代码或使任务自动化相比,写文档一点意思也没有。对于开发人员来说,他们不太有兴趣编写一些会迅速过时且无法执行的无效文本。当开发人员需要写文档时,他们宁愿去处理真正在工作的软件。矛盾的是,当他们想复用第三方软件时,一般希望能有更多有用的文档。

技术文档工程师喜欢写文档,而且以此为生。但是,他们通常需要开发人员的协助才能获得编写文档所需的技术知识,而且经常做的仍是“手抄”知识。这个过程令人沮丧,也浪费了大量宝贵的时间。

掉进编写文档的“时间陷阱”

5. 想到什么写什么

因为编写文档不是一件有趣的事,而且我们只是因为必须要有文档才会这么做,所以编写文档时一般比较随意,不会考虑太多。结果是作者在编写文档时就做了“脑转储”,即想到什么就写什么。问题在于,这种随机的脑转储对任何人都无益。

想到什么写什么,文档不一定有用

6. 优美的图表

对于那些喜欢使用CASE(Computer-Assisted Software Engineering,计算机辅助软件工程)工具的人来说,这种反模式很常见。这些工具并不是为制作草图设计的。相反,它们鼓励使用各种布局和根据建模参考的验证来创建优美的大型图表。整个过程需要很长时间。即使这些工具能神奇地自动完成布局,创建一个简单的图表仍然需要很长时间。

7. 迷恋符号

我们发现 UML 符号现在越来越不受欢迎了。UML 在 1997 年被采用为标准,并在之后的十年里成为所有软件的通用符号,尽管它并不适用于所有情况。从那时起,再也没有其他符号被广泛地使用,而且即使不太合适,世界各地的团队仍会用一些UML符号来记录内容。当你只知道 UML 时,每一个图表看起来都像是它的标准图集之一。

8. 不用符号

实际上,与迷恋符号完全相反的另一个极端已经相当普遍了。许多人完全无视UML,使用一些没人能理解的自定义符号绘制图表,并将诸如构建依赖项、数据流和部署之类的随机问题混为一谈。

9. 信息墓地

企业知识管理解决方案是知识消亡的地方。看看这些:

  • 企业 wiki

  • SharePoint

  • 大型 Microsoft Office 文档

  • 共享文件夹

  • 搜索功能很差的工单系统和 wiki

这些文档编写方法通常会失败,要么是因为通过它们很难找到正确的信息,要么是因为将信息保持最新状态需要大量工作,或者两者皆有。这些方法促进了只写文档(write-only documentation)或只写一次文档(write-once documentation)的形式。

在最近的一次 Twitter 交流中,著名软件开发商 Tim Ottinger(@tottinge)问了这样一个问题。

产品类别:“文档墓地”——所有文档管理、wiki、SharePoint 和团队空间是否注定失败?

James R. Holmes(@James_R_Holmes)回复如下。

我们的标准笑话是这样的:说“它在内网上”会引发“你刚刚是让我自己去____吗?”的回应。

(注意:因为原话用了粗俗的语句,所以做了编辑,你懂的。)

10. 误导性的帮助

只要文档不能严格保持最新,就会产生一定的误导性。虽然文档看起来有用,但事实上是错误的。因此,这些文档可能读起来有意思,但是辨别哪些内容仍然正确以及哪些内容已经不再正确会造成额外的认知负担。

当文档无法正确指导用户时,它就是有害的

编写高质量的文档需要很多时间,而维护它往往需要更长时间。如果一个人时间紧迫,他就会经常略过文档任务,或者快速、粗糙地完成文档。毕竟,咱们总有“比写文档更重要的事”。

然而,真实的情况是什么?开发人员经常因为缺失有效文档而“抓狂”,软件经常因为缺失有效文档而为开发人员所“诟病”。既然,文档相关的问题如此严重,是时候了解一下文档 2.0 了。

活文档

自 20 世纪 90 年代末以来,诸如整洁的代码、测试驱动开发(TDD)、行为驱动开发(BDD)、领域驱动设计(DDD)和持续交付之类的实践越来越流行。这些实践改变了我们关于软件交付的思考方式。

现在,我们终于可以期待有这样一种文档编写方法:

  • 它实用,能使文档内容永远保持最新

  • 成本低,并能让编写文档变得有趣

这就是活文档的核心理念,它要解决传统文档存在的问题。具体是怎么解决的呢?

西里尔·马特雷尔(Cyrille Martraire)是个创业公司的 CTO,软件设计专家,曾领导过多个重大项目,在处理大型遗留系统方面经验丰富。2013 年,在 Öredev 技术会议上首次系统提到活文档时,引发了与会人员的强烈兴趣。此后 5 年多的时间,西老师专注于系统化他这套理念,以及实践更多的方法。2019 年 5 月,西老师出版了一本书,名为 Living Documentation: Continuous Knowledge Sharing by Design,图灵将这本书引入,就是今天为大家介绍的这本:《活文档:与代码共同演进》。

Amazon 读者给这本书打出了 4.4 星的好评,我们在发布纸质书之前,邀请一些专家和普通读者试读了部分章节,大家表示文档相关问题早已令人“头秃”,这本书可谓“及时雨”。

通过以下目录,诸位可以深入看看作者是怎么通过活文档逐步解决传统文档的痛点的。

目录| 左右滑动

可双击图片放大查看
目录有接近 7 页,相当详尽

也可以点击「阅读原文」前往图灵社区试读更多内容

这本书的特色是什么?看图,简单概括。

脉络、逻辑、文风都很棒!

业内专家张逸、朱少民、张银奎和刘冉四位老师提前审阅了本书,并给出了阅读引荐。张逸老师还专门写了推荐文章,详细阐述了他对本书的评价及如何在工作中实践相关的方法。

还有呢,编辑专门配合本书设计了快乐文档签赠给大家哦!一看就很有气势,有没有?

限 时 折 扣

最后,不断有朋友过来说很想读这本书,但是定价略贵。真不好意思,这本书从成本上看来,只能定这个价了。但为了更能广泛地传播本书,推广「活文档」的理念,我们特地争取了电商大力度活动,京东和当当均 5 折上新。

数量有限,手慢无!

京东传送门

当当传送门

文档就是活的知识系统

祝你的文档与代码共同演进

最终从容打造出更强大的软件

 赠 书 福 利

你写过文档吗?你写文档过程中遇到过哪些坑?你读过同事写的文档吗?用一句话形容一下那种感觉。

挑选 3 位留言有趣或者写文档有痛点的读者, 每人送出《活文档》1 本(编辑手签专有姓名贴纸版)。

活动截止时间:2021 年 3 月 24 日 12:00。

图 灵 社 群

点个「在看」

让程序员头疼的文档问题怎么破?试试活文档相关推荐

  1. 如何从三流程序员成长为一名年薪50W的架构师(文末附送学习资料)

    成为架构师是绝大部分程序员的梦想,当然不敢说绝对,因为一部分程序员想转行搬砖还有一部分想往管理层发展.可是像我们这样有这良好的职业操守的程序员怎么可能三心二意呢,自己选的编程跪着也要把代码敲完.想要成 ...

  2. 阿里,百度高级程序员力荐2019必看书单—附PDF电子档

    写在前面 程序员找出路还是要尽量提前进行职业规划和准备,千万不要说什么:"走一步,算一步"的话.在这个一睁眼就是竞争的时代,你可以放松休息,但别人会继续前进,不会等你. 1,Jav ...

  3. 趣图:程序员头疼的 4 种原因

    精彩回顾 ♡ 天一冷,程序员都穿上格子衫 ♡ 史上最真实的行业鄙视链曝光 ♡ IT公司老板落水,各部门员工怎么救 ♡ 宿命之战:程序员VS产品经理 ♡ 作为一个前端,可以如何机智地弄坏一台电脑? ♡  ...

  4. 程序员如何利用周末提升自己?可以试试这8招

    程序员忙,似乎是个公论,有些程序员甚至会认为,不忙的程序员无法快速地进步,从而会落伍.或者说,不忙的程序员有可能被公司末尾淘汰掉. 当工作让你陷入无意义的繁忙甚至焦虑时,你更应该鼓起劲,利用好自己周末 ...

  5. 程序员如何优雅的挣零花钱?——接私活完整攻略

    虽然程序员有女朋友的不多(赤裸裸的误解~),但是开销往往都不小. VPS.域名.Mac上那一堆的收费软件.还有Apple每年更新的那些设备,享受着社会公认的高收入群体,却也经常入不敷出(囧). 幸好作 ...

  6. 大龄程序员失业后,看他们是如何破局突围的? | 技术头条

    戳蓝字"CSDN云计算"关注我们哦! 技术头条:干货.简洁.多维全面.更多云计算精华知识尽在眼前,get要点.solve难题,统统不在话下! 作者:逆流的鱼yuiop 转自:何俊林 ...

  7. 某程序员10个月时间做了30个私活单子,纯收入40万?

    大家看到程序员只是接私活就纯收入40万,是不是心动了呢?嘿嘿,我跟大家一起来看看到底是怎么回事:1 0个月时间做了30个私活单子 关于程序员做私活 你们问,我答 PS: 一定一定要有一个专门的人负责客 ...

  8. 程序员兼职怎样报价力求中标?——接私活的项目报价策略

    大家知道,需求方在为项目选择合作人选的时候,除了看他的技术和经验是否匹配外,价格也是一个很重要的考量因素,甚至在某些情况下会成为极其重要的考量因素. 关于报价,我主要讲的是个人兼职怎样测算项目的基础价 ...

  9. 年薪30W的程序员,都在哪些平台兼职接私活?

    今天,为大家整理了一些程序员接私单的方式. 1. 靠同学,朋友,同事介绍. 这种方式获得的单通常性价比要高于其他渠道获得的.有的时候能拿到成本小收益高的订单. 2. 在网上找订单,看各种提供散活的网站 ...

最新文章

  1. 国自然基金标书构思及撰写经验分享会
  2. HTML5全局属性和事件
  3. 用REDIS实现分布式缓存
  4. matplotlib里的fig和ax的区别。
  5. Junit 测试之 Spring Test
  6. 参数化测试 junit_使用JUnitParams进行参数化的JUnit测试
  7. 疯狂的程序员_程序员的乐趣是什么?
  8. 计算机网络自顶向下-链路层
  9. C#—接口和抽象类的区别?
  10. 双重差分模型能做固定效应吗_互助问答第213期:模型中的固定效应问题
  11. android 控件xpath软件_请像用户使用软件一样,享受自动化测试~
  12. 网络翻译-利用有道接口
  13. 普渡大学统计与计算机科学,普渡大学西拉法叶分校
  14. json标准格式举例_json几个小例子
  15. Kafka消费者消费方式
  16. 《恐怖电脑》技术支持
  17. 华为鸿蒙系统2.0是什么?Android的升级版?
  18. [AGC043-B]Merge Triplets
  19. Au入门系列之一:开启音频处理之旅
  20. 当编程语言都变成女孩子 猿哥想想都觉得冲动

热门文章

  1. vin端口是什么意思_端口有无开启
  2. 基于matlab fdma传输系统设计,基于MATLAB的LTE系统仿真研究
  3. greenplum 存储过程_如何使用Greenplum提升PB级数据处理能力
  4. pymongo多结果进行多列排序的代码
  5. 概要设计实例_多核片上系统(SoC)架构的嵌入式DSP软件设计
  6. matlab估计arma残差,写给你的金融时间序列分析:补完篇
  7. gnuplotx轴的logscale显示
  8. 文件查找利器---find详解
  9. PHP实现MVC开发: 一个简单的MVC(转)
  10. Python:通过远程监控用户输入来获取淘宝账号和密码的实验(一)