作为程序员你是如何学习的?
学习的需要
这篇文章不做技术分享,和大家一起讨论一下学习的途径和方法。程序员行业技术更新迭代速度快,这个特点身为行业内的每个猿友们都有深刻体会。
很多技术基本每年都有一个大小版本,每个版本的出现意味着有新的技术思想和应用技巧出现。也许你用不到但是你需要去了解。你看自从甲骨文公司宣布收购Sun公司,Java 的 JDK 版本基本保持一年一更的频率。2014年,甲骨文公司发布了Java8正式版,5年来,目前最新的已经是JDK12。
面对各种技术的各种更新,程序员要面对的不仅是某个单个技术的版本更新,即纵向更新。还要比较各种相似技术的优缺点,即横向比较。
因此猿友必须时刻保持学习和钻研的精神,不但要耐得住寂寞学习技术应用还要静得下心推敲各种繁琐的技术源码和理解其原理,想想都是很头大。
对于学习,一般因猿而异,分为两种类型。一种是外界驱动型的,另一种则是自我驱动型的。
外界驱动型的猿友,学习技术相对被动,公司业务需要了某些技术或者面试中问到了某些自己未涉足的技术他才去学习和研究。而自我驱动型的猿友,则是有自己的一套学习定位和技术成长路线规划,他们更主动的去学习自己未涉足的技术领域。
当然无论哪种类型,谈到学习都离不开如下几个途径:看视频,买技术书籍,逛博客和社区,阅读官方文档,利用知识付费平台。
我们分别来详细分析和讨论一下以上各个途径的特点,以及大家偏爱哪种?
看免费教学视频
免费教学视频,一般很多是培训机构录的,目的当然是为了推广和招生。像我刚入门的时候也是学习毕向东的Java基础教学。对于初学者来说,视频帮助确实蛮大的。
这些视频它的目的由于是推广和招生,所以录的时候一般都是很认真的而且录制的人也一般有丰富的经验,而且讲解的也很详细,因为这样才能吸引到学生。
而有些技术视频则是某些教学网站为例吸引流量而录的,但是这些视频都有个特点:知识点偏于基础。
对于初学者来说,视频教程是有帮助的,因为学习成本低,而且有老师给你详细讲解每个知识点的总结,这时候你像个初生的婴儿,接纳和吸收的效率比较高。但是如果你工作几年后,已经有几年的行业经验了。视频教程一般是满足不了我们的需求了,为什么?
因为它的效率太低了。有几年经验的人你去看视频,视频中某些知识点也许你已经掌握或者了解,但是视频不是针对你个人的,所以一个几十分钟的或者接近一小时的视频,对于你而言,也许只有其中的几分钟是你想要的,其他的你可能都会按着快进键跳着看。你会慢慢的感觉到这是在浪费时间,这时你需要调整下节奏了。
买技术书籍
技术书籍,这没什么好说了。身为技术人员,我相信没有哪位猿友说自己没有买过技术书籍,而且一般技术书籍都是偏贵的,平均基本定价都在七八十左右。
其实,我要是说每个程序员都为技术书籍掏过腰包,这世上不会有没买过技术书籍的程序员。我相信也没人反对。因为这是一种最普通和普遍的学习途径了。
常说,书籍是人类文明进步的阶梯。每一本书都是作者的多年经验总结和思考。通过阅读一本书来获得成长,相当于与前辈促膝长谈。这么有价值的事情当然是很值得做的。
我本人就是一名深度书籍购买爱好者,从学校到步入社会到现在,花在书籍上的钱可以说是笔巨大的支出了。好的书孬的书都买过,以前是名文艺爱好者,阅读的习惯主要集中在历史名著、小说、散文、武侠,而自从入行编程界以来,口味变的专一不花心了,书架上就只有 《**权威指南》、《深入分析**原理》,《**源码解析》、《**实战》等等。
可是随着自己行业经验的积累,发现买技术书也不是件很好的事情 ---- 搬家严重不方便。技术书籍大家都知道,厚而且实。
而且还有一个问题,很多技术书籍其实也只是入门教程,这类书籍当你掌握了技术理论之后,你就再也不会去去触碰它了。例如市面上的《**从入门到精通》,《**基础教程》等。但是这类书籍又占据着你的书架空间,这类书籍就变得食之无味弃之可惜,扔又舍不得不扔又不是。所以为了避免这种情况的发生这类书籍就不要买了。
我们都知道技术是有时效性的和版本区别的,很多书籍讲解的技术也许是v2.0版本,但是由于技术更新迭代,一年之后v2.0已经过时,主推v3.0了。但是购买的纸质书籍内容是不会自动更新的,内容还停留在老版本,这类书籍也只能作废。例如很久之前购买过 Struts 和 Hibernate相关的技术书籍的猿友们,这些书它们现在还在你们书架上吗?亦或是已经成为火锅垫了。
其实如果有阅读的必要的话,这类书籍我们可以购买电子书。阅完即可丢,过时也不会占据生活空间,只需要分配几M大小并且可以释放的硬盘空间。
那什么书籍值得购买呢?那些讲解技术实现原理和架构思路的书籍以及管理经验的书籍。
因为技术千变万化,但是万变不离其宗。技术的本质是不会变的,技术原理和设计思想是有指导价值的。这类书籍影响的是我们的思维。例如:《数据结构》、《编程思想》、《深入理解Java虚拟机》等这类书籍我们可以反复阅读,就值得占据我们书架的一席之地。
逛博客社区和技术公众号
博客社区和技术公众号是技术分享的网上平台,在这里从基本的到复杂的,有技术新手有技术大牛,每个人都可以在这里分享他们的技术心得和学习笔记。所以这里比较鱼龙混杂,有原创有转载,充斥各种版权纠纷,都在声明版权但是很少能维护到的。
学习和分享,都是一种获得成长的过程。这里有前人摸石子过河后留下的经验脚印,有高手的经验分享。这里虽然杂乱,但是往往针对某个点的问题,在这里你能很快速的得到答案。人多力量大啊。
但是,这种途径是有点碎片化的学习特性,并不是笼统的讲解。你在遇到某个问题时去寻找相关解决方案,或者定期阅读推送的文章,但都是针对某个点的,是一种碎片式的方式。
官方文档
你要学习某个技术,还有比技术官方文档更好的地方吗?官方文档一般都是该技术开发者本人或所在组织编写和维护的,这时直接接触技术源的地方。
我去年新接触 Elasticsearch 的时候,从0搭建搜索平台,了解 ES 的搜索原理基本都是通过官方文档来做到的。关于Elasticsearch的一本书籍我都没有买,因为官方文档已经详细的把所有的都介绍了。索引创建,索引原理,分布式原理,按段搜索等等全部都详细的讲解了。
你唯一需要做的就是静下心来仔细阅读,然后动手自己搭建环境编写Demo,最后总结经验就可以了。
知识付费平台
最近几年流行知识付费,网上出现了很多付费学习平台,一些有经验的技术人将某个技术点通过多期的方式录制成视频,消费者如果感兴趣需要支付一定价位的金额进行购买。而且某个技术点全期的价格一般在百元左右。
这种现象主要是近年来IT互联网行业的爆发,薪资待遇还不错,然后涌入了大批程序员,有流量就有消费。前面说过程序员是需要不断学习才能应对技术更新的挑战,有需求就有消费。特别是一些流行技术的教学教程和总结视频,就更受大家的喜爱。
猿友讨论
其实以上几个途径大家或多或少都有过,并不是单一的通过一种途径去学习,更多的是多种学习模式,我目前的学习新技术的大致主要方式是:首先调研新技术的特点和适用场景,然后阅读官方文档,编写Demo,本地运行,最后是通过一些方式理解原理,最后是技术总结。
对于我而言,目前我一般基本不通过看教学之类的视频学习,书籍购买也是有针对性的,买一些原理性的书籍。而博客和社区是我早上或中午时常会逛逛的地方。知识付费平台目前主要是购买了某个移动端App的几个感兴趣的课程,例如数据结构和网络协议方面的,总体感觉还是不错的。
大家猿友们的学习方式都有哪些?哪些你认为是你目前主要的学习途径,如果愿意大家可以在评论区留言一起分享和讨论。