了解如何通过改善长期记忆来更快地进行编码

Dalia Research的 高级后端工程 Richard Gould 撰写

在达莉亚(Dalia)的第一天,首席技术官费尔南多(Fernando)和我一起在当地的咖啡馆里进行了介绍性聊天。 我们讨论了未来六个月的目标是什么,以及对我的期望。 我强烈记得的一件事是,他说我希望在六个月内完全掌握该系统,了解它们之间的相互联系,并能够对它们做出有意义的决定。 “没问题,”我心想。 通常,我只需要三个月左右的时间就能牢牢掌握我正在研究的领域和系统。 六个月应该没问题! 在这一点上,长期记忆能力还没有引起我的注意。

后来我坐在办公桌前,决心开始征服这个系统。 我查看了GitHub中的存储库。 有50个! 好的,也许它们是小型微服务,您知道“做一件事”的风格。 然后,我看到了基础结构的示意图,并看到大约30个独立的服务,所有这些服务都运行在一个复杂的互连网络中。 那时候它可能沉入我的脑海。 最重要的是,我对域名并不十分熟悉。 不过,六个月还是有很多时间的!

复杂的系统和令人困惑的术语

快进到几周后:我们的系统比起初看起来要复杂得多,并且该领域充满了我什至无法理解的术语。 什么是“完成”? 为什么不将其称为“调查结果”? “发布者”和“提供者”之间有什么区别? 其中一个为我们提供了用户,另一个为我们提供了调查,但是哪个是? 这两个词的含义都非常相似,甚至取决于您的观点,动词“ provide”和“ publish”也可以用来描述这两个实体。

几个月后,我意识到,如果我保持正常的步伐,六个月后,我将不会掌握该系统。 我不确定该怎么办。 我还注意到,我经常会在一个系统上工作,熟悉它,然后几个月不接触该系统。 同时,我忘记了有关它的每一个细节,后来我回来时,我不得不重新学习一切。 效率极低。

寻找解决方案:长期记忆和语言学习技术

在某个时候,我想到了一个主意:如果我采用了一些我一直在学习语言(例如德语)的技术并将其应用于软件开发,该怎么办? 诸如使用抽认卡使事物保持记忆新鲜,以及使用心理联想来增强记忆的技术。

我尝试了。 下次当我发现某些领域概念令人困惑或不得不查找一个或询问某人时,我将其添加到了我的抽认卡系统中。 这些不仅包括定义,还包括思想或领域概念,或者我们的系统如何交织在一起。

然后,我每天都会查看这些卡片,发现将这些物品放在我记忆的最前沿,这也使我也了解与它们有关的概念。 这是由于人脑在将项目存储在活动内存中的限制。 大多数人只能存储5–7个项目,并且尝试将更多项目捆绑在一起,这在您的脑海中变得相当困难。 但是,通过更深入地了解一项,您可以将其移到长期记忆中,加以增强,这也意味着该(通常)不计入活动记忆中的一项。 这使得对新概念的理解变得非常容易(甚至可能是前所未有的)。 这虽然有点简化,但这是本文需要了解的所有内容。

精力,重点和参与

发生了一个有趣的副作用:在涉及领域概念的会议中,我发现自己更有精力,可以集中精力和更好地参与。 因为我不必花精力思考基本概念,所以我可以花精力尝试解决正在讨论的直接问题。

编程条款

后来我开始向我的抽认卡系统添加编程术语。 这样做的一个重要效果是使我可以长时间专注于编辑器,而不是忙于浏览器来查找StackOverflow。 我发现我可以更快地编写功能,并且由于能够专注于更长的时间而感到精力充沛。 能够快速思考一个概念,而不必切换到浏览器以通过API文档进行搜索,或者必须通读StackOverflow上的六个不同答案,这真是令人满足。

现在,当我开发新功能或修复错误时,我在工作时将所有浏览器选项卡保持打开状态。 完成后,我会检查每个选项卡,问自己:“是否要将其添加到我的长期记忆中”? “将来我可能会再次查询吗?”如有疑问,我说是。 我花在审阅卡片上的时间和精力非常小,我使用的一种启发式方法是“将其用于长期记忆可以在将来为我节省三分钟或更多分钟?”如果是,那么我会将其添加到我的卡片中抽认卡集。

Anki:推荐的抽认卡应用

我推荐的闪存卡应用程序称为Anki。 这是所谓的“间隔重复系统”(SRS),用于管理抽认卡。 它会跟踪您是否成功回答了存储卡,并根据您的回答计算出何时应该显示下一个闪存卡。 该算法基于Ebbinghaus的“遗忘曲线”,该曲线计算刷新闪存卡的最有效时间。

它适用于所有平台,它是开源的,并且免费(iOS除外)。 数据也在设备之间同步。 我使用桌面应用程序在手机上添加卡片并进行评论。

如何使用Anki

想尝试一下吗? 通过安装Anki来开始使用:https://apps.ankiweb.net/

创建一个牌组,然后开始向其中添加抽认卡。 以下是我创建的卡片的一些示例:

:哪个实体为我们提供用户?

:出版商

出版物(“用户”包含在“发布者”中)

:什么是补全?

:调查的答案

:什么是HTTP 422?

:不可处理实体-请求包含语义错误

:在Ruby中,如何声明符号数组?

:i%(sym1,sym2,…)

我也会经常添加一些卡片的反面:

:%i(…)是做什么的?

A :声明符号数组

我什至开始添加很少使用的键盘快捷键:

:在vim中,如何在插入模式下粘贴?

A :Ctrl-R

发现Anki不太用户友好? 存在替代方案,而Memrise就是其中之一。 我强烈推荐Anki,因为与其他系统相比,它具有许多优点,但是做某事比起最有效的方法来做更重要。

Anki擅长显示有关您学习的统计信息。 在这里,您可以查看有关包含我的编程卡的卡座的一些统计信息:

如果您想了解有关优化长期记忆的更多信息,请查看以下文章以进一步阅读:

*制定知识的二十条规则-如何制作优质的Anki卡

*工作记忆容量

*增强长期记忆-促使我尝试这一点的原因

如果您想在Dalia使用您的编码技能,请在这里查看我们的最新职位空缺。

Gavin St. Ours通过FlickrCC拍摄的头像。