几条有助于提高开发者学习效率的小建议

时间就像海绵中的水,挤一挤总还是有的!

思考,输出,沉淀。用通俗的语言陈述技术,让自己和他人都有所收获。

作者:毅航😜


前言

作为程序员不知道你是否有过这样的感受,每天光是应对产品经理天马行空般的需求就已经筋疲力尽了,每天下班后只想静静地躺着,但面对越来越严峻的大环境以及越来越卷的后浪,你内心仿佛又有个声音在不断提醒你要坚持学习。但当你准备学习时又发现自己似乎也没什么头绪,索性就随便点开一篇博客,或是随便找本书随便看看。等过段时间再回头一看,看似当下学了很多,但过几天真正用到时却发现前几天看的东西好像又忘得差不多了,周而复始,不断在奋进摆烂间周旋。

这些问题其实笔者也曾经历过,为了克服这些问题,我也曾阅读过很多有关学习的博客及书籍,同时也做了很多尝试,最终也算找到一条适合自身的学习方案。所以笔者今天想谈一谈笔者是如何来学习新技术的,希望对你的学习、工作有所启发。

树立正确战略方向,避免南辕北辙

做一件事的关键在于树立正确的目标

众所周知,程序员总是需要面对各种层出不穷的新框架,而当接触一款全新框架时,你通常会如何做呢?当接触一款全新的框架时,通常会先花一点时间来考虑如下两个问题:

  1. 通过学习我期待能达到一个水平
  2. 如何衡量我对于这个框架的掌握程度?

接下来,不妨听听我为什么会在学习伊始先考虑这两个问题。早些的时候,当我听闻项目中要用到新框架时,总是会闷头去网上搜寻与其相关的博客、书籍。然后,拼命利用各种空余时间来读这些内容,给别人的感觉就是我很,其实我内心之道,只不过是我菜罢了!

但就是这样似乎也没比别人厉害到哪去,通过阅读可能我确实会比别人多掌握一些奇技淫巧,但实际工作场景中基本不会用到,等过段时间某个场景确实需要了,我也忘得差不多了。最后,也只能借助搜索引擎来解决。费时费力,最终却收效甚微。

后来,我就开始反思自己的行为是否正确。经过反思,我逐渐意识到工作中像我这样接到任务就闷头干的傻小子不在少数。事实上,闷头干这个行为只是你完成目标的一种手段,而不是你的战略。 此处的战略你可以理解为是你的目标,也即你的方向南辕北辙的故事想必大家都曾听过,如果一个人方向选取的错了,再怎么努力也是徒劳。

笔者所思考的那两个问题恰恰就是在考虑学习的目标。即通过学习我们对于这个知识点应该掌握到什么程度,而这个程度又该通过什么指标来量化。 当有了量化的指标后,便能准确衡量我们对于一个新技术的掌握情况。

事实上,当你明确自己学习的目标后,你对于所要做的事也才能有着更加清晰的认识,进而你所采取的行动也才能更加精准,这样你也不至于类似出现南辕北辙

就像学习一款新框架最初你的目标就应该是了解框架的基本使用方式,在这个目标指引下你要做的就是找寻与其相关的实用性文档,同时为了实现这一目标你也就不至于翻看解析其源码的专业性文档!

拆分目标,寻找可行的最小单元

对目标进行拆分,分清任务轻重缓急

当明确我们的目标后,我们下一步要做就是对目标进行拆分。这一过程中,我们不断地把大目标拆分为一个个切实可行的最小单元。接下来,便以笔者当初制定学习Spring源码的过程为例,来看看笔者是如何一步步地来将一个大目标拆分具体可行的可执行单元

某段时间内,笔者曾制定下一个深耕Spring源码的目标,期待通过学习能实现从会用熟悉背后原理跃迁,而衡量这一目标是否达到的标准就是能否在不翻越任何博客的情况下自己总结出Spring的相关知识点。基于这一目标,笔者对目标其进行了拆分。

首先,对目标模块进行拆分。要知道,在没有人手把手带领学习的情况下,从零开始学习Spring源码是非常困难的一件事。所以,笔者最开始最小行动单元是从Spring最基础的实用方式开始入手,也即从分析Spring最开始使用的ClassPathXmlApplicationContext开始分析。这一点从笔者之前写的从简单的配置文件开始,重新审视Spring的上下文环境就能看出端倪。这也是笔者这些年逐渐形成的习惯,即在分析时总是会从最基础的入手,然后不断深入。

