作者回复: 👍严重认同!
大脑是用来计算的,并不是用来记忆的,记忆一个索引就好了。
作者回复: 说的太对了,还有单元测试也是一样的,自己不愿意写还抱怨别人不写😄
后面几段总结的特别特别好👍
写文档比写作容易,都不需要刻意练习,稍微用点心就可以不错了。
输出就是要靠写,靠教,靠悟。就像学习攻略里面讲的:用器、学术、悟道、传道。
作者回复: 有些内部文档不方便分享。
我在文中附了一个开源项目的链接:https://video-react.js.org/
这个是一个组件使用文档
其实类似的有很多开源项目的文档都写得很好。比如:
Vue: https://cn.vuejs.org/v2/guide/
Redux: https://redux.js.org/
还有可以网上搜索一些,例如:
产品需求文档模板:https://www.jianshu.com/p/e89e97858be1
微服务:从设计到部署:
https://docshome.gitbooks.io/microservices/content/2-using-an-api-gateway.html
作者回复: 磨刀不误砍柴工!
写有价值的文档、写单元测试,看起来要“浪费”一些时间,但是长远看,可以节约大量的时间。
作者回复: 我大致列一下,可能有遗漏的:
项目立项:
原始需求文档
可行性分析报告
立项说明书
需求相关的:
原型设计文档
产品设计文档
系统设计相关的:
技术方案文档
详细设计文档
开发相关的:
代码规范文档
测试相关的:
测试用例
测试验收报告
运维相关的:
部署文档
故障报告
其实没有特别的标准的,还是根据各个阶段需要。原则上就是:
1. 这件事需要讨论需要评审,要有文档作为讨论的依据,以及记录讨论的结果。比如各种设计文档
2. 这件事要有规范,要有文档保证规范统一。比如各种规范文档
3. 这件事要记录下来,作为以后的一个参考。比如各种报告、环境配置、操作手册、API文档等
作者回复: 🤝英雄所见略同,我就是这么做的:文档、单元测试,都写成Ticket!
作者回复: 其实不必困惑这个问题,因为这本身没有特别的标准的。如果用瀑布模型开发,确实会有你说的文档,但如果是敏捷开发,可能会是另外的形式存在,例如每个小功能一个独立的用户故事,或者是独立的产品设计文档,只是讲清楚一个功能。
虽然形式不一样,但其目的都是一样:让大家可以讨论需求,可以理解需求。
之前我在另一条有回复过有哪些文档的问题:
1. 这件事需要讨论需要评审,要有文档作为讨论的依据,以及记录讨论的结果。比如各种设计文档
2. 这件事要有规范,要有文档保证规范统一。比如各种规范文档
3. 这件事要记录下来,作为以后的一个参考。比如各种报告、环境配置、操作手册、API文档等
作者回复: 谢谢分享!
我也是mindnode(有时候配合xmind),omnigraffie的重度用户。
作者回复: 我们2002年学软件工程的时候,推荐的写设计文档就是你说的这种细化到为伪代码级别,当时初衷是学习建筑行业,把写代码变成像搬砖砌墙一样,招一堆蓝翔培训出来就可以写代码。据说当年日本软件产业就是这样的。
实际上这些年下来,这种方法是不可行的(至少我没看到过成功案例),一个是设计文档写得太细,其实成本上已经跟写代码没差别了,不利于分工协作;另一个是写代码本身是一种创造性的劳动,当你把文档写到伪代码那么细,具体负责代码实现的没什么好发挥的空间了,都变成体力劳动了。
推荐的做法是写设计文档时不要太细,同时应该把具体模块的设计交给负责这个模块开发的人去做,指导他完成设计。这样既可以更好的分工协作,也可以让程序员有机会成长和充分发挥其主观能动性。
作者回复: 不客气,有问题欢迎留言。
作者回复: 可以尝试把一些关键的必要的文档,作为开发任务的一部分,分配时间,应该会好一点。
作者回复: 👍👍
很高兴看到你能学以致用,并且有效果!
作者回复: 我觉得写好技术文档确实不容易,但也没有那么难,毕竟都是给自己内部看的,不要求特别好。
在评审技术文档或者你自己写技术文档,你可以从几个角度去思考:
1. 文档是否讲清楚了它的目的是什么?内容是否和目的匹配?
比如说你这个设计文档是要解决什么问题?设计的是哪个模块?
2. 文档是否解释了为什么要这么做?
比如说你这个模块设计文档,是否解释清楚了为什么要这样设计?这样设计的优缺点是什么?
3. 文档是否描述清楚了如何实现?
比如说作为模块设计文档,到底是如何设计的?有没有讲清楚整体的设计架构?
总结一下就是一个技术文档,要讲清楚:是什么(What)?为什么(Why)?怎么做(How)?这三个是最核心的要素。
这三个核心问题讲清楚了,然后就是多画图,内容简洁明了。
作者回复: 文档的更新通常是两种方式结合:
1. 即时更新,在内容发生变化时即时更新,或者发现文档不正确直接更新
2. 定期更新,根据团队的特点,定期例如每个月对关键文档进行审查和更新,至于周期设为多久,取决于你的团队能容忍多久不更新的文档
文档的更新要尽可能简单方便,不宜过于繁琐,当更新文档的成本过高,就会越发的没有更新文档的动力。
代码不能替代文档,好的代码可以帮助你理解代码。代码的问题在于很难直接通过代码看到全局架构,必须要配合有文档来从整体说明整体的架构。
为什么有人说代码就是最好的文档呢?并不是代码能替代文档,而是说阅读好的代码,能帮助你快速的理解代码的含义,不需要额外有文档说明;还有就是一些类似于繁琐的一步步的操作部署文档,完全可以用自动化脚本代码替代,从而不需要文档或只需要简单的文档。
没有价值的文档即无意义的文档!
作者回复: 🤝是的,写文档从粗到细比较好些
作者回复: 可以参考我给hua168留言的回复和给你另一条留言的回复。
作者回复: 赞,谢谢补充分享👍
作者回复: 👍有价值的总结分享!
作者回复: 是的,写文档没那么难,但是意义很大!