• 你有没有觉得学得越多,越觉得自己菜?


    前些天,一位带团队的朋友发来一条消息:“你有时候学得多了,会不会觉得学无止境,然后就有点迷茫了?”。我说是的,而且这种感觉非常强烈。

    朋友之所以发出这样的感慨是因为在面试,想看看自己的身价与能力。面试的结果就是被虐的很惨,于是开始恶补知识,在此期间才发出这样的感慨。

    对于我而已,有这样强烈的感觉不是因为面试,而是因为在不断的学习新框架,同时还在阅读Nacos源码。学得越多发现自己不会的越多,源码阅读的越深,发现涉及的知识面越多,自己不懂的越多。

    知识是一个无底洞

    自从项目中引入了Spring Cloud,感觉进入了一个无底洞。如果你的项目只是在用Spring Cloud,那倒是无所谓,网上的几篇文章就可以让你轻松集成任意组件。但如果你想把这些组件用的足够好,出现问题能够顺利排查,了解它们实现的底层原理,这就是一个知识的无底洞。

    当项目中引入了Spring Cloud,那么你得依次懂得:Spring Boot、Spring Cloud、注册中心(Nacos或Eureka)、Feign、Loadbalancer(或ribbon)、链路追踪、日志管理(ELK)等等。在一些场景下还需要用到断路器、网关等。

    然后我们的项目属于物联网项目,计划把所有的项目和设备监控起来,此时发现又需要用到:Spring Boot Actuator、Prometheus、Grafana、InfluxDB、MQTT等等。

    此时,只能感慨,不持续学习又怎么能行呢?

    阅读源码是检验技术能力的一项指标

    有粉丝曾问我:来公司很久了,领导也不怎么给安排活,感觉没什么可学的,该怎么办?我说:要么主动找领导沟通一下,让他给你安排点活儿;要么研究现有业务;要么就深入研究项目中使用的框架。

    很多时候,我们会感觉没什么事可干,业务逻辑的CRUD写的也很枯燥,项目中的技术没啥可学的。真的没啥可学的吗?真的有读过任意使用框架的源码吗?

    关注我公众号的朋友都知道,我最近一有时间就会读读Nacos的源码,感觉不错的点还会写写文章。而就在阅读源码的过程中,我才深深的有了开篇提到的那种“感觉自己菜的感觉”。不信你可以试试。

    阅读源码通常有两个方向,第一个方向就是了解一个框架的核心业务逻辑和流程,或者说是设计思想。这也是最重要的。另外一个就是学习框架运用的技术点和设计思想。

    以Nacos源码为例,我这边是刚刚阅读了服务注册、心跳机制、服务获取等功能的源码,已经在其中看到了大量的知识点,比如:简单工厂模式、Java反射机制、代理模式、门面模式、定时任务、事件机制、锁、gRPC协议等。这还没研究到集群相关的CAP原则、Raft协议、Distro协议等。

    这里刚开始研究到gRPC协议,马上发现还涉及到了RPC协议、Protobuf框架、Http 1.0、Http 2.0等,当然你还可以延伸到TCP、网络分层等。

    所以说,当你真觉得没什么可学的时候,阅读一个框架的源码,不断的拓展开来,会发现有无限的知识等着你。或许这对你是一个不错的选择。

    问题的解决

    回头最开始的问题,面对无限的知识,越学越觉得自己菜该怎么办呢?

    首先,如果纯粹是为了学习,没有业务的羁绊,只是满足自己的好奇心,增加知识面。那么,本身就不用过度的迷茫,只用调整心态,持续的学下去即可。比如,我学习源码的目的就是增加知识面,把简单的知识构建成一个网,形成记忆。

    在学第一个框架时可能会比较难,但当你阅读学习一两个框架之后,你会发现基础的知识好像就那么多了。比如,设计模式常见的也不就是那23个吗?多见几次,不仅学的更透彻,对运用场景也更了若指掌。SPI机制、动态代理、反射等等都是如此。

    其次,如果是为项目运用而学习,那么就要抛弃掉知识点的学习,把握框架或技术栈的核心原理,它能解决什么问题,如何解决的,是否带来了副作用等等。比如Nacos这类框架,为了满足CAP原则中的AP原则,就会牺牲数据的一致性,你需要学习研究的就是它的基本实现与原理,同时当服务已经挂掉,客户端怎么及时发现并处理这里解决方案。

    最后,无论是学习知识点或是学习场景解决方案,都需要在一个范围内进行大量的积累和沉淀。其中学习知识点还不太明显,因为常用的知识点是有限的,构成知识网之后,就越来越轻松了。而解决方案是无限的,不同的业务领域,不同的场景可能就需要不同的技术栈和解决方案。这也就是为什么我们在选择职业的时不要轻易换行业的原因,因为大量的解决方案是需要跟行业知识和行业其他技术相配套使用的。

    写在最后

    学习的过程中迷茫是正常的,越学越觉得自己菜,说明你正在在不断的进步。你的存量知识是一个圆,当这个圆很小的时候,圆周长很短,接触到圆之外的知识也少,你可能会觉得自己懂得很多。但当存量知识增加,圆周随之增加,未知的知识将成倍增加,感觉自己很菜就很正常了。正所谓,学而知不足,就是这个道理。

    但不用担心,只要你在学习进步,知识的积累会触发思维模式的进化。当某一刻,你看一眼代码就知道它用了什么技术、什么设计模式、设计思想是怎样的,是不是很有成就感?这一刻,你也真正修炼成功了。

    博主简介:《SpringBoot技术内幕》技术图书作者,酷爱钻研技术,写技术干货文章。

    公众号:「程序新视界」,博主的公众号,欢迎关注~

    技术交流:请联系博主微信号:zhuan2quan

  • 相关阅读:
    Jaxb2 实现JavaBean与xml互转
    标准输入与标准输出
    linux 一行一行的读取文件
    linux $* 和$@ if [ ](字符串比较)
    scala 学习(三)——Array和ArrayBuffer
    Shell编程(六)awk工具
    Shell编程(五)脚本语法
    Shell编程(四)Shell变量
    Shell编程(三)Shell特性
    Shell编程(一)概览
  • 原文地址:https://www.cnblogs.com/secbro/p/15086532.html
Copyright © 2020-2023  润新知