问题
无论是博客园也好、公众号也好还是微信里的聊天,总有朋友问起诸如此类的问题:
-
某某技术XXX框架都帮我们封装好了,我们去学习了有什么用?
-
感觉你的知识面好广,实际工作中应当用不到这么多知识吧,那学习了有什么用?
-
某某技术工作中根本用不到,有什么好学习的?
我认为这是一个值得思考的好问题,就这个问题,基于我平时的学习和一些个人的思考,分享一下想法。
更快速有效地开发代码、处理问题
记得我刚刚工作那会儿,知识储备不是很足,这种时候工作中难免遇到一些问题:
-
需求开发时碰到有些不会的地方频繁百度、写Demo,碰到报错的时候,一些不认识的又得百度,造成需求开发比别人慢
-
测试环境还好,有时候在线上碰到了一些技术性的问题,例如死循环、内存溢出这些,手忙脚乱,没有方向
也就是一次一次这样的情况之后,让我有了个人的思考,核心归纳起来就是两个字:储备。
储备,换言之就是以工作中可能碰到的一些问题不断地去学习、不断充实自己,当自己掌握地越多,当知识储备越充分,你会慢慢发现自己:
-
开发需求的速度比别人快
-
能主动去优化自己以前写的代码、他人写的不好的代码
-
处理问题的效率比别人高
最后就是领导觉得你优秀、出去面试对方觉得你优秀,承担的职位越来越重要、干的活越来越有技术含量,拿的薪资越来越高。说白了怎么衡量一个程序员比其他程序员好?我认为就两点:
-
别人做不了的事情你能做
-
你做的事情比别人做的又快又好
可以分享的经验是,现在工作中遇到的问题,我基本解决时间没有超过1小时的。
举个实际点的例子,工作中在某个场景下需要一个LRU算法的实现,当别人都在百度的时候,你上来就来一个new LinkedHashMap(16, 0.75f, true),或者直接new LRUCache(),是不是特别完美?
让自己更聪明、更勤于思考
虽然起了这个大标题,但是我本人并不认为我很聪明,这个要声明在前面- -@
尽管如此,但是所谓"活到老学到老",通过学习,我认为还是可以让自己不断提高,并不仅仅是学习到的那些知识,更多的还有:
-
不断举一反三的能力,XX知识这么做,那么换一种方式做可不可以,XX知识写法是这样,换种写法可不可以,有什么问题
-
不断质疑的能力,质疑别人写的每一个细节是否正确,从质疑中反向让自己成长
脑子越用越灵、越用越活,这些都是学习、思考带来的。
面试有用
这个理由功利性很强,但是很实际,因为对我来说这个不是我平时去学习的理由,就放在最后讲了。
现在出去任何一家公司,指望面试官仅仅问你如下问题:
-
if...else...、while、for的作用,怎么用
-
你的项目有哪些东西,你负责了什么,做了什么
-
项目中用到了哪些框架
坦白说,那是不可能的,即使仅仅问到了这些且你100分通过,也不建议去,无他,面试层次太低。
但凡像样点的面试,问稍微进阶点的用法、细节性的问题、底层性的原理都是再正常不过的了,就比如Spring吧,进阶的会问:
-
<bean>标签中id是否可以重复
-
<bean>标签中如果id不定义,Spring默认给什么名字
-
BeanPostProcessor做什么的
-
aop有几种实现方式,实现方式有什么区别
很多东西,平时没有一点积累是答不上来的,答不上来的东西越多,自然面试成功的概率也越低。
结语
就这个写了一些个人思考,希望对大家有益,最后总结一下:
-
学习这个东西,不是为了当前,而是将来,至于学什么,看个人
-
好好学习,天天向上