Doc as Code (1):起源

news2024/11/19 4:28:48

245bc1476ff0444a8c0305b84783da61.png

 作为技术传播从业者,你一定听说过Doc as Code,中文大家叫做文档代码化。

近年来,这个词在技术传播行业传开了。也许是在某个大会上,也许是在某篇文章中,再或者是在与同行的讨论群里,不管是从哪里,反正是知道了这个词。

Doc as Code到底是什么?它有什么特点?是否该采用这种方法?具体怎样做?我们来聊聊这个话题。

因为东西很多,咱们分成多篇文章,这样轻松一点。

- 1 -

什么是Doc as Code

这里的Doc应该翻译成“写文档”而不是“文档”,Code应该翻译成“写代码”而不是“代码”,这样Doc as Code翻译成中文是:像写代码一样写文档。所以“文档代码化”这个翻译大龙觉得并不太准确。

Doc as Code起源于软件行业的文档,是指用开发人员编写代码和发布软件相同的工具和流程来编写和发布文档。

写代码是软件工程师的主要工作,软件工程师更愿意把他们的时间花在研究需求、算法、编写和调试代码等软件开发活动上。其他工作则是能“偷懒”就“偷懒”。事实上,研发经理通常支持软件工程师的这种“偷懒”,这样能将时间花在刀刃上。比如:支持工程师制造工具来自动化完成工作,而不是重复地做某件事情,这有时是软件工程师创造力的来源。

软件工程师对生产可运行的软件兴奋不已,但对于写文档不一定有兴趣,所以很少有开发人员有意愿去为了写文档学习和使用一套新的系统。他们希望用自己熟悉的工具、熟悉的流程来写文档,这就导致了这种方法的产生。

根据Tom Johnson博客介绍(1),Doc as Code在2010-2015年左右开始流行起来。因为一些软件开发人员觉得内容管理系统(CMS)系统过于复杂的和臃肿,它包含许多不必要的模块和基础设施。这使得写文档和将其发布成网页这样的简单任务负担过重。2008年,有一个软件开发人员叫Tom Preston Werner,他是GitHub的联合创始人,也是早期使用Docs as Code方法的开发人员之一。他在写博客时的顿悟,让他开始尝试Docs as Code这种方法写文档。

Doc as Code是一种方法,它并不限定使用某一具体工具来编辑和发布文档。

- 2 -

Doc as Code的特点

因为是使用写代码的工具和流程来写文档,所以文档也和代码类似。Doc as Code有这些特点:

  • 使用纯文本文件来写作,而不是像MS Word这样所见即所得的格式
    Doc as Code使用纯文本文件作为文档的格式,格式包括:Markdown、reStructuredText(rST)、XML等。

  • 使用Git、SVN等版本管理工具来管理文件,而不是使用数据库来管理
    Doc as Code使用版本管理工具,通常包括包括版本管理、分支、合并等功能。

  • 使用持续集成工具来定时发布和打包文档
    持续集成的英文叫CI(Continue Integration),用来定时做文档发布和打包工作。

  • 使用静态站点生成器(如Jekyll、Hugo等)构建web输出

  • 使用开发人员用来审查代码的方式(Pull request)来审核文档。

- 3 -

我Doc as Code的经历

N年前,大龙在外企带领产品研发团队开发软件产品,这些软件产品供全世界范围内航空公司人员使用。我们的软件3个月发布一个大版本,中间如果发现问题,还会发布临时版本来修复问题。

当时,我们的团队使用的是Java编程语言,使用Subversion(也就是SVN)来管理软件源代码,使用Jenkins来做持续集成,每天晚上自动对软件代码进行编译、打包和测试。

