我目前的基本情况是在 SDUTACM 光锥实验室进行 Web 开发,制作过 SDUT Online Judge 2024 年度报告,主要是基于 Vue 的前端项目,现在正在制作 蔚蓝系列赛 Round2.5:崩铁主题赛,是一个基于 React 的前端项目,并且正在准备启动开发 SDUTACM 首页2.0, 基于 Vue 的上层框架 Nuxt, 并打算后续做一些 OJ 相关赛事功能的完善的React + Node 的全栈项目。
可能这篇文章的标题写的是“我的前端学习历程”,但是可悲的是,我的大学前三个学期,和前端开发相关的时间很少,基本上都属于探索阶段,学的比较多也比较杂,最后确定了前端开发这个方向,我大致将我的这三个学期分为两个阶段:迷茫与探索期、决定与尝试期。并且下面我会基于这两个阶段来具体介绍一下我在这两个阶段的一些基本情况。
一、迷茫与探索期
1.1 全新的大学生活
可能对于大多数刚进入大学的同学,对于大学多多少少会带点迷茫,首先就是大学独特的教学模式,和高中大家集中在一个班级里上课差距不小,再一个就是大学有很多的活动和社团,这些较为新鲜的事务,容易引起各位刚刚步入大学新生的探索欲,当然,我也是其中之一。
比较幸运,大学一开始的时候当选了军训负责人,然后顺理成章得成为了班长,随后参加了学生会,和一个校级组织(山东理工大学新闻网程序部),随后便开启了我繁忙的大学生活。可能对于一个刚进入大学的新生来说,最为麻烦的可能是熟悉,我当时虽然当上了班长,但是并没有特别的了解大学,所以一开始整个人就是很忙,东奔西走,不懂得事情太多了,又需要完成,所以也只能加班加点的赶,弥补我的各种无知所新增的工作量,当然班长和学生会的经历,也为我将来搞 Web 并且能坚持下来埋下了小伏笔。
1.2 “繁华”散去
不可否认的是,刚进入大学便选上了班长,并且顺利得加入了各种心仪的组织,这对于一个刚步入大学的新生来说,可以说是“外挂”般的存在,甚至当时都遐想好了将来大学四年和毕业后的场景,那将会是一片光明----真的吗?
当我渐渐适应了大学生活的时候,我难免得会从一种忙碌的状态冷静下来,因为就我现在来看,大学的事情真的没有那么多,就是说天天忙忙不过来的那种状态,基本上是没有的,一开始觉得忙,只是因为有很多东西并不了解,需要花很多额外的时间去适应和了解罢了,当你适应了之后,并且没什么事可做,便会有一种莫名的空虚感,而这种空虚感会让人不由自主的观察外在世界,眼光便会跳出个人世界,聚焦到他人身上。
当我冷静下来的时候,逐渐发现到身边很多人比我优秀很多,学计算机的同学可能多少都能知道 ACM ,当时我身边就有很多同学参加了 ACM 集训队,并且天天忙碌于各种学习新技术和比赛,不单单是 ACM 还有很多的实验室,进入实验室的同学大家都学到了好多东西。而我呢,作为一个计算机专业的班长,计算机压根不了解,算法也不会,真的就是一个计算机小白,凭借着运气得来的班长,和各种学生组织加持起来的外皮,感觉还不错,但是我不由自主得会问我自己,我真的就是一个有能力的人吗?虽然我是班长,但是我好多事情也都没有按时完成,我的行动力还差得远,并且在学习上,我也并不天资聪颖,反而其天天跟着实验室学习的同学,他们无论是什么事情,包括平时完成任务的效率也好,学习也好,都很不错。这时候我才意识到,其实我和我心里的自己还差的远。
1.3 或许该做点什么
当我意识到我和我身边的同学差得远的时候,我就意识到我该采取一些行动来提升自己的内在能力了。可该怎么做我仍旧不知道。
学计算机的同学一开始肯定都是从程序设计学起的,对于这项我之前从来没听说过的名词(对的,在我上大学之前我根本不知道程序是什么玩意)我十分的感兴趣,恰好当时班里有同学在 ACM 集训队,他的程序设计能力很强,我就向他询问了一些学习程序设计的方法,这位同学也非常耐心得解决了我的问题,给我推荐课程和书籍,我也相应的照做了,而这位同学,在以后甚至目前对我的帮助都是无可量化的,说句掏心肺腑的话,在我心目中,他就是我大学最好的老师,这里可能计院的同学也都能猜出来,我之前或多或少也说过,那就是(崔神)。当然在之后我依然会用“那位同学”来代指崔神。
当我开始学习程序设计的时候,我立刻被这项技术所吸引,我几乎废寝忘食得只要有时间我就会去学习程序设计,甚至在当时可能大家更加重视高数和大学英语的时候,我便把所有的精力都集中在了程序设计上,看了时长很长的教程,大概有好几十个小时,并且也做了不少的题目,这对于我后来学习算法和项目开发在代码编写上打下了一个还算好的基础。
再后来,我觉得我不能单单只学程序设计,难道我要学一辈子程序设计基础吗?(这段话大家可能会觉得可笑,但是这正是我当时的状态,因为视野的局限性,导致我很容易对一些事物产生片面的印象)所以我觉得,我要开始拓宽我的视野了。
1.4 迈出探索的第一步
因为我一开始并不知道我要学什么,我适合干什么,所以我会比较容易迷茫,当然这也是由我个人的基本条件所决定的,大家在上面会发现,我的基础不是一般的差,但我又是一个比较胆小的人,我也不会去盲目的就着手一件事情,我总是喜欢各种尝试最终确定自己的选择,所以我感觉我这种人格还挺适合我?
那位同学除了在 ACM 集训队,也是在 物联网 实验室的,一开始并不知道物联网是干什么的,所以我便去各种了解,并且在新生研讨课上,将我获取到的一些信息整理成 PPT 进行了一个课上的小组汇报。我大致知道物联网是偏硬件的,这也是我从来没见过的,所以我便开始尝试,也加入了物联网实验室,学习了 51 单片机。
1.5 艰难得探索
这段时间要说就太多了,但大致和上面所说的差不多,因为我个人的性格在探索时期并没有改变,担忧、焦虑的性格导致我在这段时间走的比较困难,但好在有那位同学的帮助。在我大概学了一个学期的单片机之后,我发现其实我并不是很喜欢学习计算机硬件,比起天天调试电路板,我更喜欢的是那种沉浸式编写代码的感觉,这段时间我也从那位同学的口中知道了更多从来没见过的名词,包括Python爬虫、网络渗透、Linux操作系统,算法等等等等。我也相对应地去学习了一下。
Python 爬虫当时确实是掌握了,并且之后在加入 ACM光锥实验室的时候对我入门也有很大的帮助。
网络渗透没学下去,因为现在看来,网络渗透需要学习的东西依旧很多,对于当时的我来说,放弃也是合理的,但是学习网络渗透给我留下的唯一遗产就是 Linux 操作系统的使用,在学习网络渗透的时候我接触了一些基本的 Linux 命令行指令,并且了解了 Linux 系统是什么以及和 Windows 系统的区别,这在我后来装 Linux 系统(我是直接操作失误刷盘了,没有装双系统)搞 Web 开发带来了极大的便利。
算法的话就是我大一下一直在学习的东西了,各位看这篇文章的 ACMer 大神应该都清楚,这里就不过多赘述了,总之就是很难对我来说,并且虽然我在大一下通过了 ACM 的选拔赛,但是我觉得我并不能胜任一个合格的 ACMer,因为我本身比较笨拙,再加上当时又是班长又是学生会又是校级组织的,特别是学生会,在大一下绝对是很忙的一个时期,我也没有那么多精力去专攻算法了,所以当时没选择进入 ACM 集训队。
这个小节虽然很短,但是涉及到的时间跨度也是相当大,基本上囊括了我从大一上后半段到大一下的整个时期,但是在这里尽量不给大家带来过度的焦虑情绪,所以简单说一下这段时间我主要学了什么,至于我是怎么扛过来的,每个人处理压力的方式都不同,而且这里主要讲述的是我的学习经历,对于如何处理日常生活中的难题貌似也不是特别扣题,而且我的处理方式非常的激进,甚至对我现在的身体健康也造成了一定的影响,简单一句话概括就是“肝”。当然不推荐大家采取这种方式,身体最重要了,我现在是这么认为的。
1.6 前端----解不开的缘分
这里按照我上面的时间线,我应该开启第二部分了,但是我为什么还在第一部分里写呢?主要是这个前端,也就是我目前所追求的这项技术,有点特殊,所以有些想法,想在第一阶段里说明白,对于前端,大一的一整个学年也确实是在探索阶段,真正确定搞前端的是在大二上。
说实话在进入大学选择计算机科学与技术这个专业之前,我是不大想学计科的,当时是想干什么呢,因为我从下开始就是学美术的,所以我一直都对于艺术和设计一直持有一种向往。所以一开始想选数字媒体艺术这个专业,因为可以继续画画,弥补我在高中为了学业而舍弃美术这个遗憾。但是因为家里人都推荐我学计科包括家里人也问了很多已经在大厂就业的一些人,都推荐计科,所以最后也就换了志愿,全报成计科了。
一开始我并不知道有前端这个东西,选择校级组织的时候,我是选择了新闻网,因为一开始对文学确实比较感兴趣,我高中选的科是 物理、化学、政治,而我钟爱政治(这点大家可能确实难以理解,但是确实是爱好hhh)而且最后政治考得也不错,所以就一直对这个有点执念吧,然后我就报了新闻网,后来了解到新闻网还有程序部这个东西,好像和我这个专业很搭边,所以就报了程序部,然后才知道程序部是搞前端的,也就是做网页,这个东西好像和我之前学的美术也沾边我当时这么想,所以我就毅然决然地报了程序部。
虽然是开始解除了前端,但是新闻网程序部培训的内容并不是很多,这是由新闻网程序部的工作量决定的,我们部门只负责写写 HTML 和 CSS 就已经足够了,所以那时候视野还是没有拓展的开。
直到后来从那位同学口中了解到了 JS 这个东西,当然这也是大一下暑假的时候了,之前还一直都在编写 HTML 和 CSS 代码,可以说并不大算是搞前端,因为我觉得前端就应该是:样式 + 逻辑,而我当时缺少了最重要的一个部分:逻辑(JS)。
但是我并不否认我在新闻网学习静态页面开发的经历,因为让我有了很长的时间去打磨我的 CSS 语法,这在我后期做一些 UI 效果的时候很派得上用场。
再加上前面也说过,我本身就是很容易对一些好看的小玩意所吸引,所以在学了 HTML 和 CSS 的时候,我经常会去复刻一些好看的或者有趣的 UI 效果,并且我发现,在我做这些玩意的时候,我并不觉得枯燥,我反而很享受这种做 UI 的过程,所以那个时候,我大概在我心里种下了一个种子,只不过我还没有发现,那就是:前端兴趣的萌芽。
以上是我的第一个迷茫与探索的阶段,可以说在这个阶段,我花费了大量的时间搞了很多和前端不大沾边的事情,但是我并不否认这个阶段,我甚至觉得这个阶段对我来说十分的宝贵,一是我充分得了解了大学生活并且能够适应,第二便是我学习了各种各样的技术,这对于我之后做开发,都成为了一个一个的回旋镖,让我觉得我学的那么多的东西,总归来说没有白费,并且一年的学生工作经历,也让我认识到了许多的同学和学长,我从他们的身上也看到了不少优秀的品质,并且对于我自己的工作能力,也有了不小的提升。
二、决定与尝试期
在经过了长时间的探索与尝试,我还是决定走 Web 开发的道路,因为我本来就比较喜欢前端,所以在 前端、后端和全栈当中毅然决然的选择了前端。
2.1 初遇 SDUTACM Light Cone Laboratory
可能有时候确实是命中注定,一开始并不知道 ACM 当中有光锥实验室这个搞 Web 全栈开发的组织,一次偶然的机会,参加了 ACM 2024 宣讲会,其实那时候第二课堂的分数已经满了,但是我还是想去看看,我现在也说不清楚当时为什么就是想去看看,而且我当时预约二课活动的时候满员了,但是报名时间快截止之前,我看到突然空出来一个位置,所以我就进去听了。在听 ACM 教练介绍了 ACM 集训队获得的众多奖项中,我还了解到 ACM 还有光锥实验室这个实验室,而且还是搞 Web 开发和运维的,所以从那时候开始,我就立志要加入光锥实验室,为了追求我的前端梦想。
在一开始的时候,我并不是很了解走 Web 前端需要学习什么技术,甚至当时我问光锥实验室的学长:“学长,咱们平时开发网页 JS 用得多吗?”(现在看来这是一句非常可笑的话,我也觉得可笑,甚至觉得,这篇文章的作者到底有没有真搞过开发啊,是的这就是我当时的基础。)后来了解到前端不仅仅是样式还有逻辑的时候,我就开始学习 JS ,一开始是看得实验室学长推荐的博客,学习了 JS 的基本语法,然后又学习了 JS 的Web API,体会到了 JS 的强大,甚至感觉到,我之前用 CSS 制作的那些小玩意,就真的只是玩具了,对于 JS 的学习,我觉得,十分好上手,但是 JS 内容又不是很少,甚至有些知识点比如防抖、节流、懒加载,可能一开始的时候根本不知道什么地方能用。
也就是差不多这个时候,大二上的前中期,学长突然把我拉到了光锥实验室的成员群,我当时特别的兴奋,因为我一直梦想加入的光锥实验室竟然这么快就成为了现实。同时我又觉得十分惶恐,因为光锥实验室也是隶属于 ACM,而 ACM, 一直在我心中都是很聪明的同学,而我这个没怎么学过算法,又不是很聪明,一开始确实害怕有点脱 ACM 后腿,所以一开始也是十分的焦虑。但是好在光锥实验室有一套十分优秀的全栈开发入门项目“光之魔法书”。我就打算先跟着这个魔法书走一遍全栈开发的流程。
2.2 死去的回忆突然攻击我
在我做光之魔法书的项目时,我突然发现,魔法书当中很多的东西我之前都学过,包括Git,Python 爬虫,都是我大一的时候学的,所以在推进光之魔法书的时候,我一开始推进的比较快,同时因为有 Python 基本语法和面向对象的基础,所以上手 Python 的后端框架 Flask 也是比较好上手,还算轻松的完成了光之魔法书的前半部分。(虽然当时 Python 环境问题恶心了我两天)
2.3 初识 Vue
其实一开始对于 Vue 这种前端框架,我并不是很了解,因为我以前一直都是基于命令式 UI 的开发流程,而像 Vue 和 React 提供了一种新的声明式 UI 的编程范式让我耳目一新,例如 Vue 提供的插值表达式、v-if、v-for、v-model等指令,可以通过一系列简洁易懂的 API 让我们快速实现我们想要的效果而不是把注意力完全耗费在如何实现它的过程,所以我就特别喜欢学习 Vue 框架,虽然我当时 JS 的基础还不是特别好,但是 Vue 提供了各种简洁的 API 让我实现了很多我之前实现不了的效果。
也是感谢那位同学给我了一个 Vue 的教程,那个教程十分不错,在我一开始上手的时候非常轻松,而且讲的也很不错,这让我在以后细看官方文档的时候舒服很多。只是当时对于组件的理解还是比较浅显,单纯的认为组件只不过是把之前一整个 HTML 给拆分,也就是只有封装性。对于组件更多的东西,包括属性、状态、事件处理、生命周期等,我还是在后期学 React 的时候才彻底的搞明白了。
2.4 魔法书 over!!!!
经过一段时间的学习,我的魔法书项目终于做完了,不仅仅是实现了 UI ,还学到了更多的技术,比如 Vue 框架,Flask 框架和数据库操作,所以我十分珍惜有这么一个机会能学习一套完整的 Web 全栈开发流程,并且还有很多优秀的学长指点迷津,我感觉我十分的幸运,同时我也在鼓励自己这条路可以走下去。大二上刚开始扛着班级的一些任务,带班学长,难度升级的专业课,还有入党等等事宜,我并没有选择放弃,而是坚持下来了,而且我并不觉得这个过程十分的痛苦,而是每天都在做,每天都有收获,这种感觉对我来说是前所未有的,所以更加令我坚定了这条道路。
2.5 SDUT OJ3 2024 年度报告
光之魔法书的项目刚刚完成,还没来得及怎么做总结,实验室的学长跟我说可以让我来试试这个项目,前端,可能对动画的需求有点高,然后我就接下了。
OJ3年度报告是基于 Vue 的,当时正好也是刚学完 Vue ,虽说不是特别的熟练,对于 Vue 当中的一些用法还不是特别的理解,特别是组件化开发的思想,我还仅仅停留在封装这么一个概念上,所以现在回看那段代码有点史。但是也还好,主要还是写样式写的多,因为那些 UI 什么的没有现成的PNG或者SVG,那只能用 CSS 手敲了。
但是这次开发经历也给我带来了不小的收获,我开始留意我的项目目录,因为我在一开始学习 Vue 的时候,并没有一个很好的设计项目目录的意识,导致我在开发的时候一开始并没有个好习惯,所以现在看起来项目目录是比较乱的,但好在代码写的没有那么多 bug ,否则后期上线再调 bug 的时候我不敢想那有多极限。包括在这次项目中我实践了一些 3D 动画效果,和更多的 AJAX 请求,这块我之前是比较薄弱的。
当然项目写的史也和时间有很大关系,那个时候正好考试也多起来了,入党也是一直忙,当时也快开始数据结构的实训项目了,更重要的是临近新年,所以必须要在新年前开发出来,不然拖到年后,就没了2024年度报告的意义,所以在项目上线的前两天没有睡觉,一直在赶代码,当时整个人貌似都已经魔怔了,没有了休息的概念。项目上线当晚,因回宿舍晚了,当时十一点半才出的九教,就没回宿舍,直接出去找了个酒店住,准备项目的上线,其实我还是十分激动的,因为是我的第一个正式上线的项目,虽然还有很多地方不是很完善,但是伴随着跨年钟声和街道上烟花的响起,SDUT OJ3 2024 年度报告正式上线。
2.6 数据结构实训----SDUT新生导游程序
在年度报告上线之后,紧接着就开始和那位同学共同开发数据结构实训的项目,我主要负责的是前端。在开发年度报告的时候,我感受到了 JS 这门语言带来的一个小弊端,就是泛型,它类似于 Python,没有一个严格的类型约束,平时我们用 var、let、const 声明变量,但是并不知道他是什么类型的,而且当时也没有写文档注释的习惯,就导致后期回头修改一些函数的时候,忘记了因该传递什么类型的参数,导致需要从头开始回想我这个函数的实现思路和参数逻辑。随后我就花了一点点时间入门了 TypeScript, 并且在这次数据结构实训的时候使用了 TypeScript。
我们的数据结构实训项目主要是一个图论项目,我使用的是 echarts 图表这么一个第三方库,来绘制有向图,并且通过 echarts 图表的配置项,结合响应式数据,进行实时更新图表的状态。最后和那位同学合力完成了实训报告,并且以一个不错的分数结束了这次新生导航程序。
2.7 归纳整理
在数据结构实训结束的时候,感觉如释重负,既是大二上的结束,也是长时期项目开发的结束,因为 OJ 年度报告结束的时候我并没有立马松懈下来,因为年度报告本身就拖慢了我们小组实训的进度,所以我在开发完年度报告的时候就立马投入到实训项目的开发,可以说是一直没停下来,终于有时间能够停下来整理汇总一下。
首先就是对着官方文档再次学习了 Vue, 主要学习了状态管理 Pinia, 因为前期开发较忙,所以 Vue 当时并没有完全学完,就比如状态管理,之前我去管理组件的一些共享状态,一般都是通过一个 global.js 文件来进行维护的,这种方式有着诸多的弊端,所以就去好好学习了 Pinia。至此我的 Vue 基础才算是彻底的学完了。
再后来我了解到了 CSS 预处理语言 Less。这门语言我为什么要去学呢,因为我前面开发的无论是年度报告,还是数据结构实训,更多的可能是去书写样式,但是 css 就有一个严重的问题就是,一写就会很长,虽然 CSS 也提供了各种的函数和变量,但是并没有 Less 来的简洁直白,Less 甚至可以实现更多的功能,比如可以通过自定义函数递归调用来模拟循环、选择器的继承、Less变量、when not逻辑判断等等 CSS 较难实现的功能,使用 Less 不仅可以简化 CSS 的书写过程,甚至有些需要通过 JS 进行的逻辑判断,在 Less 中就可以实现。当然还有一些 CSS 预处理语言比如 SASS 也是不错的选择。
随后我又去补充了一些 JS 的知识,总之就是各种的补全,因为之前虽然学过,但是因为时间有限也并没有完全学完,所以就跟着网上的教程,看看我哪里还有没掌握的地方,我就跟着补充了一下,然后用 Less 又去制作了数据结构实训项目的首页,这个有些同学之前看我发空间应该也看到过,其实就是用到了 JS 懒加载这样的一个技术。
2.8 充实的寒假
因为我从上大学以来就是一直留校的,所以这次寒假理所应当的也选择了留校。
在刚开始放寒假的时候,实验室的学长来找我说开发一个 ACM 首页2.0,需要用到 Vue 的上层框架 Nuxt 来实现服务端渲染的能力。因为我是喜欢先上网上找教程看一遍然后再对照官方文档去学的,因为我一般直接看官方文档会犯迷糊,所以我就上网找了篇教程,当然那篇教程讲的也比较一般,对于我来说,一开始并不知道服务端渲染 SSR 是个怎么回事,所以学的不是很明白,后来真正了解了 SSR 之后才逐渐清晰。那篇教程又在客户端写服务端代码又在服务端写客户端代码,就导致我一开始学起来非常莫名其妙,以至出现了诸多报错。
在年前留校快结束的时候,那个时候是光学完 Nuxt,并且用 Nuxt 简单搭建了一个个人博客的框架,主要是体会用 Nuxt 进行全栈开发的便利性,使用了 SQLite 这个轻量的关系型数据库。与此同时,实验室另一个学长来找我开发蔚蓝系列赛的UI, 因为 OJ3 的技术栈是 React ,所以春节放假回家的阶段,我就学习了 React,主要学习了 React 类组件。
因为 React 类组件在目前网上并没有发现一个好的教程,而且现在网上一搜基本上都是 React18 之后的版本,都是采用的函数式组件,我本身更倾向于使用类组件,因为我觉得面向对象本身就是对具象世界的抽象表达,而函数可能更侧重的是一种计算思维的封装,所以我一开始就并不大喜欢函数式组件,更喜欢用 OOP 去描述 UI。当时学习的时候是对照着官方文档,因为如果要学类组件,那么一定得看 React17 及其更早的版本,但当我打开官方文档学习的时候才发现 React17 关于类组件的 demo 全部下架,并且还没有中文翻译,点击中文翻译会被重定向到 React 19 的官方文档。但是因为之前学过 Vue ,理解了声明式 UI 的编程范式,所以学习起来也十分的快。
在学习 React 的过程,也更加的理解了组件这个概念,组件所具有的 属性、状态、事件处理、生命周期等等,在React 类组件中体现的十分具体。也让我理解了 Vue 当中的 defineProps 和 defineEmits 为什么要这么来进行父子组件的传值,其实就是为了维持单向数据流。
2.9 启动开发
年后返校就即刻开启了蔚蓝系列赛的开发,并且在开发的过程中,不断的熟悉 React 的一些操作,目前项目也是正在开发中。
前不久之前另一个学长也准备来告诉我 ACM 首页 2.0 的相关事宜,打算最近看看 Nuxt 熟悉一下在蔚蓝系列赛开发完成之后即刻启动 ACM 首页 2.0 的开发。
这便是我到目前为止前端的学习路线,可能多少带点传奇色彩,但是对我来说十分珍贵,以及我在这个阶段所付出了多少,也不好说,这个估计只能自己动手去做去体会了。
三、杂谈
3.1 兴趣很重要!!!!!
如果能看到现在,大家或许对于我的前端学习经历都有一个大致的了解了,而我学的那么多东西,其实并不是枯燥的去学习,大家可能会觉得,“哇!这也太卷了,一下子学了这么多东西”其实我觉得和卷还是有差异的,卷更偏向的是一种无脑的学习状态和扭曲的竞争心理,随意的跟风,人家学啥我就学啥,人家休息的时候,我去学习我就感觉比别人学的更多。其实这种心理本身就很可笑,人家学习的时候你可能都不知道人家学了多少,仅凭内卷心理去学,学不到多少东西的。而兴趣驱动就不一样了,你会专注地学习一些东西,不受外界因素的干扰,学习效率也会事半功倍。当然我是对前端很感兴趣,所以我会一直在做,那么对后端来说也是呀,后端也有各式各样的技术,你能不能做到时刻对这些技术保持热爱并且能持续的学习呢?兴趣还是第一步,如果没有兴趣,那么之后的学习会很难得,建议多去接触,多去了解,找到适合自己的道路。
3.2 摒弃“速胜论”和“悲观论”,准备打“持久战”
读过毛泽东的《论持久战》的同学应该都知道,当时教员为什么选择持久战而不是“亡国论”和“速胜论”。教员分析了当前的国内外形式是敌强我弱,证明了不存在“速胜论”理论存在的物质条件,而我党走的是人民路线,代表了最广大人民群众反侵略的意志,所以我们有动员全国发动全面抗战的内部条件,像“亡国论”这种完全抛弃人的主观能动性,是不具有建设性的理论。
同样的回到我的前端学习路线上,我清楚当时我的基本情况,要学的东西很多(敌强)而我啥也不会且接触时间较晚(我弱),那我该怎么办呢?是速通技术栈,一年的时间成为全栈大佬(速胜论),还是坚持“前端已死”放弃前端(悲观论)?
对于速通技术栈这个东西,我觉得对我而言短期很难实现,因为我就这么一个脑子,想要速通基本上是不可能的,所以我需要更多的时间去学习和实践。这点大家应该也有感触,平时我们上一些文化课的时候,老师库库讲的很快,基本上不给喘息的时间,而平时事情又不少,很难做到及时复习。所以我们期末还是会加班加点的复习和突击,因为学习这种东西,如果不经常练特别是技术相关,很容易就忘了的。
至于前端已死,我觉得不然,真的要用“已死”说的那么绝对吗?好像不对吧,我看过好多学长就业都走的前端呢,怎么能说是已死呢?这句话前一阵子好像被媒体吵得很厉害,前端不好找工作,那别的岗位就很好找了吗?我认为这种论调就是市场在进行资源分配的必然结果,大家在高中学政治必修二《中国特色社会主义市场经济体制》中也学过市场是如何进行资源分配的,这个就不在这里过多赘述,只不过是媒体抓住了前端就业市场资源分配的规律,进行一波宣传和炒作,这确实容易影响对于前端抱有兴趣但不敢坚定学下去的同学。对于这个,我的做法是,持续的学习,市场有其自身的运作规律,那么我们如果想在市场脱颖而出,跳出市场资源分配的周期律,那么我们就需要始终提升自己的竞争力,而不是一味的关注市场导向,就算是这个阶段,前端就业市场好,那么你没学多少东西,放松了自己学习的进度,很容易就会被其他有能力的竞争者刷下去,所以要持续学习始终保持自己的竞争优势,无论是在经济下行压力或上行动力的阶段,你总会脱颖而出。
3.3 实践
我是一个实践派,就在我前面说的我看到好看的 UI 效果都想自己实现一下,学到了一门新技术有想法了就想自己做出点东西来,我其实是一直在实践中学习,这就是马原当中认识论:认识从实践中产生并反作用于实践。在我亲手敲出来代码的时候,我会对这项技术有更加深刻的认知,即使是很久不用忘了,那么这次实践对你产生的印象也是足够的,具体的语法忘了再回头看看就完了,但是基本思想你是已经掌握了的,并且大致的流程你也清楚。所以我觉得学习一门技术最佳的实践应该就是:实践->认识->实践...这样的螺旋式上升的结构,一味的去学习而不动手很难有成效。
3.4 大学的课程
有很多同学觉得大学的课程没用,其实我感觉还是比较有用的,大学的课程可能并不像高中那样,老师教你教透了,你只要上课好好听讲,你的考试就没问题。我感觉大学的课,更像是给你提供了一个指引,就是说在大学四年你应该具备那些技能而不是你一定会具备哪些技能。因为这里面牵扯到很多东西,就我上面所说的认识论,无论怎样你掌握一项技能一定是需要经过实践的,而在大学上课,受很多因素的影响,比如课时数和老师本身的能力限制,不可能在上课的同时一点一点带着你实践,可能更加偏向理论,那么实践的部分就需要自己课下自己去手敲代码去体会和实现一些东西,我认为这是不错的。
而且我也不认为有些技术是通过旷课来学习这样的方式代表你很有能力,这本身比较片面,一个人的能力是具有多重指标的,就好比你平时开发能力很强,我觉得你应该是个很强的人,但是你开发能力又强,课程理论课的学习成绩还好,那我觉得你一定是一个学习能力很强的人了,所以正确看待大学课程对自己的学习能力提升我觉得也是会有帮助的。
以上就是我从大一开始到大二上的学习前端的心路历程,主要是为了给自己一个总结和交代。同时也希望我的学弟看到了这篇文章了解了我的大学经历,能多多少少从中攫取点收获吧,但也不一定就是说完全照做。因为我自始至终就是以个人的视角进行的内心独白,并没有总结什么大的规律,但是我认为的多去动手做,这个应该还是挺适配大部分情况的,即使现在迷茫也没问题,只要你在路上了,就别怕路远。
🔗 相关链接
zhuanlan.zhihu.com
