软件技术一直处于快速发展阶段,开发技术迭代频繁,新技术层出不穷。
作为一名软件开发人员,我们该如何快速并深入的学习掌握一门新技术,持续保持自己的竞争力?关于技术进阶这里总结出以下几点:
01 整体到细节
就拿阅读一本书举例子,当阅读一本新书时,首先要做的是通过阅读前言和目录,大致了解书中的框架,从中获取到基本信息做到心中有数,再进行整本书的详细阅读。
事实上,这种方法同样适用于学习软件技术。我们在学习某一新技术时,也应先快速地去了解技术的大致情况和侧重点,再仔细深入的研究具体详细内容。
例如,Web前端中的html、Java基础中的JDBC等,这些技术的开发都有一个特点:遵循一定的“套路”。可行性的学习方法应是,最先去快速了解技术的“套路”是什么,然后再深入研究“套路”中的每一步是什么含义和怎样实现的,这样才能保证比较高效地掌握这门技术。
02 快速浏览技术全貌
怎样做到快速了解技术的全貌?
首先通过快速阅读理论知识的方式,快速地、跳跃地查阅资料,浏览下技术的实现流程,具体细节可以通过查阅技术官网、书籍、博客、视频等方式获得,重点寻找那些反复出现的代码,一般重复频率较高的代码就是这个技术的基本代码结构。
03 做到深入学习
具体怎样做到深入学习呢?
通过阅读技术文档等资料,对于一个入门级别的程序可以轻松实现,接着不断地丰富这个入门小程序,并使其最终变成一个丰富的案例库。
通过案例倒逼对理论的理解。案例库的搭建,需要每次只实现一个很小的功能模块,随着持续积累,就可以开发出一个包含各种功能的案例库。
04 保证足够掌握
怎样判断对知识的掌握足够吗?
通过考试可以检验知识的掌握程度,那么我们可借鉴“考试”方法来避免新学知识的快速遗忘。
建议的方式是实践做微服务案例。先用新技术搭建一个个独立的微服务,然后再把由各个不同技术搭建的微服务整合起来。
这样的方式一方面,可以通过动手实际开发的方式来做实际项目,对已掌握的技术进行查漏补缺。在开发这些微服务案例的同时,就会清晰地了解这些技术中的重点和次重点,自己学习时容易遗漏掉的内容,从而可以解决有关于知识足够掌握的问题。
另一方面,这种微服务项目,可以保持我们对所有技术的新鲜度。在搭建的服务过程中,可能是半年前就已实现完成的,但是现在调用就必然会涉及到一些代码的联调工作,在这个联调的过程中,自然而然会对半年前的项目进行一次复习,可以解决“防止遗忘”的问题。
05 技术难点攻克
最后探讨一下,该如何学习难点技术?
难点技术可以分为两类:一类是偏理论型的,一类是偏实战型的。
对于理论型的技术,包括像数据结构和算法、设计模式、以及架构设计等,都是较为难理解的,这些也经常成为初级技术者进阶路上的绊脚石。
如何才能顺利地跨越这些障碍呢?
采用先拆解目标,再集中消化的学习方法。
举个例子,对于算法,设计模式,尽量不要想着花一周或者一个月就把它们彻底搞懂,应先计算一下学习的知识数量,按照难易程度进行排序,从简单的开始学习,逐渐过渡到较难的,然后利用碎片化时间,逐个攻破,这样很容易减轻自己学习上的畏难情绪。当感觉自己对技术内容理解差不多时,再利用一个比较集中的时间彻底消化掉。
那么对于偏实践型的难点技术,因为有些技术必须借助开发工具,来追踪代码或调试才能掌握。最主要的就是在实践前,心里已经对实践内容有了清晰的理论基础,要把动手实践当做一种揭晓谜底的感觉。
考虑到每个人对技术基础的掌握情况不一样,每门技术也有很大的不同,所以不同的人在学习不同技术时,可能会存在个性化差异,但是学习新技术的思路整体是一样的,就是先快速地进行整体阅读,然后再逐步积累,逐步深入,可以说,这是一套不错的较为有体系的方法论。
06 营造学习氛围
注册一个微信公众号或者技术博客,将自己的学习项目部署到云端,开放大家一起访问。
想办法将自己的学习成果分享出来,让大家一起阅读或者说监督你的学习,并且可以通过“留言”功能,与大家互动。
坚持这样做,除了能够营造自学气氛以外,还可以将自己学到的技术沉淀下来,慢慢地,也会吸引一批技术爱好者,提升自己的影响力。
希望大家可以找到适合自己的学习方法,总结出自己学习的流程,简单梳理和回顾。准备项目升级,改进技术,通过快速学习,了解整体流程,接着从入门程序开始,逐步积累案例库,最后案例库搭建完成,自己也在大脑里形成了自己对技术的思维导图。