今天的投稿来自粥粥,他目前在一个中厂负责开发的工作,有着多年的工作经验。在这篇文章中,将由他给大家带来,他对于如何学习技术的一点建议。希望能对小伙伴们有所帮助。


一、选一门你爱的并且一直钟情它


初学编程我接触的是Python。
在我学变量,分支,循环的时候很愉快,我觉得我很快就可以写出一个炫酷的网站,但是往后令我越来越迷茫的是我发现我要不停的import,import,import别人的库才能撑起我的程序。
并且所有的人都在教我怎么import一个别人的东西,我在里面只要像个傻子一样输入变量就可以出现我想要的东西。
这一度令我很沮丧,我以为我必须要记住这么多复杂的api,我不能靠自己掌握的基础来创造这些东西。
随着我深入学习,我知道,这正是现在编程语言门槛越来越低,越来越容易学习的原因。
大部分复杂的东西都有厉害的人帮我们做好,我们要做的是打好基础,然后合理利用轮子。
正因为这些引出了下面的观点。

有厉害的人帮我们封装好了厉害的轮子,我们得以快速开发应用。
哪怕是傻子,也能通过持久的训练,写出不错的代码。
得益于互联网的开源精神,我们需要缓存,有redis、memorycache甚至guavacache这些内存缓存。
我们需要消息中间件,有kafka、rabbitmq、rocketmq,我们需要更灵活高效的搜索,我们有elasticsearch、solar可以选择……
初学的时候我沉迷于各种各样的框架无法自拔,一昧追求知识的广度。
当我面试金山的时候,我的现老大问我有什么你深入研究可以独当一面的框架或知识,我一时语塞。
单纯的学完java你做不了太优秀的事,你要学更多的开源技术来支撑你的系统。
但是你不需要对所有的东西都精通,所有教你二十天精通某个技术的往往是江湖术士一般的骗子。
你需要在某个方向上的精进。
所以,专一强于广度,选择大于努力。
java不重要,python也不重要,php也不重要。
程序语言之间没有鄙视链。
如果某门语言火了,也请坚守自己在行的阵地,有精力再去学习新语言。
切记不能走马观花,丢西瓜捡芝麻。
很多大佬天天为某个语言站台,可能只是利益相关。
比编程语言更重要的是算法与数据结构。
所以,如无必要,把学习新语言的精力放在算法与数据结构上。
你会考虑代码的复杂度,然后寻找调优的方案。
多看看大厂招聘的jd,那是你努力的方向。
切记盲目的努力。
在这个行业里摸爬滚打的第一条,持续学习的能力与控制力。
培训班学出来那点热乎的东西不够看。
如果你是一个缺乏主动学习能力的人,只是看这个行业泡沫般的高薪。
你进来了也是一个辣鸡。

二、有选择性的吸收


学会学习的方式。

技术的东西日新月异,要学会快速吸收知识的方法。
你要想往上升一个层次,你必然需要接触广阔的互联网知识。
但是你一定要懂得权衡取舍。
有些是你职业生涯赖以生存的关键,你是一个Java工程师,你学会基础的知识不足以让你在人群里脱颖而出,你要有个性化的知识去展现你的价值。
例如你熟练掌握nio网络编程,进一步地熟练掌握netty。
你熟知jvm,掌握各种垃圾回收算法与机制,进一步地能在工作中践行jvm调优。
你熟练掌握多线程,能在工作中规避和解决线程安全问题。
这是你职业生涯的根基,你要做到在这些领域精进与深入研究。
但是有些知识,你只要做到了解,比如Zookeeper、Quarz、ElasticSearch、Dubbo、Flink、Spark、Spring Cloud、Spring Boot、Docker、Python、Go、Flask、Django。。。。。。
如果你愿意,我可以列出一大页的专业术语,很大部分的刚入行的程序员或者从业数年的程序员迷失在这些专业的术语里无法自拔。
所以回归到那个话题,选择远比努力重要。
另一方面,面对这浩如烟海的新知识,怎么快速掌握呢?
懂得舍,我知道在这个行业大家口口相传的第一条金科玉律---”能动手尽量别BB“。
但是这些知识,你只需要知道怎么用,你没必要每个技术都从安装开始,然后敲一遍命令行,知道它每一个技术细节。
现在编程相关的知识是如此便捷廉价的获取到。
除了书,你可以找一套好一点的视频,然后2倍速快速浏览完,记得做好笔记。
等到面试或者真正用它的时候,翻看这些技术大纲。
第二,懂得取,举个栗子,如果你想在容器技术上有突破,面试或者工作上独领风骚,那你就选择“docker+k8s”。
这个时候你不再是蜻蜓点水地学习,而是要做到精进。
你要知道底层的“namespace“、”cgroups”这些东西,你的追求不再是会用,你甚至可以自己手写一个docker。
这对你的职业生涯及其有帮助。


转自 | 专知

文章来源于启舰杂谈 ,作者粥粥