通常,我们得知了一种新技术新领域,所做出的第一反应就是去了解它,学习它的使用方法,最后再借助相关文档和Google来边实践边熟悉这项技术。

比如今天看到了一篇文章讲了Struts2中的OGNL表达式在项目中如何强大方便,如何让我在页面和Action中更加方便地传递你想要的东西。看到框架描述中的种种方便之处,我就会到CSDN学院、培训机构论坛、贴吧、甚至某宝找教程找学习路线,接下来的一段时间就是疯狂看视频、写Demo,等到把所有基础教程视频、书看完,就迫不及待地去开启一个小型项目,大量运用所学知识,这时候知识就得到了巩固,深深地印刻在我的知识库里,工作的时候要取出来就易如反掌。以上就是我以前学习一门新技术的主要流程。

但是这样真的是把技术学到家了吗?我们或许只是把知识简单的搬运到了大脑中。让我们来看一个简单的生活中的例子。

在玩具店中,摆放了一只“会说话的小黄鸭”。这只会念儿歌、会讲故事的鸭子在不同人的眼中可以有不同的解读:

  1. 在孩子眼中,他关心的是“小黄鸭说了什么”,于是他听到的是儿歌、故事。即孩子关心的是最直接的信息
  2. 在家长眼中,他们关心的是“小黄鸭是什么”,首先他们会把它定义为一个玩具(而不是一直“鸭子”),然后他们可能会对这只鸭子的娱乐性、教育性、安全性、性价比等做出评判。也就是说,家长关心的是价值和意义
  3. 在玩具构建者的眼中,他们关心的是“小黄鸭是怎么做出来的”,他们会思考和设计小黄鸭有哪些功能模块,会想它的电路结构以及声光效果。也就是说,构建者关心的是结构和实现

在这里,我们可以看到我之前的学习方法,似乎只停留在了“小孩”层面,即只学习了最表面最直接的信息。面对OGNL的价值和意义,以及他是如何在框架中实现的,我一概不知。即使我能熟练地使用它,却不理解他为何广为所用,不理解它的底层实现。可能很多初学者都跟我一样,在一个“小孩”的层面去学习,所做的只不过是信息的搬运工,将知识从其他地方搬到了我们的知识库中。

其实最好的学习方法是循序渐进,把问题当做一段多层加密的密文,逐步解码。在面对知识的时候,我们可以依次问自己四个问题(从“小孩角度”到“构建者角度”):

  1. 这个知识是什么?OGNL是一种什么样的语言?去了解它的背景
  2. 他能完成什么工作?他能完成什么操作?去学习他怎么使用
  3. 这个知识的价值何在,我们为什么要用它而不选用其他的知识来替代它?OGNL相比于EL表达式有什么优势?了解它的特性和较其他技术的强大之处
  4. 这个知识是如何实现它的价值的,他凭什么有这种效果?OGNL在Struts2中的底层实现是什么样的?通过底层代码来学习它的结构组成,实现原理

一一破开了密文的面纱,才能真正解读一门技术。在能熟练使用它的同时,还能根据实际需求判断是否需要运用它,也就是通过深入剖析它的结构,达到对其价值的理解,从而判断它的应用场景。