我们产品的文档是这样编写、管理和发布的:

  • 使用符合DocBook格式的XML文件编写
    DocBook是类似于DITA的一种基于XML的文档标准。

  • 使用Arbortext Editor编辑器来编写内容
    因为我们的产品是基于PTC Arbortext Editor的,所以顺便就使用它来编写XML文档了。

  • 文档内容放在SVN中进行版本管理

  • 使用Arbortext Publish Engine发布文档
    在Arbortext Editor中写好文档以后,调用发布引擎的发布功能将文档发布成PDF和HTML格式。

    我们使用Arbortext Styler根据公司风格给文档定制了公司logo、首页、目录、页眉、页脚等样式,这样发布的文档就有公司的风格了。

    发布好的文档被打包生成帮助中心。

  • 帮助中心与软件集成
    当安装软件的时候,帮助中心被一同安装。用户使用软件的时候在界面上点“帮助”菜单,系统会显示相关的帮助文档了。

那时候我们并不知道有Doc as Code这个词。今天来看,当时使用的就是Doc as Code这种方法嘛,这种方法对于中小型团队确实是简单实用。

在软件团队,不用引入新的工具、新的方法,就是使用软件开发现成的工具和流程写文档,一切都很熟悉和自然。

近年来这种方法被很多公司所接受,国外有Google、ServiceNow等公司,国内有阿里云、PingCAP等公司,以及众多的开源软件公司。除了软件行业,众多行业的文档团队也开始尝试这种方法。

既然是像写代码一样写文档,那么下一篇我们聊一聊软件公司到底是怎样编写、管理代码以及怎样发布软件的。

- 4 -

参考

(1) Docs as Code: 

https://idratherbewriting.com/trends/trends-to-follow-or-forget-docs-as-code.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/756255.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DAY47:动态规划(九)完全背包理论基础

文章目录 完全背包示例与01背包的区别:遍历顺序常规遍历写法DP状态图-为什么背包正序就能放进来重复物品 for循环的嵌套,外层物品内层背包能否颠倒?for嵌套顺序颠倒的遍历写法 测试示例面试题目总结 课程链接: 代码随想录 (progr…

自动生成spring-configuration-metadata.json文件

在开发过程中为避免重复修改代码,往往将代码中容易发生变更的值提取出来放到配置文件中。例如数据库连接信息,使用Http调用第三方应用的网关地址等信息。 使用Sprin Boot的ConfigurationPropertie 从配置文件中读取属性值方法多样,这里介绍…

【反向代理】反向代理及其作用

反向代理及其作用 一、什么是正向代理 在介绍反向代理之前我们先介绍什么是正向代理 首先要明确的是,在http协议中正向代理一般被称为代理,在web服务中我们可以通过主动配置代理服务器的方式来发送请求,并通过代理服务器接收服务器的响应。…

自学网络安全(成为黑客)

一、前言 黑客这个名字一直是伴随着互联网发展而来,给大家的第一印象就是很酷,而且技术精湛,在网络世界里无所不能。目前几乎所有的公司企业甚至国家相关部门都会争相高薪聘请技术精湛的黑客作为互联网机构的安全卫士,所以黑客也…

umi框架的使用

umi框架的使用 安装npm i -g yrm 查看yarn镜像源yrm ls 切换源 yrm use taobao 创建项目 yarn create umijs/umi-app 安装依赖yarn 启动项目yarn start 路由组件还可以进行children进行子路由渲染 打个比方,现在有头部导航跟侧边是一致的我们只希望修改每个应…

Mybatis-Plus详解

目录 一、Mybatis-Plus简介 (一)什么是Mybatis-Plus (二)Mybatis-Plus的优势 (三)Mybatis-Plus的框架结构 二、SpringBoot整合Mybatis-Plus入门 (一)创建maven工程,…

爬虫+Flask+Echarts搭建《深度学习》书评显示大屏

爬虫FlaskEcharts搭建《深度学习》书评显示大屏 1、前言2、实现2.1 挑选想要采集的书籍2.2 构建爬虫2.2.1 采集书籍信息2.2.2 采集书评 2.3 数据清洗2.3.1 清洗书籍信息2.3.2 清洗书评信息 2.4 统计分析,结果持久化存储2.5 搭建flask框架2.6 数据传值2.7 完整代码&a…

什么是Nginx的反向代理与正向代理详解

文章目录 1、什么是正向代理2、什么是反向代理3、反向代理的作用 1、什么是正向代理 正向代理,“它代理的是客户端”,是一个位于客户端和目标服务器之间的服务器,为了从目标服务器取得内容,客户端向代理服务器发送一个请求并指定…

汽车网卡驱动之TJA1101B

TJA1101B汽车网卡驱动(汽车以太网) 1总体描述 2特点和优点 2.1通用 2.2针对汽车用例优化

酷炫音乐盒: python打造自己的音乐播放器

目录标题 前言代码实现尾语 前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! Python的Tkinter(Tk接口)是一个用于创建图形用户界面(GUI)的标准库。 它是Python的内置模块,无需额外安装即可使用。Tkinter提供了一组…

【字节青训pre】后端笔试练兵

文章目录: 零、前言一、选择题二、编程题1、36进制转换a) 题目b) 解题思路 零、前言 好久没更博客了 , 暑假参加字节青训营,记录一下备战经历,水水博客 。 因该博客持续更新,文中部分链接是写该博客时预存占坑位的&…

