本篇文章首发于个人博客平台:https://duktig.cn/archives/77/。如果觉得感兴趣/对您有帮助,欢迎来访:Duktig的个人博客。
关于学习方法的思考
在学习编程中,会遇到很多学习方法相关的问题,其中每次学习一项技术应该达到怎样的程度,是一个令人头疼的问题。
对于学习一项技术到底要达到怎样的程度,这是一个复杂的问题,这往往要有很多方面的思考。比如这样技术是否是核心技术?对于后端而言,像MySQL、Redis、消息中间件这样常用的存储/中间件,那必须要达到一个很精深的程度;像Swagger、Hutool、MybatisPlus这样辅助开发的技术,就可以达到应用层面即可。再比如学习一项技术,不可能一下子就精通,那么第一次学习,我要达到什么程度,是会用可以做demo,还是要掌握一些概念,没学习一次我要达到怎样的程度,这样的问题都不好概括总结来说。很多情况下,还要根据自己的学习能力来看。只有不断调整,再能找到适合自己的学习方法。
最近经历了一些面试,所以对初学一项技术至少要掌握到这样的程度有一定的思考。
例子
在面试中,常常听到一种问法就是“你能说说你对xxx的理解吗?”“你了解过xxx吗?”这是一种宽泛的问法,并没有详细到一项技术具体的某个点。但是遇到这个问题的时候,反而不一定能可以回答的很好。
很多时候,我们可能更偏向于一项技术该怎样应用,或者偏向于一些原理的实现,但是对一项技术基本的认知却少了些关注,反而不知道该怎样回答这样的问题了。就像之前有一次面试中,面试官这样问的:“我看你简历中写了nginx,那么你能说说你对nginx的理解吗?”我记得当时大概是这样回答的,“nginx常用于负载均衡和反向代理,前端发送请求,通过nginx代理到指定的后端服务”。“那么你能说说你们一般是怎样应用nginx的吗?”对于应用我只说了代理后端服务和静态资源,感觉这两个问题回答的很片面,而且在面试高压的情况下,回答的并不像文字中表达的那样好。
我相信,让你配置一下nginx的服务代理,我相信很多人很快都可以配置好。但是初学一项技术就该掌握的,反而没有掌握,就导致了上面的那种情况。那么我们初学一门技术应该掌握到怎样的程度?
初学技术的程度
初学一项技术该掌握的程度,我觉得可以从一下几个方面考虑:
- xxx是什么?用来干什么的?一般的使用场景? 如果我们学习一项技术,连他是什么、干什么都搞不清,那么这样合格吗?
- xxx解决了什么样的问题? 每一项技术肯定是根据业务场景和解决一定的问题应运而生,知道这个,我们再知道为什么要使用这项技术。
- xxx有什么样的优缺点?以及它与同等技术栈的一个横向对比。 知道优缺点,有一定的对比才可以在合适的场景选择合适的技术,这也是我们应该掌握的基础性问题。
以上3个问题算是比较基础的,如果连这些都没有掌握,何谈其他。在面试的过程当中,如果面试官问到这些问题,你不能很好地答出来,那么面试官可能就觉得这一技术你掌握的不够,可能就不会深问了,另外几个问题也是在面试中常常问到的。
掌握了以上三个问题,达到这样的程度,我们在继续深入学习其实际应用开发和一些方面的底层原理,一步一步深入浅出,才更有利于我们掌握一项技术。
后记
本篇文章根据最近的面试经历,总结了“初学一门技术应该掌握到怎样的程度”,后续根据情况会持续更新一些学习方法相关的问题和思考。