【笔者感悟】笔者的学习心得【四】
个人经历
先说个人经历,如果不写的话很多同学看了这篇博客可能会觉得有些奇怪,首先介绍一下,笔者毕业后参加了三次考研,但是很不幸,因为种种原因,三次考研均以全军覆没而告终,因此在找工作前,除了考研的几门专业课,笔者其实在编程方面的能力已经是一片沼泽之地,曾经仅能拿得出手的几门学科也随着时间化为乌有,所以笔者在参加工作前能力可能还远不如在座在上学的同学
因此笔者找工作的时候抱的心态是不破不立,一切从头开始。借用一首歌的内容,昨天所有的荣誉,已变成遥远的回忆。所以很多同学会奇怪,为什么笔者写的很多东西都这么基础,因为笔者并不是在以一个前辈的心态来给大家上课,笔者自己技术也很一般,也要从头开始学习,所以笔者是以一个学生的姿态来和大家讨论
我看到昨天评论区里有同学现在是大三迷茫期,所以笔者看到了对他有帮助,心里也很感慨
同时笔者也提醒大家:
- 如果你现在也处在迷茫期,那么完全不用担心,笔者能够从至暗时刻走出来【三年考研失败加上倒退回零基础,学校也是垫底二本】,你也一定可以,而且作为应届生的你找工作也肯定比笔者优势大得多。
- 如果你现在已经是技术大牛,也请你谅解一下,你也是从新人过来的,谁也别瞧不起谁
问题分析
问题一:做项目什么时候开始
在之前的博客里,笔者已经提到了关于如何把做项目和学技术结合起来,笔者在学技术的时候发现,似乎只是做成一个项目,并不需要太多的技术。就拿Redis来说,几乎是所有面试中的重头戏,但是笔者发现只是为了做一个完整的项目的话,他的作用其实真没多大,毕竟你的个人项目除非刻意制造,否则不可能有这么多访问量要处理。
事实上,就笔者学的仅有的一些基础,已经可以做一个项目出来了。Spring框架笔者不止一次去翻过书了,第一章讲的都是IOC和AOP,当然不是说这两个概念不重要,非常重要,但是作为初学者在项目中直接的体现真的不大。
笔者在之前的博客中也提到,笔者在工作后接了一个前端项目,那个时候前端零基础,花了三个多月的时间学习前端,把项目做出来,很多同学可能会说笔者学习能力很凶悍,自己跟不上,事实上现在笔者回到项目中,如果说把用到了哪些知识点全部写出来,两三篇博客最多了。要做一个完整的项目用到的技术真的不多。从这个角度来说,笔者的学习速度其实只有慢了。
笔者一直期望着能做一个像若依一样的项目,所以曾经也痴迷于学技术,但是笔者发现技术看似学了很多,但是也仅限于知道了,想把这些技术统统堆积到项目里着实是一件短期内做不到的事情。但是技术如果不用到项目里那就毫无意义了
结论:同学们不要把做项目的难度妖魔化,说真的要做一个完整的项目“三脚猫”功夫足够了
问题二:图书管理系统为何难登大雅之堂
关于这个问题笔者是想在面试关卡里介绍,但是现在发现好像放到这里更合适,我想看到这里这个问题的答案大家应该明白了吧,图书管理系统一般是什么时候做的,没错,是大家上了一个学期的课,最后可能作为一个期末作业或者实践周的时候做的。
所以大家容易有一种错觉,我做这个项目用到了一个学期整个学科学到的知识,甚至还有同学认为我用到了更多,用到了数据库Mysql,用到了Vue,这是结合了几门学科做出来的东西,所以技术难度很高。那真的是这样嘛
事实上就拿Mysql举例,同学们回想一下,真的用的是Mysql嘛?同学们回想一下你的代码里除了Mysql和Spring框架的整合,还有select,update,insert,delete这些关键词以外还有别的东西吗?
所以用到的不是mysql,只是mysql中的sql语言,而sql语言只是mysql中的一个单元而已,而且增删改查也只是sql语言的基础,你对于一门学科中的一个单元才刚刚用了基础,结果把这些东西放到简历上,硬说自己精通这门学科,那谁会信呢
结论:图书管理系统从业务上还是技术上用到的都是“三脚猫”功夫,难度较小,因此难登大雅之堂
问题三:做什么项目有用
那从上面一个问题来看,图书管理系统难道一点用都没有,我要追求更高精尖的项目嘛?当然不是,再高精尖不也得从基础做起嘛,不知道同学们平时在玩游戏或者下载软件的时候有没有发现一个东西叫做版本号,事实上往往很多项目如果回退到最早的版本号,他们做的东西也很简单,也是一点点优化的,笔者在此可以给大家举一个跨行的例子,大家可以去B站搜一下中国历代疆域变化系列,目前已经做到了第十三版,大家回到第一版再看看那简直是一堆破烂。
所以这也印证了笔者想做一个类似若依的项目,一开始其实技术栈很简单,随着笔者越学越深,再逐渐把他做大。如果同学们想效仿的话我个人不建议再拿图书管理系统,毕竟这个偏见确实太大了。当然如果作为练习也不是不行,从一个简单的图书管理系统做起,然后添加更多的业务,例如可能喜欢的书籍推荐,人工客服,读书交流会,相似读者匹配等等。。。。
结论:不要一味追求高精尖项目,再复杂的项目都是从基础做起的
问题四:做项目应该如何和学技术结合
那么说了半天,大家肯定期待一个解决方法,其实说到这里我想大家应该已经明白了,如果这个时候你是一个完全零基础的同学,那么建议大家只需要去学好基础技术,然后尝试着做项目,当然如果完全没有基础做项目可能会吃力,这个时候大家可以去尝试着b站搜索一些培训班项目视频,给大家增加点感觉,跟着做完以后,学着自己再从头做,为什么笔者一定要你从头做,因为当你熟悉一个项目的时候,其实你要扩充是很简单的事情,但是之前的很多坑,是别人拉着你走的,你不能简单的认为这是自己的功劳,一定要学着什么帮助都没有的情况下,自己走一遍。如果这个时候走通了,那么可以进入下一个阶段,碎片化地学习技术,这也是笔者一直以来写博客的风格,项目不是一个短期工程,一个复杂的项目,周期可能要个一年半载都是很正常的。同学们碎片化地学习技术,一点点整合到你的项目里去,最后把项目变得复杂度足够高。
当然笔者这里的碎片化不要简单的认为是东打一枪,西打一枪,学习是一个系统化过程,笔者只是希望同学们不要幻想着一锤子买卖,学完一门学科就企图一劳永逸地扔进项目里,项目里用到的任何学科的技术都是一点点碎片化地加进去的,哪怕他们是同一学科
如果同学这个时候有一定基础,那么其实已经可以去做项目了,后续的内容和零基础的同学一样
结论:顺序:学习基础技术——做基础项目——碎片化学习复杂技术整合到项目中
附注
那么今天呢就暂时和大家讨论到这里,希望大家经过一段时间后再回到这里已经做出了一个完整的项目,如果是在校同学,当你成功做出一个完整复杂的项目,你可以把他写到简历上,这是你求职的一大筹码,如果是工作的同学,那么经历过这么一次以后,相信你的技术也会有很大的提升,笔者接下来会更加努力的工作,给大家带来更多的经验分享,希望同学们工作顺利,早日升职加薪、当上总经理、出任CEO、迎娶白富美、走上人生巅峰,想想是不是还有点小激动呢