学习者的窘境:程序员如何有效学习才能有成就感

简介: 学习者的窘境:程序员如何有效学习才能有成就感

我是一个程序员,俗话说活到老学到老,程序员更是一个需要持续学习的职业。那么程序员该如何有效学习?这是一个需要不断思考的过程。今天分享一个我思考的模型,主要讲述如何选择学习的知识及有效学习。


image.png


 图1是一个学习的通用流程,专家或者熟练从业者从具体的行为或者经历进行总结提炼,形成一些抽象的可以复用的框架或者套路,然后学习者通过文字等媒介进行学习,有意识的或者无意识的转化成学习者自己的抽象层知识,也就是我们通常而言的学习的内化过程,再通过这些知识去解决学习者面对的具体问题。


image.png


除了上面的模式,还有一种较为常见的是我们看到或听到一些具体行为,有意识无意识的从中总结提炼出知识,然后当我们遇到类似的情景的情况时,调用这些知识进行解决。如图2


image.png


比如有时候公司出了线上bug邮件通报里面会提到一些解决过程,我就会每次比较关注一下,然后总结下遇到线上问题的排查思路,以弥补缺乏这方面实战经验的薄弱点。


根据以上两个模型,可以很好的帮助我们理解一些场合下为什么会学习效率底下的问题。


在模式一中,我们需要学习他人的知识,然后融合进入自身,再去解决问题。这里有三个要求:


R1. 需要能够融合进去自身,即你可以理解接受


R2. 需要这个知识是能够解决你的问题的


R3. 这部分抽象知识要有价值。


image.png



R1---如果你学习的东西对于你而言太过于深奥,比如你对
bionioaio丝毫不懂,上手就去学习netty,那么你要么没法学会,要么事半功倍,这就是学习顺序的重要性。从图上看就是抽象层的两个圈特别远。


R2---工作和学生时代学习的目的有很大不同,学生时代是要学习课本,而工作是需要解决问题。所以往往我们是先有了具体层的任务才需要去找寻抽象层的知识,所以学习应该搜索式,而不应该是推送式。很多你收到的推送的极其有价值的文章并不一定适合你当下。我是后端程序员,有人推荐给我一个css的经典文章,很大程度上不看是我最好的选择。顺带一提,根据你的工作需要,去找对应需要的知识,做中学,学中做效果会更好。从图3看就是你要学习的抽象知识,和你具体的行为之间是断路的。


image.png


R3---技术里常说深度这个词,是否有价值就是对你而言够不够深,当然是否深是相对于你而言的。比如我订阅过一个技术专栏,可以说是食之无味,弃之可惜。时不时也会有一些有价值的知识,但是大部分时候会感觉飘飘然不知所云,这种情况下,更好地选择是选择知识密度更高的知识。


image.png


如果你是从模式二一些具体行为中,有意识无意识的提炼出了知识然后去解决问题。需要满足两点,第一这个具体行为真的有足够的价值。第二你有这个能力及时间进行提取。比如我在得到听过一个教人高效学习的精品课,有几节老师讲了很多他曾经如何高效学习的例子,但是这对我有用吗?没有。因为都是说他通过刻意练习的方式学习英语的行为故事,刻意练习我曾经听过多次,这些具体行为也很难总结出什么模式来,除非完全相同的场合,否则难以复用。这也就是很多知识付费被批评的原因之一,经常是大段充斥着励志的故事,但是可以对你产生引导的思考却很少。


image.png


需要注意的是有没有价值是因人而异的,比如具体行为中蕴含的信息你从未了解过,那么会解决你不知道的问题,比如听朋友说他在leetcode刷题,然后我也去做了很多道,比如知道了tinySpring,解决了我对spring源码入门的畏惧等等。要明白一些情况下知道就是一种价值。另一种情况是你所要面对的场景和他讲述的场景十分接近,那么也是有意义的。

 

通过上面两个模式就是希望能够让大家明白,学习的内容一定要有选择,要建立自己的信息筛子。


image.png


我们抽象而成的知识有很多其实是无意识的总结而成的,学会有意识的总结会产生数量级上的区别。你总结的知识会在今后解决其他问题的时候产生有价值的帮助,会在你学习其他知识的时候帮助你理解。比如之前做一个系统涉及了很多设计方面的问题,如幂等,业务建模,一致性等。在学习reids主从同步时,就会把redis用到的很多理解和系统设计结合思考,从redis上学到的新的理解,也会在我之后系统设计时候产生指引。

