程序员高效学习之道

简介: 程序员高效学习之道

前言

认知科学家博学家马文·明斯基说:如果只用一种方式了解某样事物, 你就不会真正了解它。 了解事物真正含义的秘密取决于如何将其与我们所了解的其他事物相联系。 通过联系, 你可将想法内化于心, 从各种角度看问题, 直至找到适合自己的方法。 这才是思考的真谛

学科之间的界限并没有那么清晰, 将知识视为整体,容易将所学的知识与其他知识相联系


整体性学习的顺序

(1) 获取

这个阶段代表信息从采集到进入脑子的过程, 此时处理各种形式的信息以及减少干扰的能力至关重要

(2) 理解

获取信息而不理解是没有任何价值的, 这就是所谓的填鸭式学习。假如你不理解一本书、 一章节、 一段话说的是什么意思, 要想牢牢记住它或者在实际生活中应用它几乎是不可能的。大多数人都能感觉到理解阶段的存在, 虽然信息经过初步理解后变得有意义, 但是此时信息还没有很牢固地扎根于大脑中。整体性学习过程对信息的理解有三个层次, 层次越高, 对信息的理解越深入。首先是理解阶段, 其次是拓展阶段, 最后是应用阶段。在理解阶段, 你只是理解了信息的表面意思。举个例子, 比如你正在学习一个新的数学公式, 至少你要知道公式里每个符号代表的是什么, 然后才有可能应用公式来解决问题。如果你重复使用公式的次数足够多, 就有可能记住它。死记硬背式的学习仅仅是理解阶段的学习。

大多数人到了理解阶段就止步不前了, 而聪明的人知道要超越它, 方能高人一等。到达这个阶段只不过表示你初步理解了信息在上下文之间的意思, 公式不再是胡乱弯曲的字母组合。不过, 光了解这一点还不够, 你还需要了解这个公式是怎么得来的, 它与其他公式的关系, 以及怎样用它解决外面世界的各种问题。尽管理解阶段有局限, 但是这个阶段非常关键, 除非先获取信息和理解它的字面意思, 否则你就没有机会深入下去。

(3) 拓展


拓展才是整体性学习的真正开始。之前你对信息的字面意思已经有了一个基本的理解, 现在你可以将这个信息与其他信息联系起来了, 在这个阶段要应用模型来简化和扩展你的结构, 同时也要拓展对信息的理解, 包括信息的由来(问为什么?) 以及与其他信息是怎么联系在一起的。一名整体性学习者对前面提到的公式会怎么做?先去获取, 然后理解公式本来的意思, 接着开始拓展它。他会问:公式是怎么来的?公式中的每个成分代表的真实含义是什么?公式中的什么成分可以做些改变?这种改变会导致结果发生什么样的变化?其他公式与这个公式有什么相同之处, 又有什么不同之处?如果你不习惯拓展, 上述工作可能要花费些时间, 但是一旦变为习惯, 拓展就会自然发生。只了解字面意思并不符合人的本性, 人们都有进一步了解知识来龙去脉的好奇之心, 保持这个好奇之心吧, 它是我们学习、 创造的源泉。(问问自己难道你不想了解恐龙到底是怎么灭绝的吗?为什么那样的庞然大物有一天会突然消失?地球之外究竟有没有外星人?苹果为什么会掉下来, 而不是往天上飞?1+1为什么就一定要等于2?假如你觉得这些问题很可笑, 麻烦了, 你在嘲笑的同时也正被大家同情, 你丧失的是宝贵的好奇心呀!有了好奇心, 牛顿才会思考“苹果为什么会掉下来”这个似乎很傻的问题, 最终发现了万有引力的存在。──译者注)

拓展有三种主要方式:深度拓展、 横向拓展和纵向拓展。

深度拓展(知识的背景探究)

知识从何而来?结论来自何处?一个发现是如何做出的?事物为什么以这种方式存在?深度拓展需要在信息内部创造联系。不是仅仅理解一个结论就结束了, 要进一步理解结论之前的试验, 试验是怎么做的?是谁做的?怎么想起来做的?如此这般之后, 结论就建立在与其他相关知识联系的基础之上了。深度拓展的缺点是需要很多探索。有些学科本身提供了一定程度的深度拓展, 但是往往深度不够;有的学科根本就没有提供, 只是孤零零的结论。深度拓展可能是牢牢锁定知识的最佳方法, 但是同时也是最花时间的工作。

 

横向拓展

