个人经历
首先讲一些个人经历,笔者在学校里学习Spring项目的时候,基本上都是老师照着书念PPT,然后演示一些有限的课堂案例,笔者印象很深刻,学校里整个Spring项目也就做了6个课堂练习,而且难度基本上属于连接上数据库就算成功,现在看来很简单的事情,不知道当初为啥搞得这么辛苦
不怕大家笑话,虽然笔者在学校里的成绩尚可,但是笔者直到拿到学位证书的时候,还说不清楚maven依赖是什么,在工作的时候才逐渐了解很多内容,后来必须反复思考到底出了啥问题
后来笔者在工作的时候笔者接了一个从头开发的Vue项目,由于公司急着要,没有时间慢慢像在学校里学了,只能边学边做
笔者接项目的时候Vue零基础,前端基础也是除了div几个标签和一些常用的style就啥也不会了,以前前端基本都是靠复制粘贴的,也不怕大家笑话我,笔者到工作才知道前端的三驾马车这种说法【Html+Css+JavaScript】
经过三个多月的硬啃,说实话我自己都不知道自己咋过来的,最难熬的时候心态都崩了,直接向公司请了三天假休息
笔者现在对Vue已经有了一个初步的入门,也能和公司的干了几年的前端进行一些基础的交流,但是有趣的是笔者从头到尾没有看过一本书,上过一节课
分析解读
结合个人经历,笔者在学校里的时候大部分时间都是对着书本在啃,读着老师的PPT,谈到实践除了课后作业和课设其实对实战做的就很有限了
其实笔者后来发现,最好的学习技术的方案是什么,就是不停地敲,敲着敲着很多事情自然也就记住了
但是做项目我们终究是在面向CSDN编程,学到的知识终究都是碎片化的,既然是知识,我们是不可能绕开知识体系。
但是如果要注重体系的那一定不是做项目,而是读书或者上课,但是笔者自问上课的时候也是专心听讲的学生,而且笔者大学经历比较丰富,无论是培训班,还是学校上课都是参加过的,也很难简单地对比出应该选择谁,但是上课的效果并不是很好,那么笔者自然不可能把责任都推给老师无能,有时候笔者也问自己难道我不适合上课吗,那么既然要追求知识体系,笔者就去翻阅了不少书籍
后来发现好多书学习起来也非常痛苦,知识点整合不起来,笔者在看书的时候发现,书上的内容往往像一堆零件,要合体成为一个完整的项目对笔者来说实在是很痛苦,基本上第一章都是扯一大堆某某技术的发展历程,但对于需要做项目了解这些意义真不大,但是对搞心态来说作用确实是挺大的
而且从做项目的角度来说如果企图靠读书的方法真的是一件很痛苦的事情,笔者更喜欢直接的干货,相信很多同学也和笔者一样,即我问一个问题,直接告诉我答案,而不是我问一个问题给我一大堆书,说答案就在里面,你找吧,往往你学了几十页,项目里某个需求也就用到几页甚至几行而已,你可能不知不觉中用上了都不知道这是哪个知识点
最让笔者头痛的就是,一个项目,即便是最基础的也要用到好几种技术组合起来,就拿最简单的图书管理系统来说,Spring+SpringMVC+MyBatis+Mysql+HTML+CSS+JavaScript,就这一个涉及到的学科就要六七个
所以对笔者来说,即便做一个最简单的图书管理系统,要读的书就要好几本,读完了也做不出项目来,而且有些技术学科分类并不是很清楚,笔者曾经尝试过把所有的技术都分开,后来发现在同一类项目中,技术结合的紧密程度是不一样的,像Spring和MyBatis结合比较紧密【翻译过来就是非常常见】,虽然理论上行得通,但是笔者很少见到只用MyBatis不用Spring,因此MyBatis这种一般不会单独写一本书介绍,其实像Hibernate,Mybatis他们的分类名叫关系映射框架,但是笔者个人确实没见过基本单独讲关系映射框架的,即便有也一定是和WEB应用框架【Spring】一起讲,但是像Spring和Mysql的结合就比较松散,因为对于Spring来说换数据库可以用oracle,db2,能连上就行了,因此单纯地把所有的学科分开其实没啥意义
得出结论
那么从上面的情况来看,既然不是老师的问题,那更不可能是书本的问题,毕竟大部分能够写书的都是大牛,那一定是笔者学习的方法有问题,但是笔者在个人经历中有一点是比较明确的,理论和实践必须要相结合
后来经过笔者的对自身经历的和各种想法的总结,想出了一个理论结合实际的看起来有点蠢的办法,那就是一叶知秋的方法,那就是笔者在做一个完整的项目时,一定会先知道某个单元中的某个知识点,例如在学习vue的时候一定会接触到v-bind指令,然后通过这一个点,辐射到一块知识点,例如vue中的常见指令还有v-model,v-bind,v-if / v-else,v-show,v-for,v-on,v-text,v-html,v-pre,v-cloak,v-once
那就是笔者同样会在该系列做一个项目,随着系列往后,内容也会逐渐完整,我们伴随着项目完整性的升高逐渐辐射所有的知识点,在做项目的时候给和大家讨论技术的完整性,当然有些技术可能不太可能或者不太适合在同一个项目中同时出现,例如不可能又使用Hibernate,又使用Mybatis,这方面没有关系,我们配合版本管理神器【Git】,代码可以多版本,也可以回退
博客改进
因此,笔者也决定对博客进行改进,以后的博客都会串联到某个项目中,因此会有三部分组成
需求描述:即要实现什么需求
需求实现:这里不会有任何知识点讲解,只是单纯地介绍,怎么实现这个需求
学习要点:接下来会针对在需求实现中用到的首次出现的技术进行辐射,就好比上面提到的用一个v-bind辐射到v-model,v-bind,v-if / v-else,v-show,v-for,v-on,v-text,v-html,v-pre,v-cloak,v-once
问题解答
Q1:你的方法是碎片化还是系统化
很多同学看到这里还是会发现笔者在碎片化学习,甚至很多同学会质疑这样学习知识点是乱序的,顺序逻辑啥的和书上的不一样,是的确实不一样,但是学习编程在笔者眼里看来一大忌讳就是当书呆子,只要会就行,没必要死板的非和书上的知识点一模一样,而且,你不可能学完所有的知识点,光一个Java语言就够你学一辈子了,难道一辈子就不学数据库了吗
而且请问同学们,我们何时学过一门学科的所有知识点,就拿数学来说,乘法小九九是大家小学就学的,早的同学可能一年级甚至幼儿园还没识几个字就学了,那么请问乘法小九九在数学这门学科的第几章有谁能回答我嘛?肯定没有
在笔者眼里看来,这是积木化思维,借用《小学问》上的一段话,很多同学现在的理念拼图化思维,拼图大家一定都玩过,只要少一块,大家就会很焦虑,所以大家要转换一下思维
那么积木化是什么,大家玩积木有没有苛求过所有的积木都要用上,是的你从来没有,有的时候光两块积木就能拼出一堆花样来,就像笔者上面提到的乘法小九九,难道离开了其他知识点它就没用了吗,那怎么可能,平时它的作用大了去了
记住所有的知识点一个U盘就够了,那么人脑用来干啥,相信大家是不是有点感觉过来了
Q2:那么在这种情况下体系是否就不重要了
不,非常重要,体系不是让你照搬书上的抄,而是随着你学得越来越多以后,自己根据自己的理解,总结出一套自己的体系,很多同学佩服写书的人,但是你按照笔者这种做法,是不是你学到一定地步,总结一下体系,你某种程度上也有资格写书了
Q3:之前的博客会做修改吗
是的,一定会修改,正如博主一直在摘要中反复强调的,博客推行版本更新,成果积累制度,已经写过的博客还会再次更新,不断地琢磨,高质量高数量都是要追求的,工匠精神是学习必不可少的精神,在笔者眼里看来,如果说学习计算机第二大忌讳是当书呆子,那么第一大忌讳就是墨守成规,学习技术一定要求变
Q4:有些像计算机网络一样没有项目的怎么办
这点大家不用担心,笔者也是有强迫症的人,不可能让任何一篇博客没有合集,只是在笔者这种设计下,有些博客就会有两个合集,有些只有一个合集,但是理论上即便是计算机网络也会有在项目中实现,但是这个对于笔者来说还停留在空想阶段,笔者终究只是个计算机的小学生,需要不断地探索和完善,这也给大家提个醒,不要把笔者的话当万能钥匙,可能笔者很多话在大牛眼里都是很幼稚的发言,因此大家要敢于质疑,欢迎我们一起讨论