介绍很难想象在终身学习比软件工程中更重要的其他领域。另一个独特的特征是可以在互联网上免费获得学习材料的程度。最重要的是,我们通过记录问题,提交错误报告,编写注释,创建文档以及许多其他工作来自己创建各种资源。所有这些资源的总和可以称为知识库。您可能会争辩说,每个开发人员都有一个系统来管理他们的个人知识库,无论他们是否知道。在这篇文章中,我将解释我的知识管理实践。 软件工程师的个人知识库可能与他们的雇主和项目合作伙伴的知识重叠。请务必仔细研究您的数据保护义务。一个良好的基础是严格保持您的个人知识库的技术性,并且永远不要包含与客户或一般人相关的数据。 我选择此主题的原因主要有以下三个:
这篇文章的大部分内容都归因于描述我对软件工具的使用。星星将 复制我的所有做法可能不会很好地为您服务。我邀请您按照自己的节奏尝试一些事情,并在每次寻找新想法时重新访问这篇文章。 收藏即使每个人都喜欢书,或者至少这样说,包括我自己在内,但现实是我们大多数时候都依赖数字资源。挑战在于如何有效地组织这些知识,而又不会产生太多开销。 我认为有些幼稚的方法还不够。直到几年前,我主要依靠浏览器书签,但是由于某些原因,浏览器没有提供适当的组织功能。另一种方法是将URL复制到注释,项目问题,文档和所有其他类型的手动创建的内容中。这是可行的,我们都定期进行,但与我认为的书签管理无关。 我当前的设置稍微复杂一点,但是最后,与仅在浏览器中保留书签相比,它不需要做更多的工作。我将书签组织成多层,具体取决于我要访问它们的频率以及它们应保留的时间。 也许您正在考虑现在进行缓存,但是幸运的是,书签层不是缓存级别。这将很难管理,因为众所周知,计算机科学中存在两个难题:缓存无效,命名和错误1分错误。与高速缓存条目相反,书签不应在层之间移动。而是将其插入正确的位置并停留在该位置。 下图说明了我的图层: 1. Chrome书签Chrome书签有一些不错的好处。它们在设备之间同步,可以轻松添加新设备,并且在文件夹中组织它们至少带来了一些结构。对我来说,另一个优势是Albert Chromium扩展程序,它使我可以从Albert访问并打开我的Chrome书签: 由于这些优点,Chrome书签非常适合我经常需要并且希望能够独立于上下文访问的内容。但是,它们不适合保留大量的书签库。没有标签,无法添加注释,浏览器甚至都没有为页面添加书签的时间戳。进一步不可能使用复杂的查询来过滤和搜索Chrome书签。以我的经验,如果浏览器书签库的大小超过一定大小,将很难对其进行管理。 合适的Chrome书签的一些示例:
不应作为 Chrome书签的示例:
2.沃纳纳Workona是我工具箱中的一个相对较新的功能。我对此有不同的感觉,主要是因为它有时会感觉有点慢。虽然有些事情做得很好。 使用Workona,您可以创建带有自己的书签列表的浏览器工作区。当您有多个长期工作的项目时,这很好用。它还会记住您在特定工作区中打开了哪些选项卡,并在设备之间同步此信息。因此,这是我经常需要依赖于上下文的事情的好地方。 Workona进一步允许您添加应用程序,然后将为这些应用程序收集链接甚至功能,以便快速访问它们。例如,我用它来访问我不同的GitLab和GitHub项目,Slack Workspaces,有时甚至是StackOverflow问题。这些条目由Workona自动创建,因此我看不到它们是书签。也可以直接从Workona访问这些应用程序的功能,主要是创建新资源,例如GitLab / GitHub项目,Google Docs,DropBox文件等。感觉有点像Station直接内置在浏览器中。 对我来说,卖点是Workona 允许我通过快捷方式完成所有上述操作,甚至可以在上自定义这些快捷方式 3.观念最后,我们到达适合维护大型书签库的层。为此,以及许多其他用例,我使用了Notion。它已成为我个人知识基础的核心。 Notion的免费层对您可以创建的块数进行了硬性限制。这意味着如果您认真使用一段时间,则必须切换到付费版本。它对学生和老师都是免费的。 对我来说,杀手级功能是数据库。它非常灵活,可以单手为我替换多个其他工具。对于我的书签集合,我使用一个大型数据库。可以通过Notion Web Clipper添加新项目。我有点烦恼Web Clipper不允许我直接添加属性和标签,但是除此之外,它工作得很好。以前,我使用Trello,它在保存书签方面也很出色。但是,为了限制我使用的不同工具的数量,我将其替换为概念。 该数据库的目标是,我可以从几年以后的时间里找到一些应该存在的模糊记忆。这是可能的,因为Notion自动存储元数据,例如创建时间戳。更重要的是,我可以添加标签和任意属性。 一旦使用不同的Notion数据库之间的关系,事情就会变得令人兴奋。例如,我有一个博客文章数据库,该数据库与我的书签有关系。现在,我可以按博客文章过滤书签,并快速查看哪些来源影响了特定文章。 此功能丰富的调色板的缺点是需要纪律。我标记和注释通过Web Clipper添加的新条目,大约每个月两次。通常,我只是删除新项目,因为它们似乎不再重要。如果我无法想到某项的适当标签或关系,这通常意味着它与我不太相关。 我必须学习困难的方法的另一个重要课程: 我希望有一天我能够从Albert的概念数据库中进行搜索。最终发布Notion API后,也许我会自己构建一个扩展。 为了说明我可能用太多词描述的内容,您可以查看我的书签数据库的公开部分,其中包含有助于撰写本文的所有资源。此公共数据库中的后列显示为空,因为相关的表不是公共的。 4.本地书签源最后一层根本不需要任何工作。这仅意味着在尝试查找某些内容以及考虑添加新书签时要注意本机书签的来源。例如,在堆栈溢出上搜索已回答的问题非常容易。返回您的Hacker News帖子或搜索您在GitHub上加注星标的项目也不是问题。将这些内容保存在您自己的书签源中会增加冗余和噪音。 摘要我知道这听起来非常复杂。但是,我坚持说,与将所有书签保留在浏览器中相比,它实际上不需要做更多的工作。您仍然只需将每个书签添加一次。如果您将系统内部化,则搜索书签将不会有问题,因为在特定资源所在的位置很明显。诚然,它确实需要维护才能将大量书签收藏在Notion中,但是很快就会收到回报,并且随着时间的推移会逐渐积累回报。 组织自写资源拥有一个合适的外部资源系统会很不错,但是如果您自己编写的所有内容都乱七八糟,那也无济于事。因此,组织自写资源至关重要。 博客文章我最成功的博客文章是关于我如何免费运行和托管该网站的信息。但是,该文章并未涵盖有关运行此站点的最耗时的工作:编写和维护博客文章。为此,我严重依赖于概念。我有一个数据库,其中包含我过去的所有博客文章以及以后的想法。它是简单的添加标签一样 起草员额在此Blog上发布的所有帖子均已在Notion中起草。当它们或多或少完成时,我使用markdown导出并将内容复制到我的Hugo项目中的新文本文件中。这有一些小问题。通常,我必须调整代码格式和链接,但总体而言,它运行良好,并具有一些不错的好处:
帖子发布后,我将帖子从 跟踪更新思路您可能已经注意到,我的某些博客文章很长。使它们保持最新是一个挑战。幸运的是,我有一个想法可以帮助我。我有一个数据库,可以在其中添加有关更新现有帖子的建议。通过使用关系,我将这些想法链接到我的帖子数据库中的相应帖子: 追踪来源为了跟踪有助于创建帖子的第三方资源,我将它们添加到书签数据库中并将其链接到我的帖子数据库。 您还可以通过我的书签数据库的公开部分查看此帖子的完整资源列表。 记笔记我想,即使他们没有系统,只是随随便便将内容写入文本文件,每个软件工程师也会在一定程度上做笔记。还有大量用于记录和整理笔记的免费和付费软件。有些人甚至喜欢在BuJo系统中使用实物纸。 无论您喜欢哪种方法,都必须考虑何时,为什么以及如何做笔记。 何时记笔记我对此问题考虑了很多,以前我没有遵守任何有关此问题的预定义规则。为了更好地了解自己的习惯并确定过去最有效的方法,我仔细阅读了过去几年中的笔记,这些笔记分布在多个应用程序和大量文件中。我试图找到常见的模式:
由于使用Zsh进行了更为复杂的命令行设置以及用于自动完成和历史搜索的各种插件,因此保留命令行对我而言变得不再那么重要了。如果你还在用猛砸其默认 另一方面,重要的是还要弄清楚该系统中不应该注意的内容:
通常,不要做得过多和做得不够。如果始终记笔记,则会造成开销和冗余。如果您从不做笔记,那么您将不会有笔记。 为什么做笔记显而易见的答案是记住事情。这并不意味着笔记应该代替您的记忆。相反,做笔记可以提供结构和上下文,因此可以帮助您的大脑建立知识图谱。我相信做笔记会增加您可以从内存中调出的数据量。 此外,有些事情很难记住,例如在聚会上展示的复杂技术堆栈,带有多个不透明选项的命令行,数字等等。写下这些内容可以大大扩展您的知识库。在将来编写文档或编写类似此类博客文章时,注释也非常有用;-) 如何做笔记在演讲过程中只键入前面内容可能会很诱人。记下目前看来有趣的事情。但是,您应该满足基本的正式要求并写下一些上下文。否则,将来您将无法从笔记中提取有用的信息。如果您定期记笔记,则通过分配标签和属性,具有创建日期,能够过滤和搜索它们等来组织它们也很重要。软件可以帮助解决这些问题。 直到大约一年前,我主要在本地计算机上记录笔记,并将其与Dropbox同步。即使我使用Google Keep / Notes ,几乎只专注于笔记的应用程序(例如Evernote)对我也没有太大的吸引力。它还算不错,支持例如贴标签,并且在移动设备上的摩擦很小。但是,甚至没有基本的格式支持,更不用说markdown格式或代码语法突出显示了。 然后,我发现了概念。起初,对我来说,记笔记并不是真的。我之所以喜欢它,主要是因为它的数据库概念以及按书签部分所述组织第三方资源。但是,到目前为止,我几乎将其用于几乎所有笔记和其他类型的手写内容。我认为,Notion组合了markdown语法支持,斜杠命令和WYSIWYG,可提供出色的写作体验。 我强烈建议组织在一个数据库中所有的笔记与适当的标记,如 notes数据库是另一个很棒的Notion功能的理想用例:Templates。使用此功能,您可以为不同类型的笔记创建模板,然后例如单击一下添加新的会议笔记。根据模板的不同,新笔记将带有预定义的布局,并且可能包括会议参与者和议程的字段。这是当我单击以在数据库中添加新的会议记录时打开的内容: 项目特定知识以我的经验,最好将项目信息尽可能紧密地保持在一起。对我而言,这意味着问题跟踪,合并请求(即拉取请求),文档以及软件项目随附的所有其他内容应与源代码一起存在。 这种做法保证了现在或将来使用该代码的任何人都可以访问所有信息。我的解决方案是将GitLab用于与特定项目相关的所有内容。这包括几乎所有内容,除了一些我有时在概念中写的快速笔记,因为我不希望其他人看到它们。 为此,GitLab提供了许多项目管理和文档功能,例如问题管理,项目Wiki,适用于所有项目和帐户的代码片段空间等。对于不是特定于问题的所有文档,项目Wiki是一个不错的地方。这可以包括以下内容:
如果您已阅读有关运行和托管该网站的文章,那么您知道我也将GitLab用于此个人博客项目。不过,如上所述,我将Notion用于许多项目文档和管理任务,因为它为该用例带来了一些独特的好处,如上所述。 当然,还有其他选择。GitHub追赶过去,并提供了非常相似的功能集。我对Atlassian产品的经验有限,但是我想您可以通过混合使用BitBucket,Confluence和Jira来实现相同的目的。 管理档案这是相对简单的。我认为最重要的是使用某种形式的云存储。我个人使用Dropbox。 我使用Linux,并依靠Albert搜索文件。如果这不工作,我使用的 如果可以在三个方框中打勾
你应该准备好了。 概念数据库支持文件列。这意味着您可以将不同的文件上传到每个单元格。我还没有找到与此软件工程直接相关的用例。但是,它非常适合管理发票。 其他用例在本节中,我想介绍一些特殊的知识管理用例,它们是软件工程所特有的。我中的大多数人只有在开始使用Notion后才能正确使用。我绝不想说您应该复制所有内容,但是非常欢迎您尝试一下您认为有趣的内容。 代码段当前,我有两种收集代码段的方式。我希望我最终可以以某种方式将它们集成。 VSCode用户片段第一个是VSCode用户片段。VSCode可以正确执行许多操作,并且片段管理就是其中之一。定义新的代码片段并通过键入预定义的字符串来使用它们非常容易。只需按下
然后,可以通过键入前缀并按 概念片段数据库第二个用例涉及我自己编写的并且想记住的一小段代码。这不一定是出于生产力原因,而是出于怀旧之情。它是小型算法的理想选择,例如,当您通过应用一些灵巧的技术设法显着提高某些性能时。 我将这些代码片段保存在一个Notion数据库中,该数据库非常有用,因为我可以标记它们并添加任意属性。这种习惯的一个好处是,如果您暂时不这样做,那就不是问题。您的数据库不会突然变得混乱。 捷径数据库我认为打字熟练度对于软件工程师很重要。如果您可以快速键入内容并使用快捷方式在IDE和工具中导航,则更容易保持顺畅。随着我使用的工具集的增加,我意识到我很难跟踪自己正在使用哪些快捷方式,哪些快捷方式在哪个应用程序中工作以及是否可以更改它们以便使它们尽可能多地在多种工具中使用。 因此,我开始跟踪一些我想在任何地方使用的快捷方式。这些操作包括创建新选项卡,创建新窗口,打开相应工具的搜索功能等等。 这个数据库可以帮助我识别重叠部分,并激发我思考哪些任务适合于我经常使用的特定键组合。比如,我用 例如,我的浏览器现在前锋 概念的筛选和搜索功能非常适合识别设置中的问题。对我来说,问题是两个应用程序使用不同的快捷方式进行非常相似的操作。不幸的是,Notion是应用程序的否定示例,该应用程序不允许您自定义其快捷方式,因此降低了数据库的实用性。如果某个时候来自Notion团队的人读了这篇文章,请您代表我进行游说,以优先考虑个性化键盘快捷键。 我对此用例感到兴奋,并将在以后的博客文章中更详细地讨论它。 工具数据库我也有一个Notion数据库来跟踪我使用的小型Web工具。这对于经常使用的东西没有多大作用,因为您仍然会记住它们。但是,对于偶尔需要使用的次要事情,例如调色板生成器,将手写体检测为LaTeX符号以及检查SSL证书,这非常方便。通常,您可以通过Google找到这些工具,但是有时有很多工具可以完成一项任务,因此最好跟踪工作最有效的工具。 同样,这里重要的是不要过度操作。有大量此类工具的公开列表。您的清单不应该是这些清单的副本,而应该是您不时喜欢和需要的一小部分收藏。 收集新项目的想法就像当今黄金时代的许多软件工程师一样,我有时会考虑启动新的软件项目,甚至可能启动一家小型企业。 结论类似的帖子通常以警告结尾,您应该非常小心,不要花太多时间来组织和维护知识和工作流程。原则上,我同意这一观点。毕竟,您想提高生产率。 但是,我确实相信,花一些时间思考您的知识管理系统是值得的。关于系统概念化的最重要部分是准确确定要在知识库中维护的信息类型。如果您做对了,您将在整个职业生涯中受益。即使将来可能会更改工具,系统也会保留下来。 请不要在下面的评论中分享您的经验。我肯定我的工作流程并不完美,但是这些可能会与您的技巧更加接近。 该帖子与我的阅读列表系列中的新帖子一起发布,其中列出了相关资源。如果您想更深入地了解知识管理概念,则可能需要看看。 |
|
来自: jerry_tom123 > 《待分类1》