互联网公司的技术人,为什么不写文档?

简介: 互联网公司,产品迭代快,可能很多公司没有“文档”一说。但其实,写好文档,对系统和项目未来的维护是非常有帮助的。

互联网公司,技术侧,写文档有没有必要?

有必要。

要写什么文档?

至少要写总体设计文档详细设计文档

为什么不写?

可能是没时间,可能是不会写,可能是不愿意写。

本文试图分享一些经验,解决“不会写”的问题。


总体设计文档,详细设计文档,应该包含什么内容?
总设和详设 都应该包含的部分:
(1) 需求 :一般以产品的语言描述,这一块可以拷贝产品需求文档中的story list部分;
(2) 名词解释 (可选):非相关领域内的同学需要看到文档需要提前了解的一些概念性质的东西;
(3) 设计目标 :又分为功能目标和性能目标,功能目标一般是对产品需求的技术描述,性能目标是根据产品给出的数据对性能进行的评估。一般来说,新服务必须要有性能目标一项,性能目标可能会影响设计方案。

除了都应该包含的部分, 总体设计 一般还包含:
(1) 系统架构 :一般来说会有个简单的架构图,并配以文字对架构进行简要说明;
(2) 模块简介 :架构图中如果有很多模块,需要对各个模块的功能进行简要介绍;
(3) 设计与折衷 :设计与折衷是总体设计中最重要的部分;
(4) 潜在风险 (可选);

输出总体设计的时候,很多方案还是不确定的,故总体设计重点在“方案折衷”,方案需要在设计评审会议上确认。

总体设计评审完毕之后,此时应该是所有方案都确认了 ,需要输出各模块的详细设计。

详细设计 重点在“详细”,需要包含:
(1) 总体设计结论汇总 (可选):总体设计上达成一致的结论有个简要概述,说明详设是对这些结论的实现;
(2) 交互流程 :简要的交互可用文字说明,复杂的交互建议使用流程图,交互图或其他图形进行说明;
(3) 数据库设计 :这个是应该放在总设还是详设呢?
(4) 接口细节 :输入什么参数,输出什么参数,根据接口前端、后端、APP、QA就能够并行做编码实现了;
(5) 其他细节 :例如公式等;

理论上输出了详细设计之后,无论谁拿到了这个详设文档,都是能够完成该项目的

其他最佳实践?


一、 大图

(1) 大系统或复杂流程,其架构图或者流程图会非常大,经常比A4纸或word的一页大很多,此时不宜在word中直接贴图形,贴了也看不清,建议将图放在wiki上,文档中直接贴链接;
(2) 一定要保存viso或者其他图形的源文件,否则今后改动起来要重画,代价可想而知;

二、 设计与折衷
(1) 设计与折衷是总设中最重要的内容,总设评审中,主要就是讨论这些折衷的优劣;
(2) 评审过后,不但要邮件周知结论,还要在总设中进行更新,说明最终决定使用了哪种方案,为什么使用这种方案;根据自己的经验,接手别人的模块、项目,拿到代码和文档,设计方案对我来说完全是个谜!!!
(3) 有时候因为排期或者其他原因,不一定采用了最优的设计方案,此时更应该在总设中记录决策的过程与原因;
(4) 最后,设计折衷是一个很好的自我辩解的机会: 因为项目进度,或者历史遗留问题,我不得不采取了一个这样的设计,不要再骂我了

三、 性能目标
性能目标是新模块文档必不可少的一部分,很多项目对性能影响较大的话,也必须撰写性能目标,性能一般来说可能包含以下部分:
(1) 日平均请求 :一般来自产品人员的评估;
(2) 平均QPS :日平均请求 除以 4w秒得出,为什么是4w秒呢,24小时化为86400秒,取用户活跃时间为白天算,除2得4w秒;
(3) 峰值QPS :一般可以以QPS的2~4倍计算;

互联网公司,产品迭代快,可能很多公司没有“文档”一说。但其实,写好文档,对系统和项目未来的维护是非常有帮助的。
画外音:文档清楚,开发阶段变化小;未来迭代成本小。

本文转自“架构师之路”公众号,58沈剑提供。

目录
相关文章
|
运维 监控 数据可视化
一文详解网易数帆数据生产力方法论
2021 年,网易数帆大数据团队正式提出数据生产力的理念,数据生产力从广义上讲,是指“通过使用数据,带来组织生产力的提升”;从狭义上讲,是指“数据采集、清洗、加工、可视化等数据处理和数据治理的软件生产能力以及持续运营能力”。
291 0
一文详解网易数帆数据生产力方法论
|
移动开发 算法 数据可视化
程序员自由工作平台国内外汇总篇
程序员自由工作平台也就是我们所说的程序员接私活,关于有没有必要,因人而异。就我本人来看的话,如果你对自己的技术衡量比较客观的情况下,何乐而不为之呢?其实,更重要...
318 0
|
数据可视化 C语言
玉伯:开源有带给我什么
在2021年527蚂蚁技术日上,蚂蚁内源社区举办了内源专场,在专场上玉伯给大家分享了《开源有带给我什么》,以下为演讲的图文整理。
玉伯:开源有带给我什么
|
架构师 安全 Java
开发者故事|热爱代码且发量惊人,一名反“内卷”研发工程师的日常
许多人在选择“程序员”这一职业的背后,或多或少都会有故事可讲。本文是我们与一名 Erda 的用户沟通时深度挖掘到的故事,征得本人同意后对其进行了整理,并设立了【开发者故事】这一栏目,旨在收纳广大同学的故事。
281 0
开发者故事|热爱代码且发量惊人,一名反“内卷”研发工程师的日常
|
存储 物联网 Linux
十年嵌入式工程师,看到如今开发方式彻底震惊了
一个工作十年的嵌入式工程师,做过各种嵌入式项目,从单片机裸程序、RTOS到Linux也都玩过。那一套从编码-编译-烧录-测试的开发方式已深入内心。当新来的95后同事给他演示了使用轻应用开发物联网应用之后,他彻底震惊了,他第一次知道还可以如此方便的使用Python来开发嵌入式应用,他感叹到:当时代要将你抛弃的时候,连招呼都不跟你打。
十年嵌入式工程师,看到如今开发方式彻底震惊了
|
人工智能 前端开发 数据可视化
玉伯:做一个简单自由有爱的技术人
前端工程师如何成长?如何管理前端团队?如何打造团队文化?近日,蚂蚁研究员兼体验技术部负责人玉伯,在蚂蚁内部技术人的成长公开课上,分享了他的人生愿景和心路历程。
玉伯:做一个简单自由有爱的技术人
|
存储 程序员 网络安全
这款“万金油”治好了我多年的职场焦虑症
有了TA,产品、运营还需跪求程序员吗?
2161 0
这款“万金油”治好了我多年的职场焦虑症
如何写商业计划书
这几天在写一个商业计划书,发现要把自己的想法表达出来还是有技巧的,这是从网上收录的一些商业计划书要点:   1) 你的眼光是什么?     * 你的远见是什么?     * 你要解决什么问题?对象是谁?     * 你将来想要成为什么样的人? 2) 你的市场机会是什么?市场有多大? ...
643 0
|
数据库
论程序的成长—— 你写的代码有生命力吗?
做了五年多的程序员了,回过头来看了看以前发的一些帖子,颇有一番感想。我最得意的就是对数据访问的处理方法(我的数据访问层),倒不是说他有多么的强大、多么的完善,而是说他本身是在不断地“成长”,一直都没有死掉。
704 0