说到这里不知道是否会让人有一种学习仿佛很容易的感觉,但是为什么实际学习和解决问题如此困难呢。真实场景中的问题总是复杂的,需要用到很多的知识,而你需要经历这个知识是什么,怎么用这个知识,什么时候用这个知识,为什么要用这个知识的各个阶段。比如先知道了mq是什么,然后知道了mq如何配置,如何编写代码,然后还需要去考虑mq在什么场景下使用合适,最后还要考虑如果是需要快速开发的需求能不能不用的问题,这也是你对知识认知提高的过程。


image.png


在终身学习的基础上,筛选学习的内容,不断总结,在学习中建立自己的知识体系,新手期学习经典教科书加多实践,熟练期看书加去努力解决更多复杂问题,高手期去遍历知识领域。这样学习效率也会越来越好,在面对问题时才能做到不再杂乱无章的思考,而是很清楚需要用到哪些知识,对问题的解决能力也会越来越强。






相关文章
|
5月前
|
开发者
从代码中汲取智慧——我的编程之旅与技术感悟
【9月更文挑战第24天】在数字世界的迷宫中,代码是指引我们前行的罗盘。它不仅仅是冷冰冰的指令集合,更是一扇窗,透过它,我们可以看到逻辑的严谨、问题的解决以及创新的火花。本文将分享我在编程旅途中的一些深刻体会,从最初的困惑与挫败,到逐渐掌握编程语言的乐趣,再到通过代码解决问题的成就感。我将探讨如何通过编程提升思维能力,以及编程对个人成长和职业发展的重要性。无论你是编程新手还是资深开发者,这段旅程都将启发你去思考和探索技术的深层次意义。
42 1
|
6月前
|
存储 Java Android开发
探索安卓应用开发:从初学者到专家的旅程
【8月更文挑战第24天】在这篇文章中,我们将一起踏上一段激动人心的旅程,从零基础开始,逐步深入到安卓应用开发的世界。通过简单易懂的语言和实际的代码示例,我们将解锁创建精美安卓应用的秘密。无论你是编程新手还是希望提升现有技能的开发者,这篇文章都将为你提供宝贵的知识和灵感。让我们一起构建你的第一个安卓应用吧!
|
3月前
从代码中感悟人生:一段编程旅程的启示
在编码的世界里,每一行代码都像是生命中的一次选择,每一个函数都承载着特定的使命。本文以编程的视角,探讨技术成长与人生哲理之间的奇妙联系。从最初的迷茫到逐渐找到方向,再到不断学习和提升,这段旅程充满了挑战与收获。正如甘地所言:“你必须成为你希望在世界上看到的改变。”通过编程,我们不仅塑造了软件,也塑造了自己。
|
4月前
|
算法 开发者
探索代码之美:一段编程旅程的反思与启示
【10月更文挑战第3天】在数字世界的编织中,代码不仅是命令的集合,更是思考的结晶。从大学毕业时的迷茫到勇敢尝试新领域,再到不断学习和提升,我找到了人生的方向。本文将分享我的技术感悟,探讨如何通过编程实践深化理解,提高问题解决能力,并最终实现个人成长。
|
5月前
|
机器学习/深度学习 人工智能 算法
编程之路上的启示与反思
【9月更文挑战第16天】在编程的海洋中,我们每个人都是一艘航行的船。有时顺风顺水,有时逆流而上。本文将分享一段个人的技术成长之旅,从初心到迷茫,再到自我发现,最终找到属于自己的航道。通过这段旅程的反思,我们将探讨如何在技术的洪流中保持初心,不断进步,并对未来做出明智的选择。
|
5月前
|
前端开发 安全 JavaScript
从迷茫到精通:我的编程之旅与技术感悟
【9月更文挑战第26天】在编程的世界里,每一步都充满了挑战和机遇。本文是一段个人的技术旅程,从最初的迷茫不安到逐渐找到自己的方向,再到深入理解编程的本质。通过分享个人的经验和感悟,旨在启发读者思考如何在技术的海洋中航行,找到属于自己的灯塔。
|
5月前
|
安全 测试技术 UED
探索软件测试的奥秘:从新手到专家的旅程
在数字化时代,软件测试不仅是确保产品质量的关键步骤,也是技术世界中不断进化的艺术。本文将通过一个易于理解的视角,带领读者了解软件测试的重要性,探索其基本概念、方法和最佳实践。无论你是刚踏入这一领域的新手,还是希望提升自己技能的资深人士,这篇文章都将为你提供宝贵的指导和启发。
|
9月前
|
算法 Java 程序员
程序员职业发展之旅:从代码入门到身体管理的完美进化
程序员职业发展之旅:从代码入门到身体管理的完美进化
56 1
|
9月前
|
存储 搜索推荐 程序员
SnippetsLab:程序员的秘密武器
SnippetsLab:程序员的秘密武器
267 0
|
程序员
程序员成长第四篇:程序员的职业天花板
程序员成长第四篇:程序员的职业天花板
159 0