当对目标进行拆分后,下一步就是确定每个模块所需要掌握的知识。还是以读Spring源码的来分析,笔者将其拆分为容器、资源加载、扩展点、DI、AOP等模块,对于其中的容器来说具体就是要分析Spring中的容器结构,也即对BeanFactory家族的分析,因为这部分就是Spring容器的核心内容。当然你还可以进行细分,直至将一个抽象的事物不断细化,直到拆分为以一个切实可行的步骤在停止。

当目标经历过前面的拆分,下一步就是行动了!对于怎么行动这就取决于每个人的自驱力了,这个并没有一个统一的标准,笔者在这里想再谈一谈是如何挤出时间来学习的。

合理规划时间,日拱一卒

时间就像海绵里的水, 只要愿意挤,总还是有的。

当明确了学习的目标后,下一步就是行动。

在如今这个快节奏的时间似乎成了最宝贵的资源,每天应付完工作,回到家稍微休息一下,吃个饭,洗漱完,似乎就又该上床睡觉了。而且即使有空闲时间,打游戏肯定比学习更快乐,难道要牺牲为数不多的娱乐时间来学习吗?答案肯定是否定,不妨来看看笔者每天是如何来挤时间学习的。

笔者通常七点起床,洗漱完,吃个早餐差不多七点半,然后出门去等公交。从家到公交这段过程中我通常会打开一个技术类相关的视频,然后边听边走。到车站差不多需要十五分钟左右,在站台等车差不多又是十几分钟。这就差不多二十多分钟的时间了,如果视频开倍速的话,这段时间正好可以看完一段三十多分钟左右的视频。

坐公交去公司的话差不多又二十多分钟,在公交车上的这段时间,我通常会打开备忘录对刚才视频的内容进行总结和提炼,差不多八点二十就可到公司,然后开启一天的工作。笔者的公司一般六点多就可以下班了,下班的路上将继续重复早上的行为,这样每天差不多通过通勤我可以挤出一个多小时的学习时间。

到家后通常我会再花十几分钟时间对一天学习的内容进行一个回顾和总结,之后做饭、洗碗,然后打游戏娱乐,大概十点多便洗漱上床多睡觉,这就是我平凡的一天。周末的时候通常会再花一个多小时,将本周学习的内容整理成相关的文档,以备后续查看和回顾。

不难发现,我一天其实都在挤时间来学习。经过笔者长时间的时间,笔者发现这种通过挤时间的方式可以充分可利用通勤的闲暇时间,也并没有因为学习而放弃我所有的休闲娱乐,更没有在累成狗的时候强行"打鸡血"逼着自己去学,相反我很适应现在这样的生活方式,因为一切都在自己的可控范围内。

当然这只是我个人的经历,可能不具有一般性,因为每个公司的作息和个人通勤时间肯定有着很大的差异。这里笔者分享自己的经历更多的是想说: 在当下这个快节奏的时代内,当从学校离开的那一刻起,我们就再也不会有像学生时代那样大段时间来学习了,所以只能从日常中来挤出时间学习。

总结

最后,在分享笔者一条笔者多年以来笔者一直坚持贯彻的一条学习法则,即学习一项新技术时,首先,以视频为入口,然后,以业界公认的名书继续深入理解;最后,以社交圈的同行或网上社区为输出交流。

相关推荐
旧识君8 分钟前
移动端1px终极解决方案:Sass混合宏工程化实践
开发语言·前端·javascript·前端框架·less·sass·scss
hycccccch13 分钟前
Springcache+xxljob实现定时刷新缓存
java·后端·spring·缓存
吃没吃39 分钟前
vue2.6-源码学习-Vue 核心入口文件分析
前端
Carlos_sam39 分钟前
Openlayers:海量图形渲染之图片渲染
前端·javascript
XH27641 分钟前
Android Retrofit用法详解
前端
鸭梨大大大42 分钟前
Spring Web MVC入门
前端·spring·mvc
你的人类朋友43 分钟前
MQTT协议是用来做什么的?此协议常用的概念有哪些?
javascript·后端·node.js
吃没吃1 小时前
vue2.6-源码学习-Vue 初始化流程分析 (src/core/instance/init.js)
前端
XH2761 小时前
Android Room用法详解
前端
于过1 小时前
Spring注解编程模型
java·后端