哪些技术有助于保留编程知识?[关闭]


44

您还记得编程相关的东西吗?您是否有几年前遇到过现在您遇到的错误的感觉,并且可以发誓知道当时的原因,但现在却已经忘记了?

您是否曾经使用过xsl的字符串解析功能,但是现在您已经不记得确切的xsl字符串功能了,您必须从头开始?或者,也许您忘记了Apache Commons的某些功能,例如您过去肯定使用过的“按谓词过滤集合”。

你是怎么做到的?我曾尝试过开设博客,但是在开发应用程序时,我从来没有时间更新博客或撰写自己的经历。同样,使用Wiki是一件好事,但是后来我发现很难保持它们之间的清晰分离,因为很多时候我都需要更改博客文章以添加有关该主题的新信息。这使我认为我实际上应该将该主题放在Wiki中而不是博客中。

您是否有任何系统可以帮助您记住编程经验?你的设置是什么?


82
我的设置:1.google 2.书签页面3.忘记书签4.goto-> 1。
e-MEE 2012年

4
使用个人Wiki。记下您解决的每个问题,以便您和其他人以后查看。只需做几个月,您就会获得大量信息。我使用WikidPad及其非常不错的功能
Ubermensch'3

2
Google非常适合提供答案,但我认为它不能真正解决有关存储技术的问题。当然,这只是一条评论。
Michael Durrant 2012年

4
我的大脑是我的CPU和缓存。我通过这样做将东西放入缓存中。我剩下的知识在其他地方,例如旧的源代码,注释和stackoverflow.com。
Distortum 2012年

5
@ e-MEE:虽然经常使用您所描述的情况,但这是一种不好的做法,您不能依靠它。这既浪费时间又多余。您可以利用这段时间来构建出色的功能,而不用重新发明轮子:)
克劳迪乌·康斯坦丁

Answers:


64

忘记事情是正常的。不记得过去曾经帮助过您的一些技巧也是很正常的。这是人们应该承认的第一步。然后,有一些方法可以“存储”知识以进行进一步修订:

  • 找时间和博客。未来,您将非常感谢现在。
  • 使用小型演示并以某种方式对其进行存档。您一定会多次浏览此存档;
  • 利用您的stackexchange配置文件。将有趣的问题/问题/问题/技巧/窍门标记为收藏夹,以便进一步调查;
  • 继续,继续编程。您使用框架的特定部分的次数越多,您对框架的熟悉程度就越高,您就越会记住。

5
+1是“继续做”的一部分,有点像刷新知识。
tehnyit 2012年

要点

我在这里注册只是为了支持您的答案。完美的人
马丁。

3
日志/日记的值+1。日志记录可以改善饮食,财务,健身等大多数方面的成功。没有花时间写日志的人认为日志的好处是查找某些东西,但真正的价值在于迫使您思考在最近发生的事件中,认真考虑这些事件并将其形成一个故事。这个过程有助于记忆,并使作者思考未来。那么,对于大多数人来说,日志的好处不是在事后阅读日志,而是从日志创建过程中的个人价值和实际价值出发。
四元论2012年

博客是最好的。我一直在博客中记录我所做的事情-一些关于遇到的问题的帖子(很少涉及我喜欢或发现有趣的事情)。这样,当我遇到一些问题(如何再次在这里插入该库?)时,我去了我的博客文章并继续。就像魅力一样工作,加之某天实际上可能会对某人有所帮助。
MatthewRock '16

20

我的钥匙是

品种


重复。 一旦可以转瞬即逝。看到第100次出现会有所不同!

用手指记忆。当我实际键入几次代码时,我记得代码要好得多。

代码库 -保留您已使用和看到的个人代码和技巧。

集权。 我将所有用户名(数百个)保存在1个文件中。我对其应用安全性。

纪律 -您提到没有时间/努力更新自己的博客,等等。您只需要加倍努力,并确保自己做到。

接受 -在上周学习的技能和技巧将是新鲜的。您3年前说的某些项目将很难记住。这是正常现象,因为大脑会腾出更多空间。