用构建者的角度去学习一门技术相关推荐

  1. MySQL主从原理,基于快速学习一门技术的3种方式!

    根据经验,想要快速学习一门技术有3种方式. 第一种方式是通过代码来理解它的实现,反推它的逻辑. 这种方式的难度很大,而且起点相对高,能够沉浸其中的人非常少,过程相对来说是苦闷的,但如果能够沉下心来看代 ...

  2. 学思录(一):带着信息的角度去学习

    近期在读scott young 的<如何高效学习>,里面提到了信息的分类,其中我的专业--数学与应用数学学习的大多数是抽象信息.信息的理解阶段又分为几个:表面理解:理解信息的字面意思,以及 ...

  3. 学python要下载什么-从应用的角度去学习Python--为孩子下载课本

    最近,孩子上课都没有课本,老师给发的是一个微信链接,打开看可以,打印打不全.怎么办?我就想既然能看,从爬虫的角度就一定可以抓下来! 在Chrome中打开网址,好家伙!一堆的Script之类的玩意儿.经 ...

  4. 如何快速学习一门技术或进入一个岗位

    1.要有足够的热情,并且能坚持下去,只有自己发自内心的喜欢才能长久干下去.  2.归零心态,多向周围人和网络上学习,逛论坛往往能接触大家真实项目中碰到的问题,多想想如何回答别人的问题,刚开始可能一个都 ...

  5. 如何快速学习一门技术?

    文章目录 1.阶段一 认知了解 2.阶段一 学习语法 用法 3.阶段三 局部练习(记录总结 写博客 写博客 写博客) 4.阶段四 上手实际项目或者开源项目(小打牢基础) 5.阶段五 终极目标 撸源码 ...

  6. 如何快速学习一门新技术

    (一)前言 我们永远学不完所有的技术,最近这段时间我更新文章的频率变低了,一方面是工作时间从原先地865变成了995,另一方面是在工作过程中遇到了更多技术挑战,需要花很多时间去学习. 在进现在这家公司 ...

  7. 如何学习一门计算机语言

    下面的内容是从网上搜集资料的整理: 计算机行业不不断的去学习,就会被淘汰,只能时刻提醒自己: 加紧学习.学习.再学习,做一个积极上进的人.只有不断保持并且提高自己对于公司的价值,我们的事业才会更上一层 ...

  8. 大数据行业薪资有多少 如何去学习大数据开发

    大数据行业薪资有多少?如何去学习大数据开发?现在很多想要学习大数据的小伙伴,都要首先了解的一个问题就是大数据的就业薪资问题.不是不舍得为自己投资,而是不敢冒然为自己投资,因为不了解投资能为自己带来多大 ...

  9. 我业余时间如何学习多门技术以及开发业余项目的一些心得

    我的学习方法 在开始介绍我开发业余项目的经验前,先和大家分享一下我的学习方法吧,不过我认为学习这件事情因人而异,每个人都有适合自己的学习方式,所以这是作为一个参考,希望大家也都能先找到适合自己的学习方 ...

最新文章

  1. 一作解读:Microbiome马铃薯疮痂病与土壤微生物组关系新进展
  2. 互联网让我们变笨了吗:过去10年关于大脑的11个有趣发现
  3. C++中默认构造函数使用时的要点
  4. php 断点续传 暂停,PHP 断点续传实例详解
  5. golang http 返回html文件_用Golang写爬虫(三) - 使用goquery
  6. 云服务提供商 | 等级保护测评报告
  7. 编译ffmpeg:libavdevice/xcbgrab.c:28:10: fatal error: xcb/xfixes.h: 没有那个文件或目录
  8. Modbus通讯协议学习 - 认识篇
  9. 黑马程序员,黑马论坛---云2期,已就业45人,平均薪水6806【8月23日更新】
  10. 火星坐标系(GCJ-02坐标系),CGCS2000坐标系,WGS-84坐标系
  11. 计算机excel取整函数,Excel取整公式集锦
  12. Visio流程图模具:国标1526-89(V2.0.5)
  13. Ubuntu18.04.4安装与配置,让老机焕发青春
  14. java修改密码代码_Java用户修改密码
  15. 最长上升子序列(c++图文详解)
  16. onRef在react中的使用
  17. C# ——web网站发布服务器
  18. 无线通信——调制与编码
  19. DataBinding: how to develop Android apps faster
  20. 每个人都是从零开始,分享牛逼的前端工程师的牛逼学习方法

热门文章

  1. 道可维斯|益企行动,点亮星空数字化转型峰会
  2. Web 前端框架 Angular
  3. 三大地图付费后,仍可用的免费商用地图API
  4. 华为手机为什么深受上班族钟爱?这四点原因很真实,你觉得呢
  5. 微信公众号折叠之后,还是有很多微信创业方式的
  6. Android通过url跳转到QQ与某人聊天
  7. 【Java】Map集合概述
  8. 正态分布转换至标准正态分布的意义
  9. 诛仙手游最新服务器,诛仙手游公测服务器征名 服务器名称你做主
  10. 代码托管你只知道 GitHub?