当前位置: 首页 > news >正文

如何快速学习一门新技术

(一)前言

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

在进现在这家公司之前,我在一家项目为主的公司工作,主要用到的就是Java、MySql、Redis这些技术栈,以项目交付为主。但是现在这家公司以研发为主,就导致了每一个研发项目可能都会用各种自己知识体系之外的框架或者说是技术。

比如数据抽取用到了Datax,搜索用到了ElasticSearch、监听应用binlog用到了kafka、离线大数据计算用到了spark、hive、hadoop、hbase等等。但是项目不会等着你慢慢地系统地去学习每一门技术,因此在经历了这些之后,我自己也总结了一些快速学习一门新技术的方式。

(二)快速了解阶段

在学习一门技术来说,首先要快速知道这门技术是干什么的。这一点其实很重要,了解这门技术是干什么的,才能去评估这门技术是否符合研发上的功能需求。比较建议的方式是结合官网以及一些优质博客,快速了解。比如以ElasticSearch为例,首先一定要先找到官网,如果全英文刚开始看不下去,可以使用浏览器的翻译功能,如果依旧不理解,就可以在网上搜优质的博文,但是博客的日期越新越好,两年前介绍的ES和现在的ES真的就和两个框架一样。

(三)内部尝试阶段

了解了框架的基本内容之后,接下来就要开始动手尝试,一方面是熟悉各种API和语法,另一方面是在使用过程中,能找到框架的一些缺点和局限性。比如ES没办法支持联表Join查询等问题,并把这些问题带到自己的项目中,评估是否对项目有影响。

内部尝试阶段依赖的资料优先还是官方文档,然后我建议刚开始可以跟着视频学习,比如B站有很系统地学习视频。在时间允许的情况下以二倍速看完整个系列地视频,如果时间很紧,看应用相关的就可以了,底层和源码相关的内容可以先跳过。

当经历了这个阶段之后,这个开源框架应该到了会用的地步了。

(四)编码阶段

在经历了一系列技术评审之后,接下来可能会有两种情况,一种是决定采用ES,另外一种是发现不合适,需要重新技术选型。如果是第二种情况,那么这门技术可以先放一放了,后面若是有兴趣再系统学习。如果是第一种情况,那么很快就会进入到编码阶段了。

在编码的过程中,会发现很多前期没有想到的情况,在一些需求之下可能需要讲ES使用到极致才能完成该需求。这个阶段主要靠地就是搜索引擎和官方文档,视频和书籍起不到帮助的作用。我当时在写ES的时候,遇到过很多很多奇特地需求,于是我翻遍了整个官方文档,还真的找到了ES提供的语法。

在经历了这个阶段之后,你对这门技术的使用应该是到了炉火纯青的地步,但是对原理并不通。

(五)深造阶段

其实在工作中能把一门技术用熟练就已经足够了,但是对于自己的提高来说深入底层是最好的方式。这个时候,各种优质书籍就成了最关键的因素。对绝大部分人来说,要自己摸着源码去理解很难很难,并且很容易理解错误。除了经典书籍之外,尽量读新出版的书,因为技术的更新实在太快了。如果是国外的书籍有能力就读英文原本,毕竟翻译过来往往几年就过去了。如果这一阶段你也熬过去了,那么恭喜你,你可以在简历上写精通这门技术了。

(六)总结

保持学习才能保持竞争力,希望这篇文章对你有帮助,我是鱼仔,我们下一篇再见。

相关文章:

  • 模拟实现部分库函数(strcpy,strcmp,strcat,strstr,memcpy,memmove,memset)
  • 组成原理(一):计算机是如何组成的
  • JDK9相比于JDK8,究竟变强了多少
  • Hive之分区(Partitions)和桶(Buckets)
  • 列式存储?OLAP?ClickHouse究竟是何方神圣
  • 分享Open-E DSS V7 应用系列十篇!
  • 基于SpringBoot和BootStrap的全栈论坛网站(附上源码)
  • 我的Java全系列技术博客
  • 闲着无聊造个轮子,开源一个可快速接入的分布式SSO系统
  • https在电子邮件安全解决方案
  • Python生成10个0-100之间的随机数,将其每个数一行写入“随机数.txt”文件,然后从文件中读出十个数,排序后写入“排序.txt”文件。文件路径随意指定。
  • 手游出海必用的三大推广策略
  • Python 实现批量文件改名操作。比如某路径下有“01.txt”“02.txt”“03,txt”,将其统一改为“学生01.txt”“学生02.txt”“学生03.txt”的形式。
  • NodeJs 搭建简单的聊天室
  • SolrCloud 5.x 集群部署方法
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • Fastjson的基本使用方法大全
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • Magento 1.x 中文订单打印乱码
  • Python连接Oracle
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 阿里研究院入选中国企业智库系统影响力榜
  • 对JS继承的一点思考
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 后端_MYSQL
  • 缓存与缓冲
  • 微服务入门【系列视频课程】
  • 以太坊客户端Geth命令参数详解
  • 与 ConTeXt MkIV 官方文档的接驳
  • 在Mac OS X上安装 Ruby运行环境
  • ionic异常记录
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • (C#)一个最简单的链表类
  • (C语言)fread与fwrite详解
  • (libusb) usb口自动刷新
  • (poj1.2.1)1970(筛选法模拟)
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (图)IntelliTrace Tools 跟踪云端程序
  • (一)u-boot-nand.bin的下载
  • (原)本想说脏话,奈何已放下
  • (转)树状数组
  • .Net Web窗口页属性
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .net 托管代码与非托管代码
  • .NET分布式缓存Memcached从入门到实战
  • .NET构架之我见
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .NET中GET与SET的用法
  • ??eclipse的安装配置问题!??