多种感官 -有时我使用助记符,有时我以独特的方式画出关键概念的图片。我阅读,听播客,观看视频,在编辑器中使用颜色。我越有感觉越好。

助记符,例如css边框顺序Tarball(TaRBalL)TopRightBottomLeft。我还使用颜色和形状来记住单词和主题。通常越离奇,就越难忘!

继续使用 -这是“使用或丢失”效果。所有知识会随着时间而消失。时间++淡入淡出++

Stack Exchange网络 -我正在多个领域使用Stack Overflow来尝试保持“当前”和“记住”尽可能多的不同技能和技术,即使我在当前工作/项目中没有使用它们。

Dropbox的 -我把commnon小文件与内存相关项

书籍 -我仍然喜欢实体书籍的傻瓜和感觉。我也有多本kindle和其他在线技术书籍,可以在任何地方参考。显然,当数字图书馆非常庞大时,我的技术图书馆就可以在任何地方访问。

Google效应 -不提及此项目就不会真正完整。这更多地是关于您不需要记住的内容-因为您可以在Google上找到它。这也是一个重要的考虑因素。随着越来越多的人越来越擅长于这种获取知识的方式,真正记住任何给定事实的需求正在下降。但是,这也为知识工作者“提高了标准”,他们越来越发现在当前环境中需要深刻的概念理解。当然,这是CME的

我自己的博客

我自己的书签网站。

  • 如何保持博客和书签更新?归根结底,我认为这是纪律技巧,即是的,为此需要一定的奉献精神。但是,如果您上了一个学位并支付了100,000美元(甚至10,000美元)的学费,或者您是自学成才的,您就会知道奉献和毅力的含义。没什么两样 精巧或“精巧的因素”是,当您看到一个带有精巧的教程或技巧或其他内容的精巧的网站,或者克服了棘手的棘手问题时,就会“嘿,那真是太好了!” -因此,当您感觉到这一点(或使用的任何常用短语)时,现在将其与“我必须对此进行博客或记录该书签”相关联。您很有可能不在电脑上,此时正在更新您的博客,因此请向您发送电子邮件,文本,甚至语音邮件或任务列表中的新任务- 适用于您的一切-提醒自己去做!例如,我的Android手机具有一个对此非常有用的任务应用。

感谢您的周到答复。他在更新博客方面保持纪律吗?我认为我遇到的问题要么是懒惰,要么是我没有发布任何东西,因为我认为其他人不会从中受益。
凯尔·海斯

+1为多样化。确实有效,我经历了很多次。
Karthik Sreenivasan 2012年

凯尔(Kyle)很好的问题,我已经更新了答案。但是,我的答案仍然更多是需要保持最新状态,而不是如何保持纪律。在某些时候,这确实取决于个人动机。
Michael Durrant 2012年

7

在过去的一年中,Evernote成为了一个我不能没有的程序,我将所有内容复制到Evernote中。代码片段,屏幕快照,联系数据,版本历史记录等。因此,我不必记住太多细节。我只是知道它在某个地方。

基本版本是免费的。试试吧!


1
那么,在Evernote的服务中断或没有互联网的情况下,您将如何处理?我不建议依靠“云”来存储重要的知识。
史密斯先生2012年

我目前正在使用Evernote,但如果将所有内容放在此处,标签部分将变得非常混乱,您将减少使用它。如果您有很好的技巧,可以分享很多帮助!谢谢!
闪亮的光

@danleadgy,我同意这些标签。我必须要更具选择性,而我真的不必担心。
凯尔·海斯

在Stack Overflow上问了同样的问题之后,我开始使用Evernote,并且效果很好。除了编程信息外,我还存储操作流程。例如,如何从头开始设置我的开发机器(安装操作系统,安装软件,配置)。这非常有用。另外,您可以从任何设备访问相同的信息。因此,您可以在一台计算机或平板电脑上阅读,而在另一台计算机或平板电脑上工作。
B

6

福尔摩斯(Sherlock Holmes)曾经说过这样的话:“一个人的头脑就像一个阁楼。如果琐碎琐事充斥着它,就没有任何真正重要的余地。对于所有这些细节,我们都有百科全书。”

