技术文档,they are my collection!
工作
今天这篇文章,献给一直撰写技术文档的自己。我自认为是公司中最爱写文档的人了,我们是一个不到40人的小公司,公司作风没有多么严谨,领导也不会要求我们写技术文档。但是从入职初至今,我一直保持着写技术文档的习惯,每当遇到中大型的需求,我是必须贯彻文档先行的,即使这篇技术文档只是写给自己的。
编写技术文档是一个理清软件开发思路的一个过程,我认为开发一个中大型的需求,需要事先做好软件设计工作,然后才能开始开发。我知道在很多大型公司,架构设计、软件设计、开发都是分角色的,每个人专注于干一件事情。但是小公司没有这么多人力,不分这么多岗位。但这不意味着我们就可以舍弃软件开发流程中的某一环节。软件工程是一个严谨的过程,开发是一个充满逻辑思考的过程,我更喜欢一步步来,遵循严谨的开发流程,事先梳理好开发逻辑,然后创造出更好的产品。

上图是我总结的多个技术文档的模板。they are my collection!
学习
除了工作,日常的学习过程中我也会编写一些总结性的技术文档。目前我在使用的工具是阿里的语雀,它可以使用很多的MarkDown 语法,很适合从事IT 行业的人员编写技术类的文档,我很推荐语雀这款APP。
使用语雀之前,我也尝试过很多写技术类文档的APP,如印象笔记,Notion,VsCode的Markdown 插件,还使用过各种画脑图的软件。最终,我认为我编写技术类文档的归宿是语雀。首先它的免费版基本可以满足我的一切日常所需,我不需要为其付费。而印象笔记我记得我使用的时候还开了一年会员,因为它有很多功能是会员专享的。而且个人感觉印象笔记对于Mark Down 语法的支持和展示效果并不如语雀。
第二点语雀原本就是阿里巴巴一直在使用的技术文档平台,所以它天生就是为了编写技术文档而存在的,与之对比的是Notion,Notion 是一个多样化的富文本工具,它更像是一个做总结,列计划类的工具,更趋向于以页面的方式让简单的东西生动化,在我看来是一个增加趣味性的工具。用了一段时间后,我觉得我还是更喜欢采用一个简单列表来做一个计划,或者使用Excel 列一个计划。而技术类文档也不需要花里胡哨的东西,所以我就把Notion 放弃了。
使用脑图是我看了一本关于脑图的书,然后觉得脑图更适合人类大脑的思考,就有一段时间一直使用脑图APP总结我的技术文档。但事实上技术类文档是不适合脑图的,脑图可以是技术类文档关于总结的一部分,作为其中的插图使用,但它绝不能完全代替技术类文档。
VsCode 的MarkDown 插件确实是一个好用的工具,在使用语雀前我有一年的时间使用VsCode 编写我的技术类文档。但是让我用语雀的原因是,语雀有一个一键分享功能,可以将自己的技术类文档以链接的方式直接发给别人看,而且别人还可以进行协作编辑,而这是VsCode所不具备的功能。语雀APP使用至今,让我觉得非常顺手,所以以后大概率也会一直使用语雀进行技术文档的编写了。

