⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 分布式实验室 vadimkravcenko.com/shorts/proper-documentation/ 「李鹏」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。
  4. 新的源码解析文章实时收到通知。每周更新一篇左右。
  5. 认真的源码交流微信群。

我非常喜欢编写文档。除了写代码,我认为这是我最喜欢的工作。文档能为企业带来巨大的长期价值,个人投入编写文档的时间能够在公司层面上带来相当于 100 倍时间的生产力。

如果你是一位技术总监,文档就是你的秘密武器,你创业公司的无名英雄,那位在产品开发后台默默守护的灰衣骑士。它消除了猜测和重复发明轮子的困扰,像一张黄金门票,能让新成员迅速融入团队。这份宝藏地图将引导新人和老手穿越创业公司流程的迷宫。你的团队会更快地找到立足之地,成为高效的贡献者,工作效率超出你的预期,所有这些都源于你决定优先记录下来的内容。

不要像这样

这里有一个问题,哪个更好:

  1. 给某人写封电子邮件,打断他们专注工作的状态,要求解释某个软件的工作原理。
  2. 还是自己查找所需信息,并以自己的节奏进行处理。

提示:第二种方式更好。

文档的重要性

让我们从基础内容开始。

想象一下,你是一家初创公司的技术联合创始人(也许你甚至不需要想象),你正深陷于混乱之中,这是意料之中的事。你每天都在玩打地鼠的游戏,只是试图在被拉入另一个问题之前稍作喘息。那么,你如何摆脱这个恶性循环呢?

答案很简单 —— 文档化。我指的不仅仅是维护一个简单的操作手册或记录会议纪要;当然,这些也很重要,但我是指建立一种文化,让知识不再局限于个人,而是传播并为整个组织所共享。

每一件未记录下来的事情都意味着未来的资源浪费,并且可能成为让人头痛的问题,对,就是让你头痛问题。我不知道你的情况如何,但我想确保自己没有任何头痛问题;这就是为什么我喜欢构建能够独立运行的系统。

现在想象一下,有多少事情你还没有记录下来,那就是你当前可能陷入意想不到问题中的潜在风险。例如,由于一些软件包的更新,你的持续部署出现了问题。巧合的是,只有来自 X 部门的鲍勃知道如何修复这个问题。但是他整个星期都在度假。

💡文档编写减少了头痛问题,避免影响休假。

你可以把文档编写看作是有效知识共享的基石。在创业初期,当你是唯一的程序员,与 CEO 坐在办公桌前交谈就可以简单地分享信息和想法。如果出现问题,你可以通过所拥有的知识和手段来修复它。但这种方式很累人,而且你基本上成为了公司发展的瓶颈。如果你去度假 —— 不对,你根本无法去度假,因为如果你休假,一切都会停滞不前。

随着创业公司规模的扩大,人员、项目和复杂性呈指数级增长。知识被困在你的脑海中,沟通变得复杂混乱,结果是人们需要花更多时间追寻你的信息,而不是真正应用它。

作为技术创始人,要尽可能将你掌握的每一点知识都写下来。这将成为一个普遍的真理源,一个动态的知识库,捕捉并保留着团队的智慧。这份智慧能帮助团队中的每个人解决他们曾一无所知的问题。这样你也能放心去度假。相信我,你需要这样做。

文档第一,会议第二

既然你知道文档编写能让你的生活变得更轻松而不是更困难,那我们来谈谈时间和效率的问题。

在创业公司的世界里,时间是至关重要的资源。每一刻钟都承载着所做决策、产品构建和市场扩展的重要性。而会议则是这种资源最容易被消耗的地方。

请别误会,我并不是说所有的会议都是没用的,但我们必须审慎权衡它们的成本与价值。借用 Bukowski 的一句话,“除非它像火箭一样自然而然地迸发出来,否则就别去做。” 把这个原则应用到会议上 —— 除非有必要,否则就不要开会。

频繁举行会议的需求是一个更深层次问题的症状 —— 缺乏清晰、易于获取和可靠的文档。一个有良好文档支持的工作流程不需要长时间的会议来进行讨论。一个有良好文档支持的决策不需要满屋子的人来理解其原因。一个有良好文档支持的知识库不需要每当新成员加入团队时就进行团队会议。

