草庐IT

研发过程中的文档管理与工具

知了一笑 2023-03-28 原文

写文档也是技术活

01:实践


对于多数开发同学来说,很多时候即讨厌没有研发文档,但是自己又不愿意常写文档,痛且倔强着;

程序员该不该写文档,与争论哪种编程语言最好一样,想撕的嘴不留情,该写的笔不停耕;

当自我的意识上去纠结一件事情要不要去做的时候,不妨停下来看一看,大的职场环境是如何选择的,纠结自然就没必要了;

对于写文档这件事情,并不需要去思考能带来哪些好处或者会占用多少时间,用心去写自然明白当中利弊;

最近两年听到不少搬砖的朋友说,公司已经把文档管理提升到资产层面,在重大版本推进过程中,预留文档输出的时间,这可不是一般的大聪明;

从工作的这几年实践经验来看,写文档原则上本着复杂的事项细写,简单的事项简写或者不写,卷可以但又不闲的慌;


02:目录


互联网的产品,多少存在一定的虚拟属性,很多事情和想法也都具有明显的抽象感,如果缺乏文档的结构化描述,时间拉扯下很容易烟消云散;

这里罗列一份在研发管理和职场中,或多或少都会接触到的文档内容,虽然结构复杂,但随着时间的沉淀,其带来的价值远大于维护成本;

工作中涉及到的文档种类比较繁多,但就管理和沉淀的动作来说属于那种重要但不紧急的事情,这样说并不是指研发流程中动作的时序可以混乱;

顺着工作流程把该输出的文档做好,是比较正常的节奏,在特殊情况下也可以先解决事情,再后补文档;

从开发的角度来说,如果是常规状态下的版本推进,那么在版本结束时各种相关文档就可以上传指定目录了;

但是工作中不乏很多生产环境突发的棘手状况,此时团队自然优先解决,如果问题影响过大,在事后必然还要输出总结文档,即是经验更是教训;


03:模板


如果是个人的文档,简明扼要即可;但是工作文档需要有规范和风格上的约束,通常情况下基于统一的模板库即可;

在研发流程中,通常会围绕项目的进度管理文档,在该文档中会统筹流程中的核心内容,涉及各个阶段的进度维护;

基于项目进度管理的文档模板,在流程推进的过程中,不断补齐相关的核心内容,清晰准确的记录版本进度;

采用特定的模板写工作文档,本身就会起到规范的效果,在部门的日常管理中,需要阶段性的沉淀和维护各类文档的模板结构,而模板的内容可以根据具体需求来定,在使用的过程中也需要时常优化;

如果文档模板足够丰富,在一定程度上可以解决不想写文档的问题,在写文档这件事上之所以会劝退很多人,很大原因是缺少可用的文档模板;

当模板库中存在:项目进度、研发设计、测试用例、阶段总结、阶段规划等各种样例时,下载之后直接使用,编写核心内容即可,这样排斥写文档的情绪自然减少;


04:内容


文档的内容是价值所在,对于团队的协作来说内容简明扼要即可,让阅读文档的人可以快速准确的理解事情的信息;

通常需要输出文档的事项都比较复杂,所以在内容上需要适当的排版,复杂的逻辑尽量使用图解来描述,这样内容条理和思路都会很清晰;

对于其他细节方面的把控,比如段落缩进、专业名词、空格等,通常本着:对内的文档尽量做好,对外的文档必须做好的原则;

文档内容是思考逻辑的呈现,在编写过程中也容易发现逻辑上的问题,再通过评审讨论和完善内容,这样事情围绕文档在后续的过程中不会过度偏离主线;

对于开发这个角色来说,写文档是避不开的事,在一个项目上待的时间久了,再看初期的代码,都觉得不是自己写的,更别说是复杂的业务逻辑了;

在研发文档中,最常用的图解就是逻辑时序,再适当的丰富相关的内容,在一份图中可以包括流程、逻辑、交互、数据管理等各个核心节点;

开发的设计文档基本是几张图就可以描述清楚的,通常涉及:业务流程图,逻辑时序图,数据结构图;

当复杂的业务呈现在文档和设计图上时,其实就是给事情预设好了航线,当然有时候中途被迫返航或变道也不少见;


