如何判定你对一门技术的掌握程度?

作为一名程序员,你肯定和我一样,有或者有过这样的苦恼:在公司技术能力很强,什么样的功能都能实现,即使是需要引入一个新的中间件或框架,也都实现需求,但面试时面对面试官的连环炮,却总是招架不住。明明这些东西都可以很会用,甚至是都可以很熟练地运用来实现需求,为什么面试官问那些有的没的、莫名其妙的、空洞的理论问题?为什么我都会用,但是这样的问题却回答不上来?为什么我没有思考过面试官问的这些问题?接下来,我告诉你是怎么回事。

这就涉及到对于一门技术的掌握层次了。我把对于一门技术的掌握分为三个层次。

第一层:使用层

无论什么新技术,你只需要给我一个名词,我就能查阅资料搞清楚这个技术是用来干嘛的,这个技术有哪些特点,如何使用,如何搭建这个中间件或是如何调用该框架的API,然后运用到公司项目中,实现需求。

这就是一种能力,我不要记住这个中间件的每一项配置,但我有渠道可以了解它的每一项配置,并且知道主要配置大概是用来干嘛的;我不需要记住这个框架的每一个API,但是需要的时候随时查阅便可以实现我想要的功能。

做到了这个层次就算得上是一个技术小能手了,什么都能搞。但是注重的只是这个技术的外在功能,而这个技术本身对我而言只是一个“黑盒子”,但是我会用它。

第二层:原理层

这一层就要刨开这个“黑盒子”,看看里面大体上是个什么结构了,也就是这个黑盒子运行的原理是什么。打个比方,你每天都在和Mysql数据库打交道进行CRUD,可是你知道Mysql内部是个什么结构吗?你知道一条SQL交给Mysql之后,Mysql是如何把你想要的数据查出来的吗?这些就是内部原理,是黑盒子的内部构造

虽然没到源码的那个层次,但得能用自然语言、画图的方式表述出来,这时便是懂了这项技术的内部原理。当把这项技术的内部原理弄懂了,那么很多外在的规则都能想清楚而不必去死记硬背条条框框,比如Mysql的每一项配置具体是用来干嘛的,再比如为什么要建立索引,索引为什么不能越多越好等等,这些看起来只能死记硬背的规则就都变得生动起来了,一切都变得有意义了。

而这些内部原理往往就是面试官提问的问题,虽然看起来都是很空洞的理论知识,但是不懂理论如何更好地去实践呢,应该没有人想一辈子CRUD吧。结合开篇的问题,虽然在以前的工作中积累了很多使用层的经验,但是面试注重的是原理层的刨析,这就是为什么会感觉自己什么都会,但是面试官问的问题都答不上来的原因。

第三层:源码层

这里就要深入到源码层面了。既然内部原理都懂了,为什么还要看源码呢。因为可以学习源码的编码思想啊,不然你以为设计模式是怎么来的、算法是怎么来的、数据结构又是怎么来的。通过对源码的阅读不仅可以更细粒度地了解这项技术,还可以借鉴学习,运用到自己的日常代码中,让写代码可以事半功倍,轻松应对需求变更。再有就是,Spring报错,在百度找不到答案的情况下,你只能去debug源码来定位问题!这个很重要,不能总是依赖百度来解决问题,很低效也很肤浅。

曾几何时,我也曾纠结于理论与实践的问题,在公司干活告诉我的是如何实现需求,越快越好,拿来用就好了;而一次又一次的面试打击又告诉我,理论很重要,不然你没有竞争力。就这样被撕扯着。。。现在总结了一下,豁然开朗:我们要玩黑盒子,但如果明白了这个黑盒子的内部构造,不就可以发现更多的隐藏功能么,不就可以玩的更好么,如果出问题了还会修,甚至可以自己做一个。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值