“但是会议不是沟通的必要手段吗?” 是的,会议是必要的。但是过多的会议,尤其是管理不善的会议,会对你的创业公司造成伤害。它们营造出生产力的幻觉,而实际上阻碍了生产力的发展。通过减少对会议的依赖,强调以文档为先的异步沟通,你可以让团队在不受 Zoom 会议束缚的情况下进行高效沟通。

那将是一个很棒的功能

好好思考一下:每场不必要的会议都会错过一个机会。那些时间本可以用来完善关键算法,或者用来休息以避免工作太累。简言之,减少对会议的依赖不仅仅是为了节约时间,更是为了重新获得专注、创新和创造的能力,这正是创业公司的生命线。

作为一位经历过多次创业公司成长的技术联合创始人,我可以向你保证:比起开会,你的时间和资源更值得投入到文档编写上。大多数会议很容易通过精心起草的文件来替代,该文件呈现相关数据和提出解决方案,并邀请其他人提供反馈。

💡会议往往会失控。你本来只是召集一个快速的会议来讨论一个小问题,但不知不觉中,你卷入了一个长达两个小时的关于着陆页 CTA 按钮颜色的辩论。

此外,会议往往更加倾向于那些嗓门大的人,而不一定是那些提出最好想法的人。这是一种潜在的存在形式,这可能会扼杀创新和思维多样性。而文档编写则能够平衡这种情况。它为每个团队成员提供了一个平台,让他们能够清晰地表达自己的思想和见解,而不受职位或沟通方式的限制。它倡导思考和反思的文化,而不是仓促做出判断和冲动决策。

你可能认为在全公司范围内举行一次会议,并宣布从现在开始将 AI 整合到所有流程中是一个不错的主意。但实际情况如何呢?在快节奏的创业公司中,细节很容易在忙碌中被忽略。你可能会提到一些事情,开个玩笑,语无伦次,导致沟通不畅,然后你会发现自己又有一个需要解决的问题。将决策以及决策形成的过程记录下来会非常明了。

每个决策都是你的创业公司发展的基石,将它们记录下来可以提供一个坚实的记录,就像建筑蓝图一样详细描述你的思考过程、关注点和决策原因。这种清晰性在公司扩张并面临日益复杂的挑战时非常宝贵。

当你将文档纳入决策过程中时,它充当了一个知识库。它包含了每个决策的背景、见解和所获得的经验。当类似情况再次出现时,你可以参考这些文档。这样做本身就是一种可持续发展的技巧。

作为一位技术创始人,你应该如何推动这一点呢?鼓励团队成员记录他们的决策过程,明确假设、推理和预期结果。在会议上讨论这些记录下来的决策,倡导开放反馈和协作决策的文化。

这样做的美妙之处在于,它将每个决策转化为一个学习机会,培养团队的成长思维。每个人都能够看到过去选择的后果,并理解背后的考虑因素,从而使他们成为更好的决策者。

建立文档优先的文化

文档优先文化意味着在创业公司中培养一种共同意识,一种将所有人联系在一起的统一力量。这不仅仅是严格遵循流程的问题,而是民主化知识、打破等级障碍和培养学习文化的过程。文档优先文化并不意味着每个人整天都在忙于撰写文件。它意味着每个人都重视记录和分享自己的经验的价值。

当构建一个项目时,文档始终是任何任务的一部分,这是默认的。员工的一部分时间应该用于书写他们的经历。这不仅仅是为了提高效率,而是为了创造一个共享知识受到推崇的环境。它是关于创造一种不仅仅创造产品,而是打造一个故事的文化 —— 一个关于集体成长的故事。

你在其中的角色可以是催化剂和促进者,要始终以身作则。记录你自己的流程和决策,并公开分享。始终做好记录。鼓励反馈和学习的文化,让每个文档成为讨论、改进和创新的起点。如果需要做出决策,从一个文档开始,而不是一个会议。如果需要进行利弊讨论,从一个文档开始。