除非您有摄影记忆以及其中的问题,否则您将不会记住所有事情。建立一套资源,一个包含信息解决问题技术的个人资料库。

您可能不记得答案,甚至可能不记得答案在哪里写下来。但是,如果您知道如何解决问题,那么您总是可以再次找到答案。希望这将包括以可搜索和可重用的方式记录您的解决方案。


4

好吧,也许我的情况很特殊……但是:自76年以来,我在笔记本电脑,程序,脚本,配置等上存储着我编写的每一份软件。随着时间的推移(必须承认),我的记忆力已经从记住“东西”来记住有关东西的元数据。当然,其中很多不再相关了,但是我发现最困难的部分是拥有想法,而不是实际执行它们。因此,元数据基本上是在哪里可以找到“想法”的索引。

如今,当我遇到新问题时,我倾向于找到一些使用新方面的大型代码库,并在代码库上花费一些时间。我研究了它,尝试使其在测试环境中工作,然后尝试对其进行扩展,以便可以轻松使用新工具(库,语言,构建技术等)。这个过程使我可以将我的模式,想法映射到一个示例上。我可能会花一些时间来做一些这样的小型项目,并选择我最喜欢的项目作为参考。一旦完成,我最终将重新利用该代码库来构建我自己的应用程序的框架。

当个人档案出现故障时,我就上网了,最近我又添加了SO。在凝视之前,我将对SO上的“新”概念(从个人角度来看是新的)有所关注。实际上,我很少(如今)返回到gaggle。通常,第一个相关的答案是指向SO上一些有趣问题的链接。


4

像其他人一样,我使用书签来跟踪事物。

我曾经使用Delicious,但是现在移至Pinboard。

但是我没有像以前那样使用这种方式。似乎我遇到的每一个编程问题都是一个小的Google搜索。在过去的大约一年中,我开始将Stackoverflow用作搜索词之一!

每当我遇到一个特别困难的问题时,我都会喜欢它来跟踪它,因此这是书签的另一种形式。


我过去也曾用过美味,但他们把那个项目弄得一团糟。现在,我将Diigo用于书签和突出显示。我将不得不检查Pinboard。
jmq 2012年

3

“记住那幅画,忘记细招”

不记得更好的细节是绝对正常的。但是,您应该担心的是忘记主要的事情。如果您修复了错误,则至少应该对问题所在有一个概念上的了解。

书签,博客,笔记本都可以用来存储这些更详细的信息。但是最终,您仍然需要记住更大的“图片”。否则,重新发现那些“更精细”的细节将变得困难得多。


2

保留自己的笔记,用自己的语言表达事物。您的目标受众是,没有其他人,因此您可以保持简洁。(但是,博客文章确实需要清晰且经过良好编辑,这很耗时。)如果您找到了不错的文章/博客文章,请记录URL,但仍要用自己的话来解释。

我保留了一个小的,简短的单主题文件的大层次结构。这些文件大多数都是自由格式的,但是我将切换到使用Markdown。使用grep / find搜索。我将该文件夹保存在我的DropBox中,因此它对我始终可用。


我以前也像这样的文件来做,但是发现Evernote也是这类数据的好仓库。
凯尔·海斯

1

每个人都有自己习惯的风格,对我来说,我将知识分为以下几类:

  • 图书

  • 文章

  • 集合(我发现有趣的东西仅限于几段-实际上是复制信息,有时还会注释源代码)-例如:OODevelopment,泛型等。

  • 可重用的代码(文本和摘录)-每个都在一个良好的树状组织下的单独文件中。例如,DataValidation节点将包含许多用于验证不同数据项的技术,每种技术都位于单独的文件中

  • 已完成的项目

  • 个人视频教程(有时我会录制涉及步骤太多的视频)。

  • 链接

我按主题组织以上内容,每个主题都采用适当的树结构。

有时会有重叠的事情,但是我设法找到了想要的东西。

另外,使用Google桌面,查找文本或文件的速度非常快。


