时光飞逝,从三月底正式开始写专栏到现在,不知不觉已经过了小半年,今天也到了这个专栏收官的时刻,我特别想和你聊聊我的感受,再分享给你一些学习方法。
回想整个专栏的编写,我经历了四五月的踌躇满志,六月的疲惫彷徨,七月的重拾信心以及八月的坚持不懈,一路走来,虽然艰辛,但收获良多。
都说万事开头难,专栏设计也不例外。记得编辑第一次和我聊专栏定位时,我比较犹豫。Java 语言作为最受欢迎的语言之一,老牌、功能多,还拥有一个强大的生态。针对它的性能调优实战纷繁错杂,那内容广度和深度该如何来定,怎么设计内容才能让包括你在内的众多从事Java的程序员都有所收获…就成了我第一头疼的事儿。
后来编辑建议说,不妨把这个专栏设想为“写给多年前从业不久的自己"。瞬间感慨万千~
回想当年的自己,无论是工作还是学习,都走了很多弯路,可以说真是一步一个坑这么踩过来的。刚入行那会,学习和解惑渠道都比较单一,远没有现在的资料丰富,但工作又急需我迅速变强。“线上Bug不断,线下学习不断”,相信包括你在内的很多程序员朋友或多或少都和我有类似的感受。
因此我坚定了这个专栏的出发点,以夯实理论支撑为前提,围绕“Java基础编码、多线程编程、JVM以及数据库”等几个大方向展开讲解,从自己的经历中节选出了40多个有价值的点与你分享,期待能传递给你一些经验,指明精进方向。
专栏完结之际,在我们三个多月的在线交流过程中,结合你的留言,我也收获了很多,现在想再和你分享一些学习方法,共勉!
首先,扎实的基础功底是我们筑墙的基脚,这是我从开篇词就坚定的一点。
从操作系统的基础开始,到网络通信,再到数据结构、编程语言等等,这些都是建设基础大厦的砖石。
你有没有发现,网络通信配置参数在TCP通信框架中也有。在配置Netty的默认参数时,我就发现很多人把ServerSocketChannel的配置参数配置到了SocketChannel中,这样做虽然不会造成什么严重的Bug,但这也体现出了我们对技术的态度。
所以说,在工作中如果你发现了一些不熟悉的知识点,就一定要深挖,了解其具体原理和作用。如果你发现这个知识点所属的知识面是自己所不熟悉的领域,我很建议你从点到面地系统学习一下。
然后,有意识地锻炼我们的综合素质,以实践能力为重。
系统性能调优,考验的不仅是我们的基础知识,还包括开发者的综合素质。首当其冲就是我们的实践能力了,善于动手去实践所学的知识点,不仅可以更深刻地理解其中的原理,还能在实践中发现更多的问题。
其实我们身边从来都不缺“知道先生”,缺乏的是这种动手实践的人。
深挖和动手实践结合是很高效的学习方法,但我相信大部分人都很难做到这两点。烦杂的工作已经占据了我们大部分的时间,当我们发现陌生技术点的时候,很可能会因为这个功能还能用,没有爆出什么严重的性能问题而直接忽略。
这种习惯会让我们在技术成长的道路上越来越浮躁,总是停留在“会用”的阶段。我的方法是,协调时间,做紧急项排序。当我看到陌生技术点时,如果恰好没有紧急需求,我会适当地放下工作,先把这些技术问题理解透彻,渠道就有很多了,比如阅读源码、官方说明文档或者搜索相关技术论坛等。但如果是陌生技术点带出了陌生的知识面,那就需要规划下学习时间和路线了。
最后,学会分享,践行“费曼学习方法论”。
我发现这样一个现象,只要是我分享过的知识点,我自己会理解地非常深刻,而且经过朋友或者同事的几番提问之后,我对所学习技术边边角角的知识点都能囊括到。这一点我也要感谢一直在专栏中给我留言,和我做技术交流的你,我非常喜欢这样的精进方式,希望你也是。
那么这个现象呢,其实是一个著名的学习方法论——费曼学习方法论。费曼学习方法指出,想象你要将自己学习的内容,教授给一个完全不了解这个知识点的人,教授的内容呢,需要讲解得简单易懂,且这个过程中会不断有问题被提出,你需要重新去认识这些知识点。
我觉得这是个很好的学习方法,技术不是闭门造车,深挖和实践是必要的,但通过分享将自己的所学整理成体系,使理解更加深刻和全面也是必备技能之一。
面对今天日新月异的互联网行业,从我们踏入技术领域那一刻起,就意味着任重道远。希望在未来的我们,都能栉风沐雨,砥砺前行!