💡 作为 CTO,人们会以你为榜样并仿效你。因为在你的公司中,你所做的一切都是正确的方式,这是一把双刃剑,所以要谨慎树立榜样。

通过鼓励同事记录他们的流程、决策和学习经验,你表明你重视他们的见解和经验。这培养了一种超越他们指定角色和任务的归属感和参与度。他们成为公司知识库和成功的积极贡献者。

点赞那些写出优秀文档的人。公开分享它们。祝贺那些和你一样热衷于文档的人。

工具

接下来,为团队成员提供能够轻松进行文档编写的工具。找到一个符合团队需求和工作流程的工具,可以是共享驱动器、Notion、Confluence、GitLab 或其他知识管理平台,有数百种选择。请记住,你为团队成员提供的工具越方便他们进行文档编写,他们就越有可能去做。

准备好模板和指导方针。将它们视为你的文档的 DNA - 它们提供结构、一致性和可预测性,使得知识能够在组织中有效地复制和传播。这是一项复杂且耗时的任务,但一旦准备好,后续的工作就会变得非常容易了。

Remote.Com 概念文档

模板确保信息以标准化的格式记录,使其易于理解和比较。另一方面,指导方针提供了 “规则”,确保每个人都了解应该记录什么,如何记录以及如何查找文档。

💡 创建清单,启动审查流程,并设置版本控制。这些工具不是限制,而是帮助你的文档以统一的声音、风格和格式呈现。

将文档编写作为公司价值观的一部分。鼓励团队将其视为工作的不可或缺的一部分,与编写代码一样重要。将其纳入绩效评估和反馈会议的例行程序中。鼓励他们改进文档,并要求他们发现流程中的缺陷。

随着创业公司的发展,文档需求也会不断变化。

人

在初创企业中为文档编写指定一个专门的团队或个人可能看起来有些奢侈。但请相信我,这是你可以做出的最明智的投资之一。为什么呢?因为知识是初创企业的生命线,而专门的手册团队就像是血液循环系统,确保这一重要知识能够在整个组织中自由、高效地流动。

💡 当然,并不一定需要一个完整的团队。一个全职致力于改善文档编写的人可能会成为巨大的资产。

这些好处不仅仅局限于知识管理。你的文档团队可以通过弥合团队之间的差距、促进跨部门合作和打破壁垒来提高整体组织效率。他们就像是将所有团队的智慧紧密联系在一起的粘合剂。

阻力

并非每个人都会喜欢这个想法。如果你的初创企业已经经营几年了,可能会遇到一些阻力。请记住,你所面对的不仅仅是代码,还有人。他们的担忧、舒适区和犹豫不决与任何技术问题一样真实。你需要以同样的耐心来对待它们。

处理抵制的最有效方法之一是参与。倾听团队的担忧,理解他们的观点,并回应他们的恐惧。向他们展示采用以文档为先的文化所带来的好处、效率和自由。而且我要再次强调 —— 树立你希望看到的行为榜样,成为首先编写、分享、学习文档的人,并向他们展示它的价值。

庆祝那些敢于进入这个房间修理东西的人

点赞那些采纳这种文化的人 —— 他们在以文档为先的方法上取得的成功、努力和进步。这不仅鼓励他们,还激励其他人效仿。

“并非每个人都会喜欢它” 并不是你唯一的问题。文档本身在开始时可能不完美,甚至可能相当糟糕。但不要惊慌。记住,文档是一个不断发展的生命体,需要时间来成熟。作为技术总监,你的角色是确保文档质量随着时间的推移不断提高。这不是监管的问题,而是培养的过程。

好的方式

首先,清晰度和简洁性非常重要。这意味着将复杂的概念分解为易于理解的部分,去掉冗余内容,专注于核心要点。你的文档不应该像一本冗长的小说,而应该是他人需要遵循的指南。

  • 例如,在 Notion 中,你可以以不同的方式强调信息。
  • 如果感觉过于枯燥,就需要重新书写。
  • 可以添加插图和视频解释。

接下来是结构和组织。你需要一个有意义且直观的格式。如果人们无法找到他们需要的内容,他们会迷失并且感到沮丧。你的文档应该引导他们,而不是让他们感到困惑。

  • 将文档分解成页面,并在相关文档之间进行交叉链接。
  • 建立一个目录。
  • 提供 “下一页” 和 “上一页” 的链接,提示可能有帮助的其他文档。

