个人认为,不管你是一个Java开发的新手,还是一个有着多年经验的老手,在学习新技术的时候,都要经历这样的过程:
学习基础的理论知识,也就是对学习的内容要有一个基本的概念;是什么?能解决什么问题?优缺点是什么?
照着别人的代码敲,或者把别人的代码下载下来后运行起来,并通过Debug模式,一步一步地跟踪代码,加深对理论的理解;
等熟练了以后,再根据自己的理解,把代码敲出来;
当遇到问题的时候,反复地去做1/2/3步,不断加深理解,迭代完善自己的代码;
这个时候,对于【是什么?】【能解决什么问题?】【优缺点是什么?】这些问题,应该理解的很透彻了。
比敲代码更佳的学习途径是什么?我们都知道,在学习程序开发的过程中,多敲代码非常重要;看书、看教学视频、听讲座这些都是被动学习,通常被动学习最终留在我们大脑中的知识比较少,大部分都会被慢慢遗忘掉;
敲代码属于主动学习,效果会比以上的途径好很多;
那么有没有比敲代码更好的学些方法呢?当然有!那就是写书、录制教学视频、做讲座;这些看起来都是技术输出,实际上也算作主动学习;当你的技术能力达到了可以做“输出”的水平时,说明你对其细节已经了解地非常透彻了;
学习程序开发如何找资料十多年前我刚开始工作的时候,那时候网上资料比较少;现在学习软件开发,网上可以找到大把的资料,但是有时候资料太多也是个负担,因为我们需要从中筛选出对我们有用的资料。关于如何挑选合适我们的资料,我提几个小建议:
首先,建议大家在学习的时候,最好是查看最原始的资料,而不是被人消化理解过的“二手资料”;比如你要学习Spring Boot的话,最好的资料就是官网的文档,其次才是买一本中文版Spring Boot的书。
第一手的资料大部分都是英文的,不要觉得自己的英文不好看不懂英文文档,【读懂英文文档】,这也是个学习的过程;
枯燥的知识都是大家不感兴趣的知识,因为这些知识我们在学习过程中看不到学习效果,不知道学完了之后有什么用;比如我们学习TCP/IP协议,并不知道它对我们写代码有什么用,因此学习起来感觉枯燥;不过这些枯燥的知识通常都是我们所说的基础知识,你为什么感觉新的技术学习时间长,技术提高慢,就是因为这些基础知识不扎实;这时候,先去找使用场景,找到实际使用的地方,再回来学习理论;带着问题去学习,效果更好;如果有资料能把枯燥的知识用生动的例子讲解出来,尽管它不是“原始资料”,但是对于我们的帮助也是很大的;我刚工作的时候看过一本书《大话设计模式》,让当时的我受益匪浅。
利用碎片化时间学习虽然值得称赞,但是更鼓励抽出完整的时间去学习,最好关闭QQ、微信等一切通讯软件,避免被打扰;
把学习的知识通过笔记、博客等方式记录下来;
对于某些知识,如果能“讲出来”,那么就需要把这些知识了解的非常透彻;这也是我现在做技术分享的主要原因之一。
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。