其实之前自己有一套自认为不错的学习方法,这在我之前的【年终总结系列 2021】不变的心态应对变化的环境年终总结中也有提到,大概是这样的:

看到Gap制定学习目标–》合理评估执行方案和周期–》达成目标并获取成就感–》复盘并打磨更科学合理的反馈环,通过这个正反馈环,可以源源不断的看到Gap,汲取知识,填平Gap。通过Step By Step的模式感受到自己真实的变化,越来越自信的应对问题和挑战。这套正循环可以让我在新的环境面对新的问题时不再惧怕,而是用体系化的方式解决,直到新问题处理后后再寻求更高的新目标,新目标达成后有了成就感就会更愿意去学习知识

当然这套是自己摸索出来的一个模糊的实现方式,但是其实并不是一套标准的方法论,直到最近在学习华仔写的一门课程:《大厂晋升指南》才发现,原来有成体系的标准学习的方法论,我自己的这套倒是可以套用其中一些,但他的这套理论更全更专业,所以做了一些学习笔记来记录下。首先围绕四个我们常见的问题展开:

  • 时间从哪里来?如果没有足够的时间投入,再好的理论也只是纸上谈兵。WHEN
  • 学什么?找到正确的学习方向,明确了学习的目标,才能做到有的放矢。WHAT
  • 怎么学?不同的学习目的应该有不同的学习方法,保证学习的投入产出比。HOW
  • 怎么保证学习效果?如何解决“学了用不上,学了就忘”两个常见影响学习效果的问题。HOW

整体围绕如何解决这四个问题,重点内容我罗列到了如下的思维导图中

当然有一些我认为比较重要的内容这里再详细的解释一下,

找时间

找时间的问题很好解决,一天至少2h,早1h,晚1h。

学什么

其实接下来就是要解决学什么,当前我的博客知识技能树大概是如下这些,其实也大概对标了COMD模型,对于下一级别的要求主要是补足架构设计上的欠缺

目前集中精力在【设计模式】上也是这个目的,持续到年底,要把设计模式学习完。

怎么学

分为链式学习法,比较学习法和环式学习法

链式学习法

三个步骤:分层,确定学到哪一层

1 领域及细节分层

首先是分层,第一种是自顶向下、层层关联,打通一项技术的领域分层,以 Netty 网络编程为例,相关领域一共可以分为 6 层,要么上层依赖下层,比如 Netty 依赖 Java 网络编程,Java 网络编程在 Linux 上又依赖 Linux 提供的网络编程接口;要么下层是上层的应用和实现,比如 TCP/IP 是原理,而 Linux 网络调优和工具是 TCP/IP 的具体应用

第二种是由表及里、层层深入,打通一项技术的细节分层,同样以 Netty 网络编程为例,技术细节可以分为 4 层,它的细节分层图如下所示

2 确定学到哪一层

学得太浅,达不到提升深度的目的;学得太深,又会耗费太多的时间和精力。以 Netty 网络编程为例,领域分层图的 6 层不用都学,大部分人学个 3~5 层就够了;不过细节分层图的 4 层,建议每一层都学

3 明确每一层怎么学

在领域分层图中,越往上越偏应用,实际工作中用得越多,越往下越偏原理(包括相关的工具和配置),实际工作中用得越少。所以总的原则是,在上层投入更多时间,更关注细节和熟练使用,在下层投入相对少的时间,更加关注原理和简单应用都学。实际使用时要看使用的深度

细节分层图中,需要详细地学习每一层。要注意的是,对于实现源码这一层,不需要去掌握每一行源码,只要掌握关键源码就行了,也就是和设计原理以及设计方案相关的源码

比较学习法

所谓比较学习法,就是横向比较同一个领域中类似的技术,梳理它们异同,分析它们各自的优缺点和适用场景。比较学习法的具体操作步骤如下:

  1. 先用链式学习法掌握某个领域的一项技术,将这个领域的关键技术点整理成表格。
  2. 基于整理好的技术点,学习这个领域的另一项技术,将它们在技术点上的差异整理成思维导图。
  3. 找出差异较大的技术点,将背后的原理和对应用场景的影响整理成表格。

以缓存领域的 Memcache 和 Redis 为例

  • 1 先用链式学习法掌握 Memcache 技术,整理出缓存领域的 6 个关键技术点
  • 2 基于这 6 点快速掌握 Redis 技术,整理出 Memcache 和 Redis 在这些点上的差异。
  • 3 找出差异较大的技术点,包括并发方案、数据结构、高可用和持久化,整理出它们背后的原理和对应用场景的影响