如果您愿意分享,看看您的树会很有趣。
凯尔·海斯

@KyleHayes,我也许可以提供示例
NoChance 2012年

0

我使用OneNote。我使用许多不同的编程语言,因此每种语言都有不同的部分,不同类型的注释有不同的选项卡。

现在,我也开始使用Stack Exchange。


-1

您必须在内存和“存储”之间取得平衡。如果您过多依赖内存或错误地处理内存,则==问题,如果您过多依赖于存储一切==没用。

我的规则:

-不要过度美化!即使文档中的字体大小不同也要写重要的东西:)

-不要过度组织。说服自己整理想法确实需要10层树状结构

-花费时间寻找记录内容。您可能会找到5个针对同一问题的解决方案。当您将它们全部写下来的那一刻,您就会松懈。写下1-2可以真正为您提供帮助的东西。不要让自己告诉你现在没有时间。它相当奇怪,但是适用:“花费时间来获取时间”

我不喜欢将这些东西放在某些“产品”中,因为我想确保它会在20年后存在,并且我不想将自己迁移到各种平台上。

那么该怎么办?

您可以轻松获得任何信息。

例如,安装phpBB并写给自己。您可以立即使用免费的搜索功能,并且可以使用简单的SQL语句提取数据并将其放入文件中。您可以通过cronjob将您的想法导出到文件中进行存档。因此,如果您需要将它们放置在另一个系统中,则可以以最小的努力做好准备。

另一个问题是,没有人能保证您找到的链接会在明天(假设5年后)失效。因此,尝试复制信息:

-以某种浏览器范围下载视频,并将其附加到您的phpBB帖子(或wordpress或其他内容)中。

面对现实:您是一名程序员,并且为他人开发应用程序。为自己打造一个简单的客户,并成为您的最佳客户。

我的2c


-1

简短答案:

练习,练习,练习。

不太简短的答案:

您还记得如何走路?您如何记起说话方式?授予的这些技能并不完全相同,它们不需要看似百科全书的知识(至少对于初学者而言),但是您使用的是同一件事:记忆。

尽管我承认,对于初学者来说,编程在您开始学习时似乎是一个不可能的大主题,但是一旦您掌握了基础知识,它就会像其他任何主题一样变得如此。

一想到这一点,我就开始将事情分解成越来越小的块(我自己的抽象的个人版本)。这样,似乎难以记住的事情就变得容易了(至少对我来说确实如此)。

写下来的东西比您想像的要有用(在教育领域工作过,我知道这会对保留率产生巨大的积极影响)。特别是如果您可以用自己的语言来表达它-而不仅仅是逐字复制它。如果您可以将其解释或等同于您已经知道的东西,那就更好了。

例如:在C#中,字符串对象是不可变的。这意味着每当我告诉程序更改字符串对象的内容时,实际发生的情况是原始字符串被破坏(从技术上讲,它放置在垃圾收集器的最低级别)。就像画家在制作大理石雕塑时犯了一个错误一样,它无法更改,因此被销毁并创建了一个新的雕塑。

这不是一个很好的例子,但它显示了我所学的基本知识。

质量文档也有帮助。我的101编程讲师曾经告诉我的一些东西让我感到困惑:

使您的评论冗长。并不是愚蠢的观点,但是您需要能够编写非程序员可以理解的注释。这样,您就知道项目中的其他人可以完全理解它。想象一下,您花了几个月的时间来实施一个系统,但是您却在工作中遇到了种可怕的事故。其他人将被分配您的工作-尤其是在接近关键时刻的时候-如果他们不知道您的代码在做什么,那么生产就会停止。

好的书也是很好的资源。另一位导师曾经告诉我,如果一本书没有索引(并且其中有很多没有索引),那么就不值得购买。

Google可能是一个了不起的资源,但请注意复制粘贴编码器。远离仅提供代码段且没有任何解释的网站。我更喜欢阅读整篇有关小代码块的文章,这样您就可以准确地了解代码块的意图,如何做到以及为什么程序员以这种方式编写代码。

希望能有所帮助

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.