建立一份自己的技术图谱

May 12, 2022

前言

  • 前端技术纷杂,需要学习和掌握的知识有很多,知识点与知识点之间如果没有任何关联,那就很难去记忆,就像散落在各处的树叶,每次拾起才会记起,丢下后又好像根本没有拾起过。
  • 对于程序员来说,大部分人每次找工作都要准备很久,有很多工作中根本用不到的八股文及算法需要掌握,有时候虽然工作环境不如自己所愿,但是因为换工作的成本实在是很高,也懒得去换工作。
  • 一年过去了,自己白天工作,晚上自学,自己以为自己学到了很多,但其实跟别人出去讲时发现磕磕绊绊,也没法很容易的讲清楚一个知识点,感觉有很多东西能谈但是好像每个点谈的都不多。
  • 2021 年互联网整体形势不好,互联网公司很多部门都有裁员的措施,对于突然的工作变动如果我们还需要准备一两个月才能有把握找到自己青睐的公司时,也会给自己造成很大的压力

破局

互联网技术日新月异,大量新技术层出不穷,在这种环境下我们想要不被淘汰也只能不断学习,但新技术的出现都是建立在已有技术的基础上的。好比一棵大树,根茎就是基础,枝叶就是一个一个的技术点,没有深厚粗壮的根茎是无法承载过多的枝叶的,因此我们想要在这种环境下生存,第一步就是夯实基础

接下来,我们就有了个这个支点,我们之后的一切都应该是围绕这个支点进行学习,当我们学习一项技术时,我们要想几个问题:我为什么要学习这个技术?这个东西用我现在所掌握的技术可以实现吗?这个东西我该如何使用它?我们的目的是尽量让叶子长到我们的枝干上,而不是散落在地上,所以我们需要为新技术找到与我们掌握的技术的连接点。

连接点可能不只有一个,连接点越多代表你对这个知识掌握的越深越全面,也代表你会记得更牢。那怎样增加连接点呢?

我们都知道,编程是一门实践性学科,我们了解一项技术后,需要不断实践才能掌握它。可是有人会问,去哪反复实践技术点呢?答案就是工作。工作其实是最好的学习环境,可能很多人会觉得工作大部分情况下是业务的堆砌,没有一点技术可言。所以白天工作时就是快速的堆砌代码完成业务,到了晚上或者周末去学习自己喜欢的知识。我之前也是这种想法并且也是这样去做的,但是这样做有很大的问题:首先,自己会觉得工作枯燥无味,没什么成就感,其次,大部分时间其实还是在工作,自学的知识学完因为并没有特别多的实践场景,很快就会忘掉。而且自学时大部分情况下是没有目标和截止时间的,到最后可能也没留下什么成果或者甚至就学了一半就去看别的去了。所以看似忙碌学习了一年,可能最后什么都讲不出来。

反观工作,工作中有清晰的业务目标与截止时间,我们很明确的知道我们要在什么时间段内做完什么。我们之所以会觉得他无聊,可能是真的无聊(…好吧我承认有些东西确实很无聊。),但其实很大一部分原因可能是自己思考不够。实现业务目标所用的技术往往是一个又一个的点,我们在使用到这个技术时,我们要多想想,这个技术是如何实现的,别人都是怎么用的,我还能不能写的更好,与其相关的技术是什么。我们有了上面这么多问题后,我们的自学时间就完全可以围绕上述的问题展开。

举个小例子,你可能每次做业务都用到了 redux,那你知道 redux 是如何实现的,别人都是怎么用 redux 的,你们现在这个项目使用 redux 有什么问题,如果用 mobx 来写会不会更好,甚至说我自己写个状态管理库会不会更好呢,自己工作的项目可是天然的练手项目,你完全可以 checkout 一个分支出来验证你的想法,如果你有什么收获,完全也可以应用到你现有的项目中,这样你的项目或许就有了面试官想听的亮点。

因此怎样增加连接点也就不言而喻,那就是以你业务技术目标为方向,利用工作环境反复对技术点进行实践。如果你对于日常工作都能有上述的思考和行动的话,你的简历也会非常好写,面试官也知道该怎么问你,可能八股文就会少问许多,转而去和你探讨你的项目中实现的精彩的地方。