我认为比较学习法最大的优势就是:同一个领域的技术在功能上大都是类似的,区别往往在于实现方案和细节。所以当掌握了一项技术之后,再去同一个领域的另一项技术,就不需要从 0 开始了,因为基础的部分已经学会了,只要重点关注它们的差异点就能够快速掌握,而且这样还能对两个技术的差异和应用场景有深刻的认知

环式学习法

所谓环式学习法,就是构建一个完整的闭环过程,将多个领域的“鱼”一网打尽。技术上常见的闭环是功能环,代表某个功能的处理过程以一个最简单的“用户登录”为例,如果它的实现方式是前端在手机 App 上用做登录页面,后端用了微服务架构来存储,

  • 1 那么就可以构建这样一个功能环:
  • 2 构建完成之后就能依据节点涉及的技术点逐个攻克了

由环式学习法引起的思考:懂业务很重要。很多技术人员有一个误区,认为业务设计是产品经理的事情,产品经理设计好了,技术人员再把自己负责那部分做好就行了。这种想法会让你在工作中非常被动,而且可能吃大亏。常见的吃亏场景包括:

  • 讨论需求的时候,因为不懂业务,就算产品的业务需求不合理、实现代价很高,你也发现不了。结果到了设计甚至是编码阶段,你才发现自己做得累死累活,效果还不好。
  • 处理线上故障的时候,因为不熟悉业务,只能被动接受别人的分析和推断,很容易背锅。
  • 因为不熟悉业务,无法承担整体需求分析和方案设计这种任务,导致个人能力得不到锻炼,失去很多晋升机会。

熟悉业务很重要,要多听需求评审,看PRD,及时和自己相关度不大也要关注,这样才能建立全局视野

高效学

play学习法说白了就是通过自己搭建虚拟环境学习,这种方法我已经用过很多次了,例如学习中间件的时候,搭建虚拟机集群,并在此之上构建Redis集群、ES集群、Kafka集群等,学习Java Web的各类知识的时候也是通过做一些小的Demo,实践出真知,印象也最为深刻。

teach教学法我也一直使用,例如现在秉持着学习必有博客输出,来实现通过write的方式让记忆更深刻,有一点我深表赞同:

当我们看别人写的内容时,我们采取的方式其实是“read”,能吸收的可能只有 30~50%,而自己写出来的话,即使内容是类似的,也能够让自己对技术的掌握程度达到 60~70%

就拿我当前这篇Blog为例,内容相似度和极客时间原文很高,但是自己画了思维导图,弱化了自己理解很深并且已经在做的内容,强化自己做的不好的内容,那么这样一篇学习笔记就是我专属定制的学习笔记了,掌握程度当然就大幅提升了。

当然写作比较占时间,学习了一遍再写一遍当然会浪费时间,所以核心的指导原则就是,看技术和自己工作的相关度,对于强相关的核心技术,自己写文章来学;而对于弱相关的非核心技术,可以通过阅读资料来学习,我目前的学习基本强相关的学习,所以才会篇篇都落Blog.

总结一下

其实自己一直有一种朦胧的学习方法论,但是并不成体系,例如我也会拆目标,大体拆的方式也类似,也会有写博客的teach学习法的习惯,边写边做的play学习法的习惯。但这些都是零散的,不成体系的,而学习完后就能有成体系的学习方法论,收获最大的就是HOW【怎么学】,之前的学习笔记专栏较为盲目,就是按照概述-应用-原理-实践这样的思路去学习,虽然大致有节奏但不全面。现在有了一个解决连环call的链式学习法,解决技术选型call的比较学习法,以及培养全局视野的环式学习法 这样一套组合拳,可以更有的放矢的学习新技术了。还有一个重要收获就是一定要懂业务,以前虽然较为主动,但也并未把业务看的那么重要,实际上要想不一直仅仅当码农,懂业务是第一步。