用了语雀不到一年时间,我编写了大概300多篇技术文档,大概60万字。they are my collection!
画图
技术类文档少不了的就是插图,一篇带有图例的文档会让人感觉更舒服,更具专业性。我的技术类文档使用的图例一般是UML 图,BPMN图,以及对于一些前端的设计我也会画简单的原型图。而这些图我现在都使用一个APP 搞定,就是ProcessOn。ProcessOn可以画各种图形,虽然它不像很多专业的软件如Axure RP那样具有细致入微的设计体验,但它胜在操作简单,图形丰富,简单来说就是够用。而像Axure RP这种软件我也用过一段时间,感觉出图速率不如ProcessOn,且功能复杂,需要时间学习,但是我很多时候只是画一个简单能表达意思的简易原型图而已。
简单展示一下ProcessOn 的页面,使用ProcessOn 至今,我画的图大概200多了吧,多用于技术类文档的示例图。they are my collection!
AICG
提到AICG想必做IT行业的人应该都不陌生,它是最近几年最火的概念,现在已经成为我在开发过程中,以及编写技术类文档的过程中比不可少的一个资讯,优化类APP。AICG 的平台有很多,从一开始火爆全球的ChatGPT,到现在中国市场百家争鸣的各种大模型平台,如智谱AI,豆包,通译千问,讯飞星火等。。。AICG 在不断进化,逐渐渗透到人类日常生活的方方面面。
在编写技术类文档时,我一般使用AICG 干两件事,一件事是查询自己不懂的技术,或淡忘的内容,结合百度,CSDN,starkoverflow等平台做快速总结学习,以方便后续技术类文档的使用。第二件事就是我会使用AICG 做整体的文字优化工作,让语言更通顺,文本更具有技术性。
结合我使用AICG 的感觉,我认为AICG 可以用,但不可信。因为很多情况下AICG 输出的内容是错误的。很多情况下它生成的内容看起来非常合理,但实际上它的逻辑并不是建立在事实的基础上的。所以对于AICG 的输出,我们要始终保持存疑的态度。我们需要做到广泛求学,不能忘记根本的学习路径,就是看书学知识,而不是一味的依赖于AICG。所以我认为AICG 的使用终将和人类是一个相辅相成的过程,它帮助你回答一些遗忘的东西,优化一些你想要的东西;你引导它指向正确的东西,帮助它修复一些错误的东西,这个过程应该是贯彻始终的。

