• 作者:老汪软件技巧
  • 发表时间:2024-11-22 07:03
  • 浏览量:

有同学问, 该如何规划学习

我最近几年一直在当面试官, 特别又到一年校招季了。 面试了挺多校招同学, 他们之中, 不少同学面试结束了之后会问, 该如何规划自己的前端学习。

我一般遇到这个问题的时候, 也都会反问, 他们是怎么学习前端基础知识的。

有看B站跟着视频学习的, 有看慕课网的, 有看书的, 也有参加学校一些相关项目学习的, 等等都有。 特别是关于看视频学习的同学, 发现都有一个共同的特点, 就是跟着视频敲, 啥都会, 离开视频之后, 就一脸懵逼。

基于自己的思考, 分享一下自己这些年来的学习经验。 所以才有了这样一个文章, 主要是总结我工作 9 年以来, 怎么去快速学习互联网新知识, 并且快速投入到应用中去。算是给大家提供一些不一样的思考思路。

爱折腾的我这几年是怎么学习的

在下 16 年毕业, 实际上 15 年的时候, 就已经在开始接触实习了。 我是一个非常爱折腾的人。 读书的时候, 学习的是 Java web , 实习的时候是使用 C# 去嵌入式驱动开发, 毕业的时候,因为不满实习工作方向冷门, 毅然辞职做起了前端。

在前端工作的这几年, 也折腾过很多奇怪的内容, 比如:

我的学习历程

先说说我的学习经历的几个过程。

我最开始学习是读书的时候, 那个时候是 12-16 年, 那个时候网络资料没有现在这么多, 主要就是靠自己去看书。 这个过程是效率非常低的。

15-17 年这个期间主要是看视频为主,那个时间段互联网课程视频已经逐渐初具规模了。

17-18 年这个期间, 是我技术上有一个比较大的飞跃的时间段。 这段时间, 我学习知识的方式, 还是通过看书, 但是不同的是, 这段时间, 将很多看书里面的内容,落到了公司实践里面去。 如果没有办法落到公司实践的, 我都会自己做些个人项目来巩固所学的知识。

举一个例子, 比如我学习 D3 的时候, 那个时候买的书是 D3 v3 版本, 但是当时 D3 已经是 v5 版本的了。3 版本和 5版本有非常大的区别, 所以我就按照书上的内容和代码示例, 自己由去结合 D3 的官网,将书上的 3 版本的所有代码都用 5 版本的D3 实现了一遍, 而且都会加上自己的理解和注释。 这一下子将自己的学习效率拉高了好几个档次。

19 年之后, 工作难度逐步变大。 比如我做过大规模团队完整的 CICD 建设、过跨团队组件库建设、复杂场景的配置化驱动等;在工作中, 我也逐渐总结了现在的知识体系学习方法, 因为我工作的内容很多都不是我一来就会的内容, 但是工作属性又要求我需要要快速学习, 并且能够实际应用,而且还要对外提供输出, 让大家都理解用起来。

为了应对工作难度和自己对知识学习的渴望。 我就逐渐沉淀了一套自己的快速学习的方法。

【自顶而下】的学习方法,让我这几年学技术无往而不利

好了, 前面啰嗦了那么多终于走到了正题。

首先什么是「自顶而下」的学习方法。 这个是来自于《麦肯锡战略化结构思维》这本书。

举一个例子哈。 比如让我们去给一个病人看病, 我们肯定是不行的, 因为我们没有一系列的医疗基础知识;比如让我们去做财务预算,也肯定是不行的, 因为没有任何财务相关知识。

大多数人,无论是大学生涯, 还是工作生涯, 学习都是一个【自下而上】的过程。

比如我们学习编码, 大多数都是从:

最基础的编程语法 --> 标准库 api --> 再到一些简单的demo --> 复杂的demo --> 具备解决实际问题的基础能力 --> 达到工作要求 --> 找到匹配能力的工作 --> 解决工作中的问题 --> 自己能力提升 --> 解决更加复杂的问题

「自顶而下」的学习方法, 让我这几年学技术无往而不利_「自顶而下」的学习方法, 让我这几年学技术无往而不利_

上面就是一个典型的【自下而上】的学习过程。

很多应届生同学们, 无论是看书, 还是看视频大多数都是采用上面的一个流程。 包括很多同学学习一门新的编程语言, 也都是上面的流程。

这样的流程好处是知识体系比较扎实, 坏处就是学习见效慢,应用能力薄弱, 容易遗忘。 遇到复杂问题容易望而生畏。

与之相对应的就是【自上而下】的学习方式

还是以学习编码的举例子。 我在学习 golang 的时候, 就完全没有按照这种方式来学习, 我是只用了2个小时, 熟悉了一下 golang 的特点。 然后就开始自立了一个商城的项目, 做好最初的产品规划之后, 就直接开始撸代码了。

这个期间, 遇到了很多的问题。 比如

应对这些实际中的问题, 就会去一个劲的去搜索解决办法, 想办法在自己的项目里面去解决。

然后就牵扯出了一系列的基础知识

这个里面是环环相扣的。 比如别的先不说, 但是我要启动这个项目,一定要涉及到 golang 的模块化, golang 的项目配置;那么自然就牵扯出了底层的基础知识:goRoot、 go mod、项目运行部署等、yaml 配置、logger 等基础问题;

这个才是快速学习整个 golang 知识体系最快最好的办法。

大家有没有发现, 这个案例中, 学习 golang 的时候, 我们是先通过做一个项目作为切入点, 然后逐步的向下, 到一个功能点的实现, 最后牵扯出一大片的基础知识。 这样学习基础知识牢固又不容易忘记。

该方式用于任何编码知识的学习其实都适用

比如我要学习 react , 只需要看看 react 官网最基础的介绍,能把项目启动起来, 然后就去实现一个 TODO List , 不懂就搜索!立马就能牵扯出 react-router、react hooks、state 等等一系列的基础知识。

而且到了 24 年, 各种基于对话的 ChatGPT 已经非常强大了, 其实在学习一门技术的时候, 前中期的问题, 基本上任何不懂的都可以交给 ChatGPT 来咨询。

很多同学会说, 我没有好的点子该怎么办

其实这个事儿就太好办了。 如果有思路的同学, 可以根据自己的思路, 简单设计一个产品, 不需要设计的多完美,甚至什么项目都不重要,只需要这个产品设计能让你 coding 起来就完事儿。

如果还是一点儿思路都没有, 那其实也简单, 网上 github/gitee 上项目那么多, 随便找一个简单的项目, 将他的实现复刻一遍。 我这儿说的复刻一遍, 是要照着别人的实现, 自己 coding 一遍, 同时加入自己的一些思考和理解哟。 不是跟着复制粘贴, 那就没有任何意义了。 在这个过程中, 逐渐去体会语法、设计思路。

我在 18 年体会到了用 「D3 v5 重写了 D3 v3 示例」的甜头。 在 19 年的时候, 用 node 重写过很多代码和工具,后来又在 21 年用 golang 再次重写。都让我收获颇多。

最后祝大家都能掌握对自己有利的学习方法,技术学习也能无往而不利