【工作学习方法论 一】成体系的学习方法论相关推荐

  1. 限量300份 | 业内第一本「成体系」的活动执行手册免费发放 ——百格活动

    (业内第一本执行手册限量发放) ◆<活动执行-思维篇>:是执行者晋升管理层的必备指南,主要讲解执行者在工作中涉及到的底层思维及方法论:(66页) ◆<活动执行-SOP篇>:是活 ...

  2. VS.NET 学习方法论 ——我的VS.NET学习之旅

    VS.NET 学习方法论 --我的VS.NET学习之旅 屠恩海(SunHai) 开发工具:Microsoft Visual Studio .NET 2003 操作系统:Windows XP 题记:即使 ...

  3. JVM整体知识体系深度学习__JVM与Java体系结构【持续更新】

    JVM整体知识体系深度学习 一.JVM与Java体系结构. 前言 是否遇到过一下问题. 运行的线上系统突然卡死,系统无法访问,甚至直接OOM[OutOfMemory 内存溢出] JVM GC问题 新项 ...

  4. 听哥一句劝,按这套嵌入式的课程内容和课程体系去学习

    听哥一句劝,按这套嵌入式的课程内容和课程体系去学习 一.嵌入式的难点 嵌入式开发比互联网软开(比如Java后端)还是要难一些的,比如Java开发,基本也都是用户态的东西,但嵌入式很多东西都深入到了内核 ...

  5. 数据分析IJCAI 2020:录用率12.6%,华人占据半壁江山,表征学习、GNN成热点 | AI日报...

    智源学者何晓冬参与论文获IEEE信号处理协会最佳论文奖,Yoshua Bengio是合作者之一 近日,智源学者.京东集团技术副总裁何晓冬参与论文<Using Recurrent Neural N ...

  6. 嵌入式系统的知识体系、学习误区及学习建议

    嵌入式系统的知识体系.学习误区及学习建议 1.嵌入式系统的知识体系     嵌入式系统的应用范围可以粗略分为两大类:电子系统的智能化(工业控制.现代农业.家用电器.汽车电子.测控系统.数据采集等),计 ...

  7. VS.NET 学习方法论——我的VS.NET学习之旅

    开发工具:Microsoft Visual Studio .NET 2003 操作系统:Windows XP 作者:屠恩海   来源:http://sunhai.tianyablog.com      ...

  8. ♂【超全超详细】2W字零基础小白黑客学习路线,知识体系(附学习路线图)♂

    前言: 这是外网曾经一篇很火的关于如何成为一个黑客的文章,虽然里面提到的一些技术可能有些过时,但就学习方法和思想上,仍然值得我分享给大家. 关注大师的言行, 跟随大师的举动, 和大师一并修行, 领会大 ...

  9. 【超全超详细】2W字零基础黑客学习路线,知识体系(附学习路线图)

    前言: 这是外网曾经一篇很火的关于如何成为一个黑客的文章,虽然里面提到的一些技术可能有些过时,但就学习方法和思想上,仍然值得我分享给大家. 关注大师的言行, 跟随大师的举动, 和大师一并修行, 领会大 ...

最新文章

  1. 东莞网络推广浅析如何通过简化标题来提升核心关键词排名能力呢?
  2. php调用root权限,PHP执行root权限程序
  3. 12.oauth密码模式identity server4实现
  4. 前端学习(1884)vue之电商管理系统电商系统之实现侧边栏的折叠和展开
  5. js中div显示和隐藏钮为什么页面总是跳一下到最上面
  6. 针对Parse error: syntax error, unexpected T_PUBLIC in D:报错提醒
  7. ajax 传递arraybuffer,jQuery $ .ajax或$ .load是否允许responseType arrayBuffer?
  8. 成员变量与局部变量 java 1613807617
  9. vue单表table
  10. redission分布式锁测试代码
  11. Linux中阶知识总结
  12. asp.net 从客户端中检测到有潜在危险的 Request.Form 值
  13. HTML day02(html列表与菜单的制作)
  14. 第五章 高级发布-订阅模式
  15. Parsing error: No Babel config file detected for ....
  16. JavaWeb - 小米商城网 - 项目启动
  17. 《正面管教》思维导图图解,找对教育孩子好方法
  18. Linux socket下read函数详解
  19. C#操作AD及Exchange Server总结(一)
  20. 中国软件欧美出口工程名单:金蝶等入选第一梯队

热门文章

  1. linux达梦数据库6001,达梦数据库 防火墙设置
  2. 单目车辆3Dbox检测算法对比
  3. html中$ 的作用,jquery中的$()是什么?
  4. 用matlab实现循环卷积,利用matlab实现循环卷积.doc
  5. 精灵图和窗口右侧广告案例
  6. Java入门及环境搭建idea安装和简单使用
  7. phpstorm奇淫技巧
  8. 在线思维导图软件怎么使用模板?
  9. O2O分享6:O2O的社会化营销(下)
  10. 利用 shopsn 搭建 Web电子商城+IOS+安卓+API 客户端 ,ShopSN介绍