目前我比较喜欢的AICG 平台是智谱清言,它的生成速率非常快,答案也往往令人满意。
推荐软件
最后将本文提到的软件官网分享给大家,大家可以作为一个参考。工欲善其事,必先利其器,希望大家都能找到适合自己的编写技术类文档的APP。
ProcessOn思维导图流程图-在线画思维导图流程图_在线作图实时协作
语雀,为每一个人提供优秀的文档和知识库工具 · 语雀
智谱清言
相关文章:
技术文档,they are my collection!
工作 今天这篇文章,献给一直撰写技术文档的自己。我自认为是公司中最爱写文档的人了,我们是一个不到40人的小公司,公司作风没有多么严谨,领导也不会要求我们写技术文档。但是从入职初至今,我一直保持着写技术文档…...
详解Qt之QtMath Qt数学类
文章目录 QtMath详解前言QtMath简介QtMath中的函数1. 三角函数1.1 qSin1.2 qCos 2. 指数与对数函数2.1 qExp2.2 qLn 3. 幂运算与平方根3.1 qPow3.2 qSqrt QtMath的优势1. 一致性与跨平台支持2. 与Qt生态系统集成3. 简洁性 总结 QtMath详解 前言 在C的开发中,数学运…...
人工智能与人类:共创未来的新篇章
数年前,当人工智能还停留在实验室的时候,很少有人能想到它会如此迅速地融入我们的日常生活。如今,从手机上的语音助手,到自动驾驶汽车,从智能家居到医疗诊断,AI的身影无处不在。这让我想起了20世纪初电力普…...
4.6 JMeter HTTP信息头管理器
欢迎大家订阅【软件测试】 专栏,开启你的软件测试学习之旅! 文章目录 前言1 HTTP信息头管理器的位置2 常见的HTTP请求头3 添加 HTTP 信息头管理器4 应用场景 前言 在 JMeter 中,HTTP信息头管理器(HTTP Header Manager)…...
非交换几何与黎曼ζ函数:数学中的一场革命性对话
非交换几何与黎曼ζ函数:数学中的一场革命性对话 非交换几何(Noncommutative Geometry, NCG)是数学的一个分支领域,它将经典的几何概念扩展到非交换代数的框架中。非交换代数是一种结合代数,其中乘积不是交换性的&…...
【设计模式】【行为型模式(Behavioral Patterns)】之观察者模式(Observer Pattern)
1. 设计模式原理说明 观察者模式(Observer Pattern) 是一种行为设计模式,它定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式非常适合处理事件驱动系统&a…...
文件导入-使用java反射修改日期数据
文件导入时,时间类型通常不能直接导出,以下方法为批量处理类中日期类型转字符串类型。 Date/Datetime --> String(yyyy-mm-dd)Field[] declaredFields HrAviationstudentMonitorDTO.class.getDeclaredFields(); for (Field field : declaredFields) …...
【网络安全设备系列】10、安全审计系统
0x00 定义: 网络安全审计系统针对互联网行为提供有效的行为审计、内容审计、行为报警、行为控制及相关审计功能。从管理层面提供互联网的 有效监督,预防、制止数据泄密。满足用户对互联网行为审计备案及 安全保护措施的要求,提供完整的上网记录…...
Apache Maven Assembly 插件简介
Apache Maven Assembly 插件是一个强大的工具,允许您以多种格式(如 ZIP、TAR 和 JAR)创建项目的分发包。 该插件特别适用于将项目与其依赖项、配置文件和其他必要资源一起打包。 通过使用 Maven Assembly 插件,您可以将项目作为…...
ReentrantLock(可重入锁) Semaphore(信号量) CountDownLatch
目录 ReentrantLock(可重入锁) &Semaphore(信号量)&CountDownLatchReentrantLock(可重入锁)既然有了synchronized,为啥还要有ReentrantLock?Semaphore(信号量)如何确保线程安全呢?CountDownLatch ReentrantLock(可重入锁) &Semaphore(信号量…...
计算机网络习题解答--个人笔记(未完)
本篇文章为关于《计算机网络-自顶向下方法第七版》的阅读总结和课后习题解答(未完待续) 第二章: cookie:(这里是比较老版本的HTTP,具体HTTPs是怎么实现的不是很清楚)cookie的原理其实很简单。就是在HTTP消息头上又多…...
java虚拟机——频繁发生Full GC的原因有哪些?如何避免发生Full GC
什么是Full GC Full GC(Full Garbage Collection)是Java垃圾收集过程中的一种形式,它涉及整个堆内存(包括年轻代和老年代)以及方法区的垃圾收集。Full GC是一个相对重量级的操作,因为它需要遍历和回收整个…...
python学习笔记(12)算法(5)迭代与递归
一、迭代 迭代(iteration)是一种重复执行某个任务的控制结构。在迭代中,程序会在满足一定的条件下重复执行某段代码,直到这个条件不再满足。 迭代通常用于解决需要逐步推进的计算问题,例如遍历数组、计算阶乘等。迭代…...
从零开始:Linux 环境下的 C/C++ 编译教程
个人主页:chian-ocean 文章专栏 前言: GCC(GNU Compiler Collection)是一个功能强大的编译器集合,支持多种语言,包括 C 和 C。其中 gcc 用于 C 语言编译,g 专用于 C 编译。 Linux GCC or G的安…...
Rust学习(十):计算机科学简述
Rust学习(十):计算机科学简述 在计算机技术这片广袤的领域中,深入理解其内在机制与逻辑需要付出诸多努力。 学习基础知识是构建计算机技术能力大厦的基石,而这一过程往往漫长而艰辛。只有在对基础知识有了扎实的掌握…...
【西瓜书】剪枝与样本值处理——预剪枝、后剪枝、连续值、缺失值
目录 预剪枝 后剪枝 处理连续值 处理缺失值 剪枝(pruning)是决策树学习算法对付“过拟合”的主要手段。 在决策树学习过程中,有时会造成决策树分枝过多,就可能造成过拟合,可通过主动去掉一些分支来降低过离合的风…...
NLP 1、人工智能与NLP简介
人人都不看好你,可偏偏你最争气 —— 24.11.26 一、AI和NLP的基本介绍 1.人工智能发展流程 弱人工智能 ——> 强人工智能 ——> 超人工智能 ① 弱人工智能 人工智能算法只能在限定领域解决特定的问题 eg:特定场景下的文本分类、垂直领域下的对…...
常见线程安全问题之Double Checked Locking
创作内容丰富的干货文章很费心力,感谢点过此文章的读者,点一个关注鼓励一下作者,激励他分享更多的精彩好文,谢谢大家! 双重锁定检查(Double Checked Locking,下称 DCL)是并发下实现懒…...
Redis(非关系型数据库)的作用 详细解读
edis(Remote Dictionary Server)是一个开源的、高性能的、基于内存的数据结构存储系统。它具有极高的读写性能,并且能够支持多种数据结构的存储。Redis 最初的设计目标是作为一个缓存解决方案,但随着其功能的不断扩展,…...
互联网视频推拉流EasyDSS视频直播点播平台视频转码有哪些技术特点和应用?
视频转码本质上是一个先解码再编码的过程。在转码过程中,原始视频码流首先被解码成原始图像数据,然后再根据目标编码标准、分辨率、帧率、码率等参数重新进行编码。这样,转换前后的码流可能遵循相同的视频编码标准,也可能不遵循。…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
