前言
每个人想去学习一门本领,肯定需要用行之有效的方法,因为不恰当的方法,往往会事倍功半,即使你费尽心思地努力。
记得我还在高中时期,有个很要好的同桌,他那时候非常勤奋好学,晨读来得都是最早而且非常积极地朗诵诗词,但是他的语文诗词还是记错很多,导致成绩总是不理想。不单单是语文的诗词,数学也是一塌糊涂,公式和定理没用对地方,这些是因为他没努力很敷衍地学习吗?并不是,只是因为他并没找到合适的学习方法。作为他的同桌,为了巩固我们之间的友谊,我将自己的学习思路教给了他,让他知晓了学习并非一成不变、死记硬背,要抓住要领,积极实践,后来他成绩一路高涨,考上了他理想的大学。
在IT行业,技术更新迭代,作为程序员,肯定都会面临经常要学习新技术的情形,以保持自己的技术水平,能给老板和需求方一个满意的交付。所以,我们不停地在度娘里寻找答案,阅读技术文章,然后解决自己当下遇到的技术bug问题;我们为了满足老板/需求方/产品经理/上级的要求,去快速学习一门新语言/新技术/新框架;我们为了能更好地完成需求、完成项目,努力改变着自己的沉默寡言,学习着如何跟同事、领导沟通,努力让自己变得健谈起来。但是否有认真地想过,自己解决技术bug问题有没安定下来思考过以后怎么避免再次出现类似问题,有没记过笔记?自己在学习新语言/新技术/新框架的时候,有没最终真正去做过项目,造过轮子?自己在学习沟通技巧的时候,是否有克服紧张的情绪,语言是否连贯,关键时候是否能做到不支支吾吾?
白驹过隙,人生是很快的,一年五年十年后,别人做程序员财务自由了,做架构师了,但自己还在亲自写代码,为什么会这样?
其实程序员的道路,是一条学习之路,”活到老,学到老“,除非你转行或者家里有矿,不然掌握高效率、行之有效的学习方法,至关重要,这篇文章给大家列明了学习的思路,带刚入行或工作逐渐迷茫的人指明一些思路。
学哪些
计算机基础知识
目前的计算机编程语言和技术框架可谓百花齐放,百家争鸣 ,让人眼花缭乱。但 九层之台,起于累土 ,不要被新工具或者中间件迷住双眼,让自己迷失其中,什么都学习,最终全都没学好。基础知识是所有技术的基石,在未来很长的时间都不会变化,应该花费足够的时间巩固基础。
以数据结构和算法为例,大家阅读一下Java的BitSet的源码,里面有大量的移位操作,移位运算掌握的好,看这份源码就没问题。Java同步工具类AQS用到了双向链表,链表知识不过关,肯定搞不懂它的原理。互联网大厂都喜欢考算法,为了通过面试也要精通算法。
1、以python爬虫工程师应该掌握的知识为例,按重要程度排出六个梯度:
- 第一梯度:数据结构和算法、计算机组成原理、网络通信原理;
- 第二梯度:python基础;
- 第三梯度:爬虫框架(scrapy、request等框架);
- 第四梯度:结构化数据库(MySQL)、缓存数据库(mongoDB/Redis)、消息队列(RabbitMQ/RocketMQ/Kafka);
- 第五梯度:设计模式、并发处理、数据处理框架(numpy等);
- 第六梯度:容器化、大数据、AI、区块链等等前沿技术理论。