1前文回顾
上次说完了理论部分,注意,这里所说的是最基本的理论部分,再往后我们还会接触到更多类型的理论,并且这也取决于你所选择的研究方向,像这里我们始终讨论的都是软件开发方向,而硬件(例嵌入式)是另外的方向,虽然本质是相通的,但研究的核心重点很长一段时间(至少半年到一年)会完全不一样。
这次我们来浅看实战部分,这里需要注意的是,虽说这些东西最后你都会知道的,但这个阶段我们只需要选择一门——至少众所周知的常用的——后端语言搭配前端,这里因为上文的缘故,小编和Java死磕了很长一段时间,也会主提Java,在后续语言的通用基础知识很可能就会默认都知道而跳过一些,但不代表你就必须选择和我一样的道路,最好的选择是目的倒推选择,先确定你这个阶段最想达到的目标,再倒推怎么实现最好,例如有些人的需求就是当下一个月急需开发一个小软件满足自己的日常需求,那么实现这个软件就是最重要的而不是纠结于我要用什么语言来实现它,而有些人的需求是我或许有几个月的时间来满足就业的需求,那么这个时候你就该考虑实际就业该如何更好的准备,根据你搜索到的招聘信息以及你当下实际接收能力来选择编程语言。
2你要做字典吗
在刚接触入门知识的时候小心一个误区,因为这个时候你基本兴致高昂+知识并没有那么晦涩,你很容易陷入狂热状态,想着我一定要做到完美,但这种本质是提前透支你精力的行为长期来看你很容易在一段时间后(有个东西叫20小时定律,但我觉得人类很容易掉以轻心,10小时20小时30小时以此类推,都很容易会进入到一个心态濒临崩溃的界限)就进入到不应期,以及由于知识点开始交缠、恶心你,甚至会在这个时候选择放弃,因此这里有几点偷懒人的小建议:
-
1.笔记:怎么省心怎么来
-
(1)如果是跟的机构课,成熟些的机构会准备好成套资料,多为讲师课件的完整文档+源码+PPT,下载之后该复制复制该截图截图,能节省一点笔记的时间,缺点在于这部分源码很多是当前课程已经做完后的文档,而跟做的文档基本上没有。因此我会加选热心网友的博客文档,这里第一优选是博客园,这网站最爽的是不限制你复制粘贴,像某网站你不动用点小技巧复制粘贴还限制仅会员登陆后可使用,以及博客园有很多大神,一些晦涩难懂的知识点可能就有大神恰好写了一篇“浅析”,此外是跟你天涯共此时的网友的听课笔记,真心在学的网友经常会在原有基础上增添自己的心得可以辅助理解,且基本上都有从0到1的源码部分(跟做),但完整文档可能不全,因此两者可以互补。
-
(2)关于自己做的笔记,坚守以下原则:
-
1)不以全为主,但一定要自己能看懂,标准是用小白的视角去重读笔记,判断是不是表达了逻辑的内容且通俗易懂而非东一点西一点的神秘符号,不要当时觉得“我已经完全理解了根本不想做一点笔记,哎点到即止就行了”。最好在这一点上保持悲观,你觉得完全理解了很大程度有可能是因为瞬时记忆有50%原因是因为这几天/数十天一直在重复所以你有印象,而过了三个月五个月之后呢?大脑会果断把你不常用的记忆放进回收站并全部清除,这个时候你再看全是神秘符号的笔记,很可能还要重新回去补课从头再来,这是得不偿失的,而且由于中断一段时间,很可能找不到磨合的感觉,然后心态崩溃。
-
2)图像是好文明,但不要滥用,图片最佳使用是用来描述一些结构关系,一目了然,复习时有时候看图也能一下想起来对应知识,但对于图片喜好型的人来说图片过多反而会干涉判断,不要把优势变劣势,因此能用文字的不用截图,能写源码的地方不用图片,图片做到精简化、有效化。
-
3)最终配置:API文档/参考经典书籍/官方资料(覆盖面全面,现成字典)+自己的笔记(成体系、深入理解、薄弱点攻克)
-
-
-
2.课程:拒绝专偶制
-
(1)对讲师:认准老师但不要认准机构,如果你遇到一个好老师且伊带你走完了全部阶段是一种理想状态,可遇而不可求,更多的情况是某个老师在某个阶段讲得更有启发性而在其它阶段会显得稍弱一点。
-
(2)对课程:一个阶段的课程很可能只看一家的讲解依旧会有看不懂的地方,我反正是经常会全网寻找各种切入角度的讲解来辅以解释,建议做好每个阶段都要看两套课程/书的准备,并且有倾向性的,第一套不求全尽量听精简主讲核心的,第二套倾向于看内容覆盖面更广泛的。
-
1)理由:这样看第一套的时候不至于时长过长心态过早崩溃,而且脑子里会先对核心内容留下一点印象(只要一点点就很好),看第二套的时候因为核心内容是重点所以必然会反复提到,可以起到复习的作用,而且每个创作者/老师的切入点都会有所不同,比硬撑着反复看一个人的发言要好,大脑就是这样运作的需要各种不一样的刺激,如果一个人那里死都听不懂的,不去吸收其它人的切入点,反复看十遍也大概率看不懂,不要听有些人说的第一遍听不懂就看第二遍第三遍,而应该是第一遍听不懂就赶紧找另外一个人听听说法,另一个人也听不懂就再找下一个人听听说法。此外,第二套覆盖面广可以起到知识补全的作用,且听第二套的时候因为你有第一套的基础,整体效率和速度也会上升,心理压力会更小。
-
2)实操:如何判断选择是第一套还是第二套课程,主要看时长,超过100h的且只讲了一个阶段(例如JavaSE,都没到Web部分)果断认为归于第二套课程;其次看课程安排,有些机构/书喜欢串讲/推陈出新,但新不一定等于能和前序课程无缝衔接,有时候反而需要有前置课程(已被淘汰的各种技术)的铺垫才能串起来。其实唯一的办法只有试听,花1-2小时甚至更多一点的时间用脑子判断是否能接受,无法接受的可以丢到第二套/弃用,不要听人说好或是不好来进行判断,别人的好或者不好是基于对方的基础,和你的情况大多不一样,只听自己大脑给出的反馈,大脑说好就是好,大脑说不好就是不好,尊重大脑。
-
3)别太死板:这里只是建议,不是说真必须看两套或两套+,一切的需求都建立在,在给定的时间内,脑子能不能接受那么多信息,以及能接受多少信息,如果第一遍完全融会贯通了,没必要死磕细节非要给自己加课,赶紧进入下一阶段,尽快走入做项目的阶段,再多的理论知识最终都要化作实际的项目成果。(注,理论阶段做的项目其实不是项目而是案例,不要走弯路在还没走到框架阶段就想着做项目,基础阶段是无法做完整项目或者说非要靠最原始原生的代码搓项目效率低且没必要)
-
-
3半路出家的行动策略v0.99
3.1前端
3.1.1熊的简述环节
前端的路径相对比较统一而且没什么争论,HTML+CSS+JS三件套,再进阶框架简化一切。而代码之外更注重的其实是美学的部分,所以为什么都是推荐设计师想转行就做前端。前端和后端能够“分离”其实是人为的,因为理论上来说一个人不应该做那么多事 (不是从人文关怀角度而更多其实是从规避一个员工掌握太多公司信息从而公司被拿捏的角度以及可以以你的工作又不难为借口合理克扣你工资降薪穿小鞋等) ……
3.1.2通用路线
第一部分是最基础的阶段,知道三大件大概是能做什么,能学会扒一个博客网站。注意不是做而是能简单看懂别人在做什么。
第二部分,接触框架,前端工程化——人话即框架简化一切,Vue简化JS,Web技术进阶Ajax,以及七七八八的像是Element、React之类的,学到了自然就懂了。如果是纯前端路线我了解不多,但看到一些机构给出的参考路线会涉及到微信小程序之类的。
3.2后端
3.2.1说在这之前的话
现在国内市面上最火爆的毋庸置疑是JAVA,它有一套相对成熟的路线,但缺点是人真的太多了,多到你会JAVA不是优势你不会JAVA可能会是劣势,加上人一多想法就多,于是你就要学越来越多的东西……此外说得比较多的肯定是C++,Python,如果做游戏那就是C#,以及新兴又讨论得比较多的语言GO,关于语言排名可以带着相关关键词在搜索引擎上查找,关于语言的好与坏其实语言诞生之初都有其相对专攻的用途,如果是从打工角度其实不如打开招聘软件做参考,这也是为什么不会推荐新兴但没有人用的语言,因 为 没 有 人 用。
搜索引擎一搜能看到有不少做语言市场占比率排名变化的网站,像是TIOBE指数,对应中文版(我并不知道这是否是官方的)TIOBE指数中文,这些趋势也可以作为你起初选择一门语言的参考,以及这些分析语言使用趋势的网站也很爱进一步分析语言使用人数变化背后的原因,像是C#的使用背后很大原因是……游戏市场。
3.2.2JAVA
熊的简述环节
不夸张的说差点被JAVA折磨死。JAVA至少在钟的一个特点就是很“厚重”,大部头的那种厚重,尤其是相较于其它语言学的人多,于是它本来不该干的活也压在了它身上……可能的优点是JAVA作为热门语言之一它的语法比较规范——你也可以说它死板。
阴差阳错之下我开始鼓捣JAVA,结合后知后觉的开悟浅说一下整个JAVA的学习——甚至可以说所有语言的学习,其实就两部分,一个是基础语法一个是框架(即模板),中间有很长一段时间都会在框架上挣扎,因为JAVA这个语言吧,人类需求越来越大框架也在不断推出新品,像近年常提到的框架是【springboot】,而【springboot】也不是一蹴而就的,是各种框架一路迭代上来的,所以不出意外也会出现再过几年这个框架也逐步退出直播间。
通用路线
JAVA的课程随便一搜就会发现非常之多然后每个人都说这是最新技术我们必须要学哇不然落后就失业,但其实不是所有的都该你现在去接触,要明白什么课程它的作用到底是什么,每个课程不要白学。本来听理论就很烦了,结果听完发现用不上不是更烦吗。
最简单的话来说,JAVA核心学习一共分为三大部分。
-
(1)第一部分统称JavaSE,包括【JAVA基础】【网络编程】【MYSQL】以及一些可选项。
-
短话长说:首先是【JAVA基础(也会有课程名叫JAVASE)】,这部分学完基本语法、面向对象、异常处理(概念部分知道是啥)、数据结构(概念部分知道是啥)、常用类(含IO流)这五大模块,进入到【网络编程】知道啥是编程意义的网络通信,进入到存数据的【MYSQL】,这是放相对永久数据的地方。到这里,理论上第一部分就完结了,你就可以写出最最最基础的小项目像是菜单之类的,但这个时候东西都是在本地运行的,很多信息甚至只能在控制台上看。而这个时候也可以给自己加塞一点【GUI编程】,这个时候能学到图形界面,是为之后的框架做准备。有很多很多课程会把【多线程】【注解反射】内容加塞在JAVASE的基本语法部分,但反正这阶段我没听懂因为我不知道这玩意为什么出现又是为了解决什么问题,而且这些实质上也是为之后联网(Web)做准备,可以扔到后面再来补,而且学到某个位置的时候你就会清楚知道是该补的时候。
-
小提示:第一部分最好以学懂核心知识为主,精品课最好,不要太深究“覆盖面广”,核心知识学完立马往下走,往下深入不了了再往回倒,这样效率更高——不然学无止境,本来我们就是力求几个月、小几年时间学完人类史上百年的知识,已经是浓缩版了——而且印象更深刻,例如我现在跟你说多态说IO流可能脑子里顶多一个概念,但接下来跟实际业务挂钩就会更深刻理解“噢这个概念原来是这样用,因为使用者有XX需求所以出现了它,它的出现有它必然的原因”。
-
小贴士:学完JavaSE的部分你再去看其它语言例如C系家族、Python等等,会发现“一通百通”,即基础部分大家都有自己的特点,但也有共性。
-
-
(2)第二部分统称JavaEE,荣幸迎来框架,包括【JavaWeb】→【ssm(Spring框架、SpringMVC框架、MyBatis框架)】→【springboot】外加【前端(部分)】以及第一部分的多退少补(尖叫吧小小人类!)。
-
短话长说:因为要联网了,所以先告诉你在Java中联网怎么做到的,即【JavaWeb】。关于开始框架学习的部分富有争议,因为框架不断地推陈出新,旧框架有些是彻底退出直播间有些是新框架的前身,像是JavaWeb里的一些东西在SSM出现后被“淘汰”了,SSM已经被springboot“淘汰”了(用引号是因为有些不是真的淘汰而是精简了),建议根据自己的接受度来,从框架诞生的顺序来说,也即常规的教学流程是【JavaWeb】→【ssm(Spring框架、SpringMVC框架、MyBatis框架)】→【springboot】,但实际上,也有人可以直接接受【springboot】的逻辑所以可以倒着学即【javaweb的层概念(因为这是业务概念还是需要先了解)】→【springboot】→【ssm】→【JavaWeb】。
-
查漏补缺时间:在第二部分里出现很多新名词,没关系,先接受,而重复三次之后还是觉得难以理解的,有可能就说明前置知识出现漏洞才导致新名词完全无法理解,这个时候我们就采取“退一步”策略,哪里有缺漏就往哪个方向补课,例如在第二部分我发现自己关于流的部分一知半解对于常用类更是闻所未闻,这个时候我就回到JavaSE针对性的来补这两部分,并尽量找到那种覆盖面广时长更长的参考书文档/视频教程,因为覆盖面广此时相当于字典目录页,而且你此时有一定基础知识铺垫,查漏补缺效果会更好。
-
你逃它追的补课时间:在第二部分会间接或直接指向第一部分跳过而现在需要直面的课程例如【多线程】【注解反射】【并发编程】【数据结构】【JVM】,以及要实际开发一段时间才懂为什么会出现这种思想的【设计模式】。以及第二部分会牵扯到前端的部分学习,也是从【三件套(基础)到前端框架们】,但和专门的前端课程有区别,属于你要知道这是什么。
-
-
(3)第三部分进入业务模拟,做项目,做大项目。
-
没有什么比做项目进步更快,以及应当逐渐理解到一个大系统能运行起来比做到完美更重要(事实上完美是一种美好的期盼),而且实际程序开发的工作,简历上也需要你有做过项目来支持,有项目不一定能过面试,但没有项目,你都写不出来简历。
-
市面上这部分的项目多为商业类项目为主,例如外卖、点评、电商,一方面是普适性更强另一方面单位自用的系统各有各的需求以及一些保密性,关于项目的选择也是一个争议点,太大众不行太小众也不行,重点是能加入自己特色,关于这点可以看看网友的侃侃而谈,面试是个侃侃而谈你知我知都在说假话的吹牛过程。
-
逻辑上来说只要你会用【springboot】就可以开始做项目了,但如果没有办法适应或者说虽然跟着做都能做出来,但是一关掉教程就两眼一摸黑,脑子里全无想法一团浆糊,那就说明前面两部分肯定是哪一步出现问题,请往前补课。
-
在做项目的期间又衍生出需求,需求推动技术进步,因此又要直面【Linux操作系统】【微服务】等等。
-
熊的废话记录弯路版
小编在Java这里真的吃了很多苦,感觉有说的必要,因此这里可能会罗列一些痛苦的记忆,来说明一下走过的弯路……
上回书说到,由于小编是真从0开始的,于是小编最终定下了“快速应试恶补基础,和实操代码打配合”的初步计划,但由于现实原因,经历了如下崩溃叠加事件:你无法无视工作的破事破人对大脑的摧残+小编的大脑应对应试模块实在很灾难+小编的洋文基础和精神状态不太支持全英文教学,洋文课配合中文翻译但五感缺一感的情况对小编大脑接受能力是降维打击+一心三用很难小编的大脑CPU是单核的,于是最终结果就是,听应试考试备考课→遇见听不懂的地方→崩溃→听网友说的洋文课质量远胜中文去找洋文课→洋文听不懂大脑无法处理→崩溃→回到中文课另找讲解→大量男味→崩溃→绝望的练英文→一天算下来没那么多时间但你又给自己规划是一天3小时→英语没练出来编程进度停滞甚至还全面倒退→崩溃→第一次考试擦边分数意思是差3分→大崩溃→工作加压→崩溃→全线崩溃。
期间一个印象最深刻的是应试部分听到【设计模式】的时候完全是大脑蒙雾的状态,折腾了一个月到处找书找视频看,理论意义各种小例子好像懂了甚至记住了,但代码部分没懂,但【设计模式】最重要的恰恰是代码部分。以及你代码不学到那个阶段你其实很难理解这个模式出现在编程角度来说是怎样的一种思想进步、懒虫精神,但那个时候就是死磕理论,硬记,真背下来一部分,但到代码就开始听天由命,然后又因为时间越来越紧张根本没时间补代码知识,然后就开始恶性循环,以及除了设计模式其实有很多地方如果有基本代码基础就会丝滑很多,软设真没那么多需要死记硬背的东西。
从以上的教训可以看到,人要有自知之明的意思其实是说,在给定的时间内,你最好根据意外情况大概发生的比例、你自身的真实情况和客观的可使用时间来规划一个相对适合你的路线,而不是去找那个最完美的路线,以及,都编程了,不要怕代码。
屋漏偏逢连夜雨,在第一次没过之后,第二次没有调整心态,还在回避代码,最终导致花了钱但我心里越想越虚结果直接旷考了,白白浪费大一百。后来痛定思痛,发狠发狂,该刷题刷题,该看代码看代码(这个时候代码基础课断断续续历经一年终于看完了,龟兔赛跑这块),第三次考,差点交出满分答卷,但心情只感觉有点荒谬,毕竟这种应试东西目标及格就够用了。至此,长达一年(其实好像一年多)的理论基础部分,告一段落。
然后开始在代码部分挣扎了。
其实在理论阶段就挣扎了,只是备考应试考试的时候忙着烦心应试没时间管这边。以及因为是断断续续的,有时候三五天不看,然后去玩游戏了,偶尔看个几分钟根本找不回状态的,其实从记忆规律上来说吃亏很大,一是最好一次性连续性的完成一个阶段,这样你的记忆是相对整体化的,而不是一堆碎片每次还要拼接,二是间隔的时间太久又不是每天浸在编程环境里,除了畏惧心理,大脑会“亲切”地帮你开启回收站模式“不用的东西上转转清一清,家里干净多了”,这个时候你唯一的期望就剩下原来的笔记,而我在笔记阶段又犯下了傲慢之罪,可想而知。
回到具体的每个折磨,SE基础部分因为多线程、流的部分听得懂又不懂的,心里又急想着只想快点推进度到做项目,就能跳过的跳过能加速的使劲加速,然后加速到Javaweb的时候开始吃恶果了,听不懂,完全听不懂,只能靠背,意识到这一点的时候我就知道肯定不对了,编程绝对不是一个死记硬背的东西以及你绝对不可能靠完全的死记硬背来解决——至少我的大脑不允许,所以就暂停了一段时间开始想是哪一环节出了问题,还是说我大脑小脑真的出问题了测下智商吧,就开始挖,依旧先从到处找各种网友的解释科普试图看懂,看着看着因为有些概念不停地提及,但我却不明白为什么大家好像都默认该知道这个的样子,于是我得出结论,是之前漏洞太大了,在这里暴露问题了,有些东西不能跳,要回去补课了。
然后就开始补SE部分的漏,中间吃了很多屎,但终于,感觉,来点感觉了,至少不是懵懵懂懂了,继续往下走,走到SSM(一代框架)又卡住了。不信邪想着那我就先去看springboot(二代框架),想着万一呢,结果没有万一。都听不懂,但这个时候我觉得不是我的问题了,我质疑自己的浓度已经够高了,而且记教训了一边骂自己一边补笔记,所以有理由觉得不是我的问题,于是开始质疑讲师,换了很多书很多课程很多网友碎碎念,终于,好像又来点感觉了,然后直到现在还是时不时重复:对吗?对的对的……不对。对吗?对的对的……不对。对吗?这个循环。
期间由于崩溃想着让Java去死吧,换到其它语言,但发现有些折磨的地方绕不过去大家都一样,兜兜转转又回到跟Java死扛,评价为虐恋。
,(由于小编熊在项目这个阶段还暂时没有什么别的能说的,因此就在这里先打个逗号……)
4参考资料
视频参考资料:
(编程领域真的很多男讲师,这对我这个小众爱好者来说感觉是非常遗憾的,欢迎向熊推荐女讲师非第一性讲师)
(需要注意的可能是每个讲师有自己的习惯,尤其是现在喜欢一整套一整套课的卖,因此如果跟了多个讲师,知识点可能并不是完全的)
-
Java从零基础到做项目(钟东北女讲师赵珊珊,在bilibili有自己的账号叫“珊珊不爱唱歌”,稍微有个问题是整体的课程模块链接性不大且不能算完整,可以作为哪里不懂找哪里的补充)
-
HTML5完整教学通俗易懂(钟男讲师,课程可能稍微有点旧了是2020年的但知识点应该没啥大变化,有一整套的课程,这部分算是因为JAVA而需要了解前端,因此讲得算是基础层面但用得比较多的东西)
-
CSS3最新教程快速入门通俗易懂(钟男讲师,课程可能稍微有点旧了是2020年的但知识点应该没啥大变化,有一整套的课程,这部分算是因为JAVA而需要了解前端,因此讲得算是基础层面但用得比较多的东西)
-
JavaScript最新教程通俗易懂(钟男讲师,课程可能稍微有点旧了是2020年的但知识点应该没啥大变化,有一整套的课程,这部分算是因为JAVA而需要了解前端,因此讲得算是基础层面但用得比较多的东西)
文字参考资料:
-
官方文档,官方文档对我来说更像字典很适合自查,但不太适合刚接触的适合就看,就像你会教人中文的时候让伊背字典吗那你得是多恨伊呀,字典是工具书不是教辅捏。