知识不会孤立地存在, 与此类似的结论还有哪些?是哪些地方类似?不同的地方在哪里?同一时期还有哪些其他的发现, 同一个发现者还有哪些发现, 在同一领域里还有哪些发现?围绕这一结论有哪些其他的事实?横向拓展需要在知识周围建立联系, 通常意味着你需要建立模型, 在模型与原知识之间建立联系。比如将发生在古希腊的一件事与另一件发生在古代中国的事情联系起来。

 

纵向拓展

知识都遵循一定的模式, 同样的模式在其他知识中也会见到, 你能将一个公式与一个自然事件相联系吗?比如水的流动或是驾驶汽车?如果这个发现与一个看起来完全不相关的历史事件联系在一起, 你能发现什么类似之处吗?想想看地震的预测与八国联军事件有什么相似之处吗?纵向拓展有相当的难度, 也是最有创造性的学习方式。但是, 如果运用得当, 其速度要比深度拓展中探究知识的背景快得多。纵向拓展是本书中最重要的内容(希望读者仔细体会) 。比喻法和内在化是进行纵向拓展的最好方法。纵向拓展要求在结构间建立高速通道, 它有益于创造性思考, 赋予你神奇的力量, 帮助你理解知识。(纵向拓展就是前面特别强调的比喻法, 也是本书的核心, 整体性学习的核心。深度拓展和横向拓展虽然没有比喻法快捷、 简单, 却是实实在在的知识拓展。──译者注)

上述三种方法都很有效,介绍的技巧可以应用于每一种拓展方式, 关键问题是不断地练习和知道正在创造的联系是哪一种类型。你正在探究知识的基础背景吗?正在将知识与其他类似知识相联系吗?还是你正在一种知识与另一种完全不相关的知识之间建起一道道高速公路?

(4) 纠错

纠错可以看作在整体性知识网络中做修剪工作, 添加一些特殊的例子, 删除一些现实中不存在的联系, 这不是一个完美的过程, 修剪工作是必要的。纠错可以采取多种方法, 包括阅读那些与你观点相反的书籍, 以及把结论放入现实世界中看看等方法。

(5) 应用

应用是学习的最终目的, 能做到学以致用方能更好地适应现实世界。如果你学习税法并用到自己的企业管理中, 那肯定比纸上谈兵学得好。

整体性学习步骤的辩证关系