05:工具


工欲善其事,必先利其器,想快速做好一份文档,必须得有趁手好用的工具才行,在多年写文档的经验中,以下工具多少都试用过;

图中标红的工具,是个人在实践中觉得不错的工具,当下使用最多的是DrawIO和语雀文档,在免费的边界内足够日常使用;

由于工作中需要对接的事项比较多,很难统一协作的各方使用的文档工具,自然接触到的工具类型就很复杂,对于团队内部来说,通常使用办公软件集成的工具,以便于统一管理;

写文档的习惯已经持续了很多年,工具的变迁也经历了三次,从办公文档迁向Markdown,从线下迁移到线上,更换过一次文档工具;

时间在变,文档类产品也在不断的更新换代,如何寻找自己顺手的工具,本着一个基本的原则:免费的范畴内,支持在线管理,功能适当丰富即可;

最后分享一条写文档的理由:因为工作多而复杂,所以要写到文档中,这样便能安心的忘了它。

END


有关研发过程中的文档管理与工具的更多相关文章

  1. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  2. ruby-on-rails - 获取 inf-ruby 以使用 ruby​​ 版本管理器 (rvm) - 2

    我安装了ruby​​版本管理器,并将RVM安装的ruby​​实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby​​。有没有办法让emacs像shell一样尊重ruby​​的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el

  3. ruby-on-rails - 事件管理员日期过滤器日期格式自定义 - 2

    是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s

  4. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  5. Matlab imread()读到了什么 (浅显 当复习文档了) - 2

    matlab打开matlab,用最简单的imread方法读取一个图像clcclearimg_h=imread('hua.jpg');返回一个数组(矩阵),往往是a*b*cunit8类型解释一下这个三维数组的意思,行数、数和层数,unit8:指数据类型,无符号八位整形,可理解为0~2^8的数三个层数分别代表RGB三个通道图像rgb最常用的是24-位实现方法,即RGB每个通道有256色阶(2^8)。基于这样的24-位RGB模型的色彩空间可以表现256×256×256≈1670万色当imshow传入了一个二维数组,它将以灰度方式绘制;可以把图像拆分为rgb三层,可以以灰度的方式观察它figure(1

  6. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  7. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  8. ruby - (Ruby || Python) 窗口管理器 - 2

    我想用这两种语言中的任何一种(最好是ruby​​)制作一个窗口管理器。老实说,除了我需要加载某种X模块外,我不知道从哪里开始。因此,如果有人有线索,如果您能指出正确的方向,那就太好了。谢谢 最佳答案 XCB,X的下一代API使用XML格式定义X协议(protocol),并使用脚本生成特定语言绑定(bind)。它在概念上与SWIG类似,只是它描述的不是CAPI,而是X协议(protocol)。目前,C和Python存在绑定(bind)。理论上,Ruby端口只是编写一个从XML协议(protocol)定义语言到Ruby的翻译器的问题。生

  9. ruby-on-rails - 有没有一种工具可以在编码时自动保存对文件的增量更改? - 2

    我最喜欢的Google文档功能之一是它会在我工作时不断自动保存我的文档版本。这意味着即使我在进行关键更改之前忘记在某个点进行保存,也很有可能会自动创建一个保存点。至少,我可以将文档恢复到错误更改之前的状态,并从该点继续工作。对于在MacOS(或UNIX)上运行的Ruby编码器,是否有具有等效功能的工具?例如,一个工具会每隔几分钟自动将Gitcheckin我的本地存储库以获取我正在处理的文件。也许我有点偏执,但这点小保险可以让我在日常工作中安心。 最佳答案 虚拟机有些人可能讨厌我对此的回应,但我在编码时经常使用VIM,它具有自动保存功

  10. ruby-on-rails - 事件管理员和自定义方法 - 2

    这是我在ActiveAdmin中的自定义页面ActiveAdmin.register_page"Settings"doaction_itemdolink_to('Importprojects','settings/importprojects')endcontentdopara"Text"endcontrollerdodefimportprojectssystem"rakedataspider:import_projects_ninja"para"OK"endendend我想做的是,当我单击“导入项目”按钮时,我想在Controller中执行rake任务。但是我无法访问该方法。可能是什

随机推荐