接下来是可访问性和可发现性。你的文档不应该是一本藏在尘封的古老图书馆中的秘密宝典。它是一个活跃的、有生命力的资源,需要易于访问和发现。

  • 利用标签和分类,将信息分组整理。
  • 利用全文搜索或 AI 向量搜索。

最后,这一点至关重要:你的文档不是一座纪念碑。它不是你建立后就遗忘的东西。它是一个不断增长、不断演变的实体,需要定期更新和维护。你的组织会发生变化,你的知识会扩展,文档需要及时反映这些变化。

  • 跟踪最后修改的日期,并更新超过一年的内容。
  • 跟踪信息的所有者,并定期进行更新。

以下是我推荐研究以获取一些灵感的几个开源文档系统:

GitLab:GitLab 手册是一个拥有 2000 页文档的版本控制系统,持续进行更新。我强烈建议阅读其中的内容。

https://about.gitlab.com/handbook/

Strapi:受到 GitLab 全面透明的启发,也是一个值得阅读的文档系统。

https://handbook.strapi.io/

Remote.com:另一个很好的例子。

https://remotecom.notion.site/a3439c6ccaac4d5f8c7515c357345c11

不是银弹

我一直在说文档的重要性,感谢你一直阅读到这里。但让我暂时放下我的观点:文档虽好,但并非灵丹妙药。它不会像超级英雄一样突然出现,解救你的初创企业的所有问题。它只是一个工具,像任何工具一样,它有其局限性。你仍然会面临问题…… 只不过减少了一些而已。

文档虽然有助于协作,但无法替代人际互动。它无法复制面对面交流的好处,无法取代即时反馈的价值,也无法替代团队齐心协力解决复杂问题时的凝聚力。这些会议或者即时交流中建立起来的团队情感对于培养健康的工作文化和推动团队动力至关重要。如果你将所有的人际互动都换成一系列文档,那么你就让团队处于孤立和脱节的状态,这将导致低参与度的问题。

编写文档本身可能是耗时的。编写实用、简明和易于理解的文档需要思考、清晰的思路和简化的技巧。有人可能会认为花费在编写这些文档上的时间可以在其他地方更好地利用。他们并没有错。如果你记录每一个细节,你将拥有一本庞大的信息库,如同在一片茂密的丛林中,难以导航,并且可能没有那么有用。

🚨您知道有时候会有那种文章,花费 2000 个字的篇幅来介绍解决你问题的那一个句子吗?这就是过度文档化带来的感受。

最后,尽管你尽最大努力,文档很快就会过时。技术不断演进,流程不断变化,一个月前还相关的内容今天可能已经不再适用。保持文档的最新需要持续的警觉和定期的维护,对于资源有限、快速增长的初创企业来说可能是具有挑战性的。

总结

我对所有年轻的技术爱好者、未来的技术总监和 CTO 的建议很简单:培养对文档的热爱。你可能把它视为一项任务、一种事后的考虑或者一种麻烦。但是请相信我所说的:文档不仅仅是你待办事项清单上的一项任务,它是成功的支柱,也是连接思想、人员和愿景的桥梁。不要将其视为负担,而是将其视为学习、分享和产生影响的机会。

从小事做起,从今天开始。不要等待完美的策略或者最佳的工具。从记录你的代码、决策和学习经验开始。将它融入到你的日常工作流程中,而不是将其视为一天结束时的任务。随着你的发展,将文档化的文化融入到你的团队、项目和组织中。创建鼓励和促进文档化的系统和流程。

如果有一件事你能从这篇文章中学到,那就是牢记这个口号:“记录以赋能,记录以成长。” 拥抱这个理念,你会惊讶于它所带来的改变,不仅仅体现在你的职业生涯中,还会改变你对技术世界的看法和应对方式。

文章目录
  1. 1. 文档的重要性
  2. 2. 文档第一,会议第二
  3. 3. 建立文档优先的文化
  4. 4. 不是银弹
  5. 5. 总结