整体性学习的顺序并不是一成不变的线性顺序, 步骤之间可以往返, 也可以跳跃。理解之后可以再去获取, 拓展之后可以不经过纠错, 而直接跳到应用, 记住它是多线性的而不是单线性的。(总之一句话, 不要迷信五个步骤, 认为必须如此, 要相信现实世界, 而不要迷信理论, 现实世界中, 有几个学习者会一定要纠错好了, 再去应用?可笑的是就有人本末倒置, 将理论奉为圣经, 不可违背, 于是这世间就有了教条主义。

感觉日常工作非常琐碎,学不到什么东西,怎么办

如果把学习分成从书本中学,和从工作中学这两种的话,那毫无疑问,工作中的“知识密度”,比起书本的“知识密度”,肯定是要低很多的,因为书本里的知识,那都是人家从他们的工作中抽象总结出来的。这也是为什么大家普遍觉得日常工作“琐碎”。然而工作中每个点滴的琐事与平凡,都是可以抽象总结成为方法论的,更别说工作所在的领域自身的博大精深了。从日常工作中学习的秘诀,就是“行动中思考”。

工作本身就如此繁忙了,哪里能抽出足够多的时间去学习

其实工作和学习本身,是不应该被割裂的。工作本来就应该是学习的一部分,是学习中的实践和及时反馈的部分。学习如果脱离工作的实践,其实是非常低效的。因此每个同学应该对自己工作所在的这个技术和业务领域进行系统性的学习,并在工作中反复实践和验证。不同的领域之间其实是融汇贯通的,当你对一个领域精通并总结出方法论以后,很容易就能上手别的领域。因此花几年实践彻底研究透一个领域,对于刚工作几年的同学来说,是非常重要,甚至是必须的,也只有在一个领域打透之后才谈得上跨领域迁移,去拓展自己的知识面。更直接的说,对于一个领域还未完全掌握的同学,深度是最重要的,不用想广度的事情,等掌握了一个领域之后,再去拓展广度就变得很容易了。

克服挫折障碍

自我教育和挫折感常常相伴而行, 没有老师在旁边指导什么是对的和什么是错的, 或者有本指导书告诉你下一步该怎么办。自我教育比上课需要更多的耐心, 同时我也发现上课通常如缓慢步行的老者, 自我教育则可以快步如飞。归根结底, 克服自我教育过程中的挫折感是动机的问题。如果你对某门课程兴趣强

烈, 而这门课程又对你非常重要, 那么一般的学习上的挫折是无法阻挡你前进的。除了兴趣之外, 我还推荐下面一些克服挫折障碍, 让自学“飞起来”的方法。减少挫折障碍的小技巧。

(1) 写下任何障碍。假如我遇到编程中某个目前无法解决的问题, 我会尽量详细地记下问题, 详细地记下障碍让我们对问题的思考更容易。

(2) 使用网络。网络就像无所不知的智者和收藏丰富的图书馆。如果你想不明白某个问题, 或者正在苦苦地翻书寻找答案, 网络可以助你一臂之力。谷歌、 读秀、 中国知网(CNKI) 都是不错的选择。

(3) 找一本关于“怎么做”的工具书。有一种书不谈理论, 专门告诉你“怎么做”, 这对于你打算做什么事情来说是非常有价值的。

(4) 换一个角度试试。如果理解时碰到一个障碍, 试试从一个不同的角度来看问题。花点时间学习其他相关知识, 等你学会了很多以后, 再回过头看看原来的问题。

高效率秘籍1做好能量管理

我们的身体里都有燃烧细胞, 不管是物质上的还是精神上的, 你不可能驾着空油箱上路, 假如今天透支身体数小时, 下周你可能要为此偿还更多的时间, 如果你现在常常感到疲劳、 压力直至精疲力竭, 说明你的能量管理做得不好

1、 增加你的能量储备。

(1) 每天运动一点点,学习效果更明显。

(2)每晚有七八个小时的睡眠

(3)建议你吃粗纤维和粗加工的食物, 避免血糖水平忽高忽低。

(4)多喝水保持良好的代谢

(5)少吃多餐, 一天吃四五餐, 每次吃七分饱

(6)学习时减少和控制不必要的欲望

2、 将你的日程表由线性的改为循环式的。

线性的计划是平均安排时间执行工作, 而循环式作息计划则先集中小部分时间做大部分工作。 这种计划安排能让你做到有张有弛, 而不是死气沉沉, 像个机器人

高效率秘籍2 不要“学习”

我从不“学习”。我会阅读课本, 复习笔记, 也会做作业和各种练习, 但是我从来没有进行所谓的“学习”。如果没有明确自己究竟想达到什么目的, 就去不停地“学习”, 实在是对宝贵时间资源的浪费。所谓“学习”得多, 未必收获得就好。

不用“学习”(学习就好比整个食物经过咀嚼、 消化、 吸收的过程, 它不是表面看起来“吃”的动作。人们不可能永远吃个不停, 所以学习也不是坐在书桌前越长越好, 学习需要挑选要吃的食物(获取信息) 、 咀嚼(明白阶段) 、 消化(理解阶段) 、 吸收(应用阶段) 。

学习的定义:学习不是指坐在书桌前12个小时, 也不是指每天坚持看书。这些是学习的表象, 不是学习的实质。狭义的学习只是发生在学习者脑子里面的变化, 所以学习可以表现为各种各样的具体活动, 而枯坐在书桌前的苦读可能是最不像样的学习活动了。学习的过程也意味着一系列的具体活动, 比如阅读、 做作业、 记笔记、 比喻、 写文章、 写日记、 做练习、 搞科研等都是学习, 最为关键的是任何一种学习都要坚持深入下去, 要寻根问底, 打破砂锅问到底, 要不断地问自己为什么。做科研是这样, 读书也是这样。尽信书不如无书也是这个道理, 看书只是学习的一种形式, 就好像做外科手术一样, 单纯地看书看1000遍也不如自己动手, 你以为动手的过程就不是学习了吗

高效率秘籍3 绝不拖延

高效率秘籍4 批处理

(1) 工作量。批处理最适用于将那些需要时间不长的零散工作放在一起做。你不能将整个课程都安排在考试前一天批量看完。超过3个小时的工作用批处理, 效果就不好了。

(2) 提髙注意力阈值。注意力阈值就是指集中完成某项工作的最长时间, 超过这个时间, 注意力就急剧下降。通过不断接受越来越多的批处理, 你可以逐渐提高你的注意力阈值。阈值越高, 表示能一次完成的工作量也越大。

高效率秘籍5 有组织

假如你做事杂乱无序, 下面是一些让你变得有组织的关键步骤。

(1) 所有的物品都放在固定的位置。作业、 课外作业以及约会日期都记录在固定的地方。没有固定地方的结果就是混乱。专门找一个地方放东西, 这样会更容易放得有序。

(2) 随身携带一个记事本。每天随时记录, 日积月累, 必有所获。

(3) 坚持日历和做事清单。应用做事清单记录任务和目标, 使用日历来记录要做的事和截止日期。虽然有组织不是万能灵药, 但是它的确很有帮助, 组织技能可以大大提高学习效率,而且能缓解压力。


目录
相关文章
|
4月前
|
存储 Java 关系型数据库
探索后端开发的奥秘:从新手到专家的旅程
【8月更文挑战第23天】在数字化时代的浪潮中,后端开发作为构建强大软件系统的基石,其重要性不言而喻。本文将深入浅出地探讨后端开发的各个方面,包括基础概念、关键技术、行业趋势以及职业发展等,旨在为初学者提供一个全面的入门指南,同时也为有经验的开发者提供一些深入的思考和启示。让我们一起踏上这段探索后端开发奥秘的旅程吧!
|
2月前
|
前端开发 算法 JavaScript
技术之道:从代码到智慧的旅程
【10月更文挑战第5天】 在技术的海洋中,我们常常被复杂的代码和不断变化的工具所困扰。然而,真正重要的不仅仅是掌握这些技术,而是理解它们背后的本质和内涵。本文将通过我的个人经验与感悟,探讨如何从一名普通程序员成长为一个具有深度思考能力的技术人员,希望启发大家在技术道路上找到自己的方向。
32 1
|
7月前
|
算法 程序员 测试技术
【专栏】编码之道在于平衡简洁与高效,不断学习以提升技能,创造优秀软件
【4月更文挑战第27天】本文探讨软件工程中的编码最佳实践,强调简洁代码的诗歌之美,遵循DRY原则,使用清晰命名及合理模块划分。追求高效性涉及算法选择、资源优化及并发编程。在快速变化的技术环境,程序员需持续学习新语言、框架和趋势,以保持竞争力。编码之道在于平衡简洁与高效,不断学习以提升技能,创造优秀软件。
74 4
|
4月前
|
人工智能 JavaScript Java
深入浅出后端开发:从新手到专家的旅程
在数字时代的浪潮中,后端开发如同宇宙中的暗物质,虽不为人所见,却支撑着整个互联网的运行。本文将带你探索后端开发的奥秘,从基础概念到技术栈选择,再到实战应用,我们将一起构建知识的桥梁,连接起初学者与资深开发者之间的鸿沟。你将了解到,如何通过不断学习和实践,像乔布斯所预见的那样,让生命中的每一个点在未来某个时刻连接起来,最终成为你希望在世界上看到的改变。
|
6月前
|
存储 算法 大数据
Python编程之道:提升效率的秘籍
本文探讨了提升Python编程效率的策略,包括选用合适的数据结构(如列表、元组、集合和字典),利用迭代器和生成器处理大数据,使用内置函数和库(如`map`、`numpy`、`pandas`),优化算法和逻辑,以及善用并发和异步编程(如`asyncio`)。定期进行代码审查和重构也是保持代码高效的关键。通过这些方法,可使Python代码更为流畅,效率倍增。【6月更文挑战第4天】
64 1
|
7月前
|
前端开发 JavaScript 开发者
前端开发:探索技术之美与实践之道
前端开发:探索技术之美与实践之道
|
算法 安全 程序员
分享刷题的个人经验!!!(特别高效)
分享刷题的个人经验!!!(特别高效)
95 0
|
编译器 C语言
作为IT小白 — 如何系统性学习一门技术
对如何系统性学习一门IT技术进行介绍。 对跨专业,新手入坑计算机的学习起到一定的帮助 对如何进行安装编译器,如何写博客,怎么上传gitee进行介绍 小白应该从哪里开始学习 博主进行学习时观看的是B站鹏哥C语言 博客的编写, 编写博客的重要性 什么是gitee, 怎么上传gitee
101 0
|
消息中间件 存储 算法
架构师如何高效的学习技术?
架构师如何高效的学习技术?
|
存储 机器学习/深度学习 人工智能
程序员如何高效学好数据结构与算法?
  主题:   1. 为什么要学数据结构   2. 数据结构学习秘籍   3. 算法为什么那么难   4. 算法学习秘籍   5. 如何打开数据结构与算法这两扇门   随着科学技术的发展,人工智能已渗透到各个行业,算法工程师非常火 爆,急缺大量人才,年薪也越来越高。刚毕业30-40万很常见。很多人想入手 学习算法,那么多算法,究竟该如何下手呢?   很多人看到招聘要求,算法工程师有很多具体分支:
213 0