要不要背诵?
选项一:全部
选项二:几乎所有
选项 3:重点区域内的所有内容
选项 4:生态系统中的一切
选项五:几乎没有
那么答案是什么?
由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!
我应该记住什么?
每周我都会在某个地方看到类似“每个程序员都应该知道的延迟数字”、“每个软件工程师都应该牢记的十大算法”或“每个初学者都应该记住的 6 个 Git 命令”之类的帖子。
一段时间后,我开始意识到,如果我真的把这些东西都记住了——或者试图记住——我可能会把所有时间都花在记忆上,而很少做其他事情。
这不禁让人思考,究竟什么才值得记忆?
我觉得进行一番有趣的思维实验,探讨一下各种可能性,或许会很有意思。
选项一:全部
显然,试图记住所有内容是一种选择。但我一眼就能看出这很荒谬。“所有内容”究竟是什么?要定义它,恐怕要耗费我余生。即便我能克服定义“所有内容”这一难题,我仍然会把所有时间都花在死记硬背上,而无法真正动手实践。
所以我放弃了这个方案。
选项二:几乎所有
既然已经放弃了方案一,那我该采取什么方法呢?从“全部”开始,然后把不想记住的东西都剔除掉吗?比如,物理和化学?或者只剔除计算机科学?又或者,我可以把穿孔卡片、ENIAC 和只能存储几千字节数据的软盘驱动器之类的东西都剔除掉吗?排序算法、帕纳斯表、COCOMO 算法和位移运算呢?我不知道。我该如何划定界限?我可能大部分甚至全部时间都会花在弄清楚哪些东西不该记上。我真的需要一开始就划定一个界限,而不是慢慢地删减,直到最后只剩下一些我能掌握的东西。
所以我放弃了方案二。
选项 3:重点区域内的所有内容
如果我抛开硬件相关的知识呢?或者抛开我专业领域之外的知识,比如移动应用或嵌入式软件(因为我是一名网络服务工程师)呢?
这或许是个好主意。让我把所有跟网络服务相关的内容都记住。
嗯……这听起来还是不太对劲。早期的 Web 应用和服务是用 CGI 和 Perl 编写的。后来 LAMP 技术栈风靡一时。现在的世界如此碎片化,我根本记不住所有东西。人们用 Ruby on Rails、Flask、Node、AWS Lambda 和 Spring 做着各种各样有趣的事情。每一种技术都自成一派。
这似乎还是太多了。
选项 4:生态系统中的一切
方案三给了我一个启发。如果我只专注于一些定义明确的事物,比如 Spring,会怎么样?
好吧,但是Spring框架下有很多项目我可能永远都不会用到。“Spring”这个词涵盖了Spring Data、Spring MVC、Spring Boot、Spring Batch、Spring Security等等。而且所有这些项目都有自己的网站,此外还有一大堆相关的支持网站,提供教程、视频、书籍、会议等等资源。
那样做似乎也无济于事。
选项五:几乎没有
“永远不要记住那些你可以查到的东西。”——阿尔伯特·爱因斯坦
如果这是爱因斯坦说的,那肯定是对的。他无疑是有史以来最聪明的人之一。而且考虑到在2019年(现在都快2020年了!)查资料更加容易,我口袋里的手机几乎能找到所有问题的答案。
与此同时,我确实记住了很多东西,因为我每天都在做。我知道如何从 Git 克隆仓库,在 IntelliJ 中打开它,编写测试,实现类和方法,创建和合并提交,最后推送并提交合并请求。所有这些都不需要谷歌搜索或查阅任何资料。所以很明显,我的确记住了一些东西。只不过可能不是用传统的记忆卡片和教科书的方式。
那么答案是什么?
说实话,我也不知道。但很显然,我个人不会采用死记硬背博客文章里的内容列表这种方法。
如果你知道的话,或许可以告诉我?
文章来源:https://dev.to/scottshipp/to-memorize-or-not-to-memorize-255h