【雕爷学编程】Arduino动手做(147)---QMC5883L三轴罗盘模块2

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

基于Python+Django+mysql+html学生成绩管理系统

基于PythonDjangomysqlhtml学生成绩管理系统 一、系统介绍二、功能展示1.用户登陆2.主页3.年级管理4.班级管理5.课程管理6.学生管理7.班级管理8.学生管理 三、其它系统四、获取源码 一、系统介绍 成绩录入测试账号:test 密码:123 在线成绩录入&#xff…

redis -速成

目录 (一)认识 Redis 1.1数据库分类 1.2 什么是Redis 1.2.1 redis简介 1.2.2 谁在用Redis 1.2.3 怎么学redis 1.2.4 Redis的安装 2 数据类型 2.1 概况 2.2 String类型 2.2.1 常用的命令 2.2.2 非常用命令 2.2.3 举例 2.2.4应用场景&#xf…

面试之双亲委派原理

一面腾讯提问:如果我自定义一个 new Object 类,请问这个类是否会被加载? 回答:不会,因为双亲委派,向上加载。回答的过程中磨磨唧唧。当然最后一面也是没有过。 总之一句话:向上加载,向下委派. …

【Linux操作系统】死锁

文章目录 死锁的概念产生死锁问题的必要条件如何避免死锁 有两个小朋友站在超市的零食区,手上各拿着五毛钱,他们直勾勾的看着眼前的棒棒糖,问了问阿姨,这个棒棒糖要一块钱。所以a对b说:“你把你的五毛钱给我买棒棒糖”…

Spring Cloud Hystrix简单实用

文章目录 一、简介二、快速开始1、pom依赖2、启动类注解3、服务降级配置HystrixCommand4、配置熔断策略5、测试 三、原理分析四、实际使用 一、简介 Hystrix,英文意思是豪猪,全身是刺,刺是一种保护机制。Hystrix也是Netflflix公司的一款组件。…

Controller配置总结与RequestMapping

1.Controller 2.ResquestMapping 就一个父级目录与自己目录的一个关系!!!理清楚就好了,很好理解!

MURF20100CTR-ASEMI快恢复对管MURF20100CTR

编辑:ll MURF20100CTR-ASEMI快恢复对管MURF20100CTR 型号:MUR20100CTR 品牌:ASEMI 芯片个数:2 封装:TO-220F 恢复时间:50ns 工作温度:-50C~150C 浪涌电流:200A 正向电流&am…

[JVM] 2. 类加载子系统(1)-- 内存结构、类加载子系统概述

一、内存结构 类加载子系统的职责是:加载class文件到内存中。 完整的内存结构如下: 二、类加载过程 类加载过程总体分为Loading(加载)、Linking(链接)、Initialization(初始化)三…