当前位置 博文首页 > 三钻 - 之前端到全栈之路:2020 所思、所遇、所学、所悟

    三钻 - 之前端到全栈之路:2020 所思、所遇、所学、所悟

    作者:[db:作者] 时间:2021-06-04 08:17

    同学们好,我是来自 《技术银河》的 💎 三钻

    今年可以说是一个不简单的一年,也是我人生转折点的一年。

    春节期间疫情爆发,导致全世界人心惶惶。感谢世界各地的医生战士和护士天使们的努力,让我们可以从冠状恶魔的手里逃脱出来。

    因为疫情的影响,年后开工时间也被延后了。那段时间有些人很慌张,很焦虑,因为有着房贷、车贷或者其他的经济压力。也有一些人可能很无聊、在家闷得慌。

    而我却在家思考人生,这几年工作中确实有努力工作,但是最后获得的成长倒是越来越少。我想这个可能就是我当前的职业瓶颈吧。

    前半生

    我从专于 PHP 开发开始参与工作,前+后端开发做了 5 年多。过程中待过的公司基本上都是创业型公司,做过技术合伙人、做过开发主管、做过技术总监。因为是创业企业,都是要身兼多职,同时做着前后端开发(也有做过混合 APP)也需要担任产品经理整理业务需求和功能,有时也需要做一个 UI 设计师,边排版边设计页面。

    这个过程确实让我提升了很多不同方面的能力,包括从 0 到 1 独立搭建一个 ERP/CRM 系统。自学了 Angular,使用 Ionic 3 搭建一个混合 APP。我记得当时 npm 根本还没有淘宝镜像,都是靠 “FQ” 下载依赖包和打包的。npm install 执行一次就要 20-40 分钟。

    过程中我进过一家公司,让我接触到了 PHP 方面的各种架构设计,过程中自学了 Elasticsearch、Rabbitmq、Swoole 等架构搭建。通过加入这些,帮助了公司的项目大大提高了性能和业务能力。

    当时的自己觉得应该往后端架构师的方向发展。也至于那段时间专门去学习后端架构方面的知识。

    不过后面因为一个机会,进入到上一家公司担任技术总监。从 0 到 1 组件了一个开发团队(最后搭建了 21 人的团队)。在这里我带领了一班小伙伴从系统接口架构到前端架构搭建了一个自营商城。

    在这个过程中,我又负责后端架构与开发,又负责前端主编程。但是在开发前端的过程我发现自己又重新燃起了我对前端的热爱。

    因为业务功能的需要,我也开发了几套 Vue 组件功能包,并且把这些组件开源了:

    • 活动时间倒计时 - Vue-countdown-timer
    • 固定元素的 directive - vuejs-sticky-directive
    • 头部滑动固定 - vuejs-scroll-fixed-header
    • 图片滑动/放大组件 - vue-photoswipe

    也是这样,我对前端的热爱一发不可收拾。其实我前端一直都有在做,因为做 PHP 开发的后端程序员应该都知道,之前可是没有什么纯后端开发工程师。基本上都是全干工程师。

    所以对 HTML/CSS、JavaScript、Vue、JQuery 等前端技术领域都是比较熟悉和能运用的。

    也可能是因为个人从小就特别热爱画画和对视觉方面的东西特别感兴趣,所以对前端开发这个领域本来就存在着一种天然喜爱。毕竟前端更多的重心是在用户界面、交互、效果等方面,相对比后端特别抽象的功能开发而言,对我个人的喜好来说前端会更容易让我热血沸腾。

    博客之旅

    说到这里,我就要讲讲我是什么时候开始写博客的了。其实写博客这个事情也是一个很奇妙的事情。

    在这么多年的开发过程中,我也一直有写一些个人的技术笔记。但是一直都没有系统化的写过技术的文章和总结。

    但是一直以来都希望自己可以系统化记录自己的学习成果。同时也希望可以分享这些知识给更多同行的同学们,让大家可以在高速发展的技术领域中少踩点坑。

    虽然有这个想法,但是在我之前的公司中,处理工作和每天回到家学习之外基本上时间都是不够用的。所以一直都没有实现我自己这一个愿望。

    但是有一天…

    那一天我在研究 Jenkins 的搭建和部署,在安装的最后遇到一个报错 “Jenkins instance appears to be offline”。对这个报错足足让我在网上找了两天的解决办法,看了很多文章,很多人发出来的解决办法,都无法完美解决这个问题。

    最后在 stackoverflow、CSDN、掘金、思否的所有答案的结合,终于找到一个完美的解决办法,并且是结合了所有的情况。(最后是 CSDN 的一篇文章找找到的思路)。

    就是这样,我经常跟自己说的一句话又冒出来了。“如果我现在不写个文章,那么以后遇到同样的问题,就又要这么折腾一遍了”。当然我一直都有写个人的笔记,但是没有系统化的写,搜索起来还是非常困难的。

    所以我下定了决心,我要写博客,记录日常的学习笔记和知识。但是博客的平台很多,我也不知道在哪里写比较好。(当然也有考虑博客平台的稳定性,毕竟自己的笔记一旦平台哪天没有了,那么就只能哭晕在厕所了。)

    刚好那时候是 2020 年的年初,在 2019 年的结尾的时候,很多博主大佬都写了一些年总结。所以我开始阅读了很多博主们的年总结。这里我要说一句,他/她们的年总结真的让我受益良多。我发现写博客远不只可以记录自己的知识和遇到过的问题,从而让自己有系统化的知识梳理,还可以认识很多一起学习的同学和大佬们。这些人脉和奇妙的关系也触动着他们成长。

    这里特别感谢 Big sai、沉默王二和敖丙,是他们的文章和总结让我找到的写博客的真正意义和力量。

    也就是这样我选择了 CSDN,从这里开始了我的博客生涯。

    像我说的,当时的我希望自己可以分享一下自己在工作中总结出来的经验,包括学习和开发中的一些经验,让更多正在学习或者已经在工作中的开发同学有所收获。所以我头几篇的文章基本都是围绕经验分享类的文章:

    开发者经验分享:

    • 6个高效学习编程的方法
    • 你真的懂怎么写`服务层`吗?
    • 5大法则助你 成为更出色的开发者
    • 用“易于改编”原则,提升编程水平,写出更好的代码
    • 写给想学和在学编程的你们,学习编程的7个好处

    前端知识分享:

    • 带你体验Vue2和Vue3开发组件有什么区别
    • 更优雅的编写JavaScript,使用这些函数秒变大神
    • 前端必看的8个HTML+CSS技巧

    VSCode高级玩家宝典

    • VSCode常用快捷键大全
    • VSCode插件大全
    • VSCode配置同步

    就是这样,我把自己当时比较好的知识存货拿出来写成了文章。奇妙的事情是,当时的我遇上了CSDN 在做很多的推广活动 “原力计划“。通过这些活动,我获得非常大量的流量。有好几篇文章一天就破 5k 的阅读量,对于当时没有任何粉丝的我,已经是非常满足的成果了。当然相对于很多写博客的大佬来说,也就是他们的零头而已。

    不过一路过来很多粉丝在支持我的文章,从而给了我非常大的力量继续写作。同时我也发现我的写作水平也是不足的,我也知道如果我一直写经验分享是会有瓶颈的。毕竟我发现很多同学都是专注于一个领域的文章。

    这个时候的我,对前端的热爱,真的是可以说是热血沸腾的状态。所以我没有想多久,我就决定我要成为一个前端博主。毕竟在我的内心,我是很确定以后我的发展方向必然就是前端这条路。从现在开始累积前端的知识文章就是开启这条路的一把钥匙。

    但是要从何写起呢?这个问题让我在深夜中沉思。突然有一晚上,我突然来了灵感。我自己的前端都是在后端开发的过程中学习的。自然也没有系统化学习过,但是如果要在前端这条路走的长久,基础知识就必须要稳固。

    刚好在这个时候我遇到了 FreeCodeCamp (FCC) 这个平台。所以我就决定在 FCC 上从 0 开始学前端,把所有的基础知识都过一遍。也就是这样我写了一系列的 FCC 教程,虽然最后还没有完成,其中的缘由我后面会细说。

    FCC 教程的文章有以下几篇:

    • 28关学会HTML与HTML5基础
    • 44关学习CSS与CSS3基础「一」
    • 44关学习CSS与CSS3基础「二」

    因为我的博文获得很多关注,可能也是因为持续写作的缘故吧,开始有一些大厂的同学通过我的博客联系到我,邀请我到某宝,某巴巴的面试。

    说实话,进入大厂应该是我们大部分程序员的梦想,我也不例外。虽然我的大学读的是土木工程,但是自从大学我就有自学编程,直到出来工作后转行从业开发。我一直的目标都是希望有能力可以突破自己,进入大厂。

    所以当这个机会突然出现在我面前的时候,我好像终于醒过来了。我一直以来工作中的努力和奋斗,不都是为了有一天可以进入大厂,和更多优秀的开发者们一起工作,一起学习,一起成长吗?

    既然我确定了我要走前端这条路,我也不可能以 PHP 开发工程师进入大厂。虽然我对 Vue、Javascript、HTML/CSS等前端技术都熟悉并且能用来开发项目。但是对于大厂来说,他们还需要稳固的计算机基础。这个是我这种转行的开发者所欠缺的。

    我不希望自己浪费了难得的大厂面试机会。也非常的珍惜这个可以让我突破现在自己职业瓶颈的机会。

    所以我开始去了解大厂前端面试相关的资料,就是这样我参与了 “前端早早聊” 和其他的一些大厂的直播活动。希望可以通过了解更多,知道我距离进入大厂的要求还欠缺那些。我很清楚,查漏补缺是当前自己非常急需要做的事情。

    就是这样我又把自己在这些活动中,学到的知识写成文章分享到博客当中:

    • 阿里、力扣、政采云的15位专家分享前端面试与招聘视角

    就像我在这篇文章中所说的:

    在这次大会中从早上9点半一直到下午6点多结束,大会含金量超高,我此次受益匪浅,屁股坐到起茧都是超级值得的。本次大会一共有15位来源于各大厂公司的高级前端工程师和技术专家,每个讲师都给我带来了精彩绝伦的知识与干货。

    这次大会的内容不只给我的技术生涯中带来了冲劲,让我认知到自己还有很多的不足与未知。同时也让我认知到了优秀的技术人才与团队的能力模型,讲师们有说到他们的经历和三观,引发了我对自己“保安式”的灵魂拷问。

    听完本次大会后,真的让我重新认识了自己,也重新找到了前进方向与目标。最后还收获了许多知识与秘诀。

    就是这样,我认知到自己有一些计算机基础和前端的深度还需要深挖。所以我决定走上前端的重塑知识之路。

    ?? 这里我记录一个里程碑: 2020年5月27日我成功成为了 CSDN 博客专家。从 3月到5月总共坚持写作了 3 个多月成为了博客专家。

    重学前端

    从写博客,到认识大厂前端同学,到更新自己对前端的认知。我开始清晰了解自己的瓶颈。我需要重学一遍前端,重点强化自己前端的底层知识。

    在 “前端早早聊” 的大会中,我了解到进入大厂的面试中,是缺少不了算法的考核。

    我也特别认同 winter 老师说的。所谓算法,其实也可以理解为 “编程能力”。

    不过算法一般都是 “数据结构与算法”,也就是说复杂的数据结构和算法是一起学的。但是对于前端而言,很多高阶的数据结构基本都用不上,但是算法的编程技巧和能力倒是非常需要的。(当然,数据结构也需要有一定的了解和熟悉哦,只学算法并不行哦。)

    很明显,算法是我的重学前端之路中必须修炼之一。这个时候我偶遇到了 “极客大学”,看到了覃超老师的算法课程。所以我开始跟着覃超老师开始学习算法。

    当然,我也把我学习到的知识写成了博客文章分享了出来:

    • 如何高效学习数据结构与算法
    • 分析时间复杂度与空间复杂度
    • 用动图解说数组、链表、跳表原理与实现
    • 力扣实战之移动零、盛最多的水、爬楼梯

    在学习算法的同时,我了解到 winter 老师的 “前端训练营” 的课程。在这之前,我也报了 winter 老师的 “Toy react” 小课程。这个课程给我了一个非常深的感触。

    如果我们想自学前端的底层知识,如果没有一个人带,其实真的非常困难。而如果有一个好的老师系统化的带着我们学习这些知识,那么效果完全就是不一样的。

    所以我大概过了一下 winter 老师的 “前端训练营” 课程内容后,果断就报名了。就这样我就开始了重学前端的第一步。

    当然一开始我是想算法和前端训练营一起学的。但是我发现确实学的会很吃力。而且我是希望自己可以深入的系统化学习一遍前端。加上,我只学习知识,没有任何其他的项目支撑,我觉得这样的学习缺少了很多实战和项目经验。

    所以我不只在重学前端,同时我也继续做开源项目,这个过程中我还做了以下几个开源的项目:

    • Hexo 博客主题:Obsidian
    • Typora 主题:Obsidian
    • Obsidian.md 知识库软件主题:Obsidianite

    Obsidian.md —— 被称为第二大脑: 是一款使用 markdown 文档,本地化的知识库构建软件。它提供了知识库文章的内部链接体系。可以让我们更有效的管理我们的知识,可以把我们碎片化的知识被管理和串联起来。(不知道这是什么可以看看这篇文章 《从卡片链接到大脑联想,基于 Obsidian 的卡片盒笔记法实践》)

    也就是这样,我暂停了《数据结构与算法》的学习,开始全心投入学习《前端训练营》。

    不学不知道,一学吓一跳。一开始进入学习的时候,真的让我叹为观止。Winter 老师带着我们用全新的视角学习前端。很多人可能看了课程的简介觉得,这些都是很简单的底层理论。

    是的,一开始的我也是这么认为的,但是学习了两周之后,我发现其实并非如此。我们所认识的前端并非如此。

    Winter 老师的课程是对标阿里 P6 的水平设计的。里面的理论和实战都是非常独特的内容。在学习的过程中自己被带入了一个全新的角度去学习前端,运用 “追溯” 原则,找到所有前端知识的源头,从源头、从历史开始理解所有的知识。

    当然这个课程中,不只是有很多的前端的知识,还有很多处理问题,解决问题的思路。这些思路正是在我们进入大厂后可能需要的能力。

    在每周提交作业的过程中也发现一个很奇特的现象,每周 github 提交作业的数量,有以线性递减的趋势。从一开始的 100+ 人到了最后第 20 周,仅剩下 20-30 来人。

    其实在开营的当天,Winter 老师的直播中就讲到,前端训练营这个课程一定会让我们觉得非常痛苦的。毕竟一切让我们成长,特别是快速成长的事情,都会伴随着痛苦。

    这里也感谢自己一直坚持到了第 20 周,所有的痛苦都是值得的,毕竟在这个过程中,自己确实学到了不少,也成长了不少。

    当然,感谢 Winter 老师精心设计的课程,同时也感谢我们班的助教老师,在我们学习过程中给予的帮助和答疑。

    最后,我想感叹一下:这个是我人生中最值得深造自己的一次投资。在课程中真的是受益匪浅。

    对,这个课程所有学到的内容,我都写成了文章发布到了博客里面。当然我也是问过 Winter 老师,他的课程内容是否可以写成自己的学习笔记,并且发布到博客里。Winter 老师的答复是:“如果你们能把我的课程吸收了,并且写成好的文章,证明我的课程是有用的,也证明了我的课程的质量。”

    真的,听到这句答复,我心里有些许的感动吧。因为真正强的人,更在乎的是自己的东西是否有给大家带来价值。而我写博客也是一样的初衷,这句话给到我的是一种志同道合的感觉。当然与 Winter 老师相比,我还差很远,但是至少我也是朝着变强的道路上蹦跑,我也想变强!

    虽然前端训练营,也叫《前端进阶》系列的文章目前还在更新中,这个系列会一直更新到完结的。基本上都是每周一篇。

    需要在前端领域进阶的同学欢迎关注学习,如果觉得内容非常好的,还是推荐去跟着 Winter 老师学习的哈。

    《前端进阶》系列:

    • 学习方法
      • 一篇文章搞懂前端学习方法与构建知识体系
    • 浏览器原理
      • 实战中学习浏览器工作原理 — 之 HTTP 请求与解析
      • 实战中学习浏览器工作原理 — HTML 解析与 CSS 计算
      • 实战中学习浏览器工作原理 — 排版与渲染
    • 重学 CSS
      • CSS语法与规则
      • CSS 选择器
      • CSS 排版与正常流
      • CSS flex 排版与动画
    • 重学 JavaScript
      • JavaScript 语言通识
      • JavaScript 类型
      • JavaScript 对象
    • 编程训练(算法)
      • 用 JavaScript 实现一个 TicTacToe 游戏
      • 用 JavaScript 实现寻路算法
      • 使用LL算法构建AST
      • 字典树 —— 字符串分析算法
      • KMP —— 字符串分析算法
      • 用 Proxy 简单实现 Vue 3 的 Reactive
      • 用 Range 实现 CSSOM 精准操作

    个人总结

    一个一线战场中的开发者,回归到学习的学堂中。一开始这个过程确实遇到了挺多困扰的。一开始无法静心下来学习,因为学习底层的知识确实需要静下心来学。但是坚持了一段时间后,又会发现自己会爱上学习,爱上深挖这些知识。

    当我们把这些知识重新投入实战中,就会发现自己有一个截然不同的思维方式和解决问题的思路。

    今年的自己经历了很多,也学了很多。到此为止,我想学的还没有全部完成,Winter 老师的课程的内容我还需要回顾一下。我觉得自己还需要对今年学过的知识做一次全面的总结和沉淀。

    接下来的规划就是学习《数据结构与算法》,同时也需要查漏补缺一些计算机基础相关的知识。然后就可以出去尝试新的机会了。

    最近听了一个月影和 Winter 老师的直播,其中有一个点。我觉得是非常值得深思的。

    很多同学在技术领域里面都应该深有感触的一个点 “技术一直在更新,真的学不下去了”。

    而在直播中他们讲到的一个观点就是,我们需要一直了解新的技术动态,和新的行业动态,但是我们不要只考虑我们需不需要学它们,更多是了解几个点:

    • 他们为什么会出这个东西,
    • 这些东西是用来做什么的,为了解决什么问题
    • 现在项目中能否用到,是否能解决当下的问题

    重点是我们不要为了技术而技术,而是为了解决问题而学一门新技术。我觉得这个很值得我们深思的。很多五花八门的技术,每天都在出来,其实我们以后还会有 Flutter,React,Vue吗?可能也不一定,可能以后有一个出来一统江湖也说不定。

    其实听了老师们的直播之后,我反而觉得,重点不是框架那个以后发展更好,而是了解每个框架为什么存在,当下有什么问题导致有了这些框架,以后可能会有什么问题,可能需要什么东西来解决。

    说到这里很多同学就会问,“那么我们应该往哪个方面发展呢“ ?

    我觉得月影老师说的可以参考:

    ”基础和底层知识,基础和底层知识,基础和底层知识。”

    因为所有框架也好,新技术也好。我们也不确定以后会出来什么,最后谁会一统天下。

    所以重点是我们需要学习,保持可以快速上手任何框架和技术的能力。其实无论是 Vue,React,Angular 还是 Flutter。底层不都是 JavaScript 吗?甚至 Node.js 也是。然后更底层呢?不就是计算机基础知识吗?如果我们这些学通透了,那么以后出来什么各种花样,难道我们不能在一周内学会吗?(可能不能一周内,但是快速上手还是可以的嘛)

    基础知识还有像数学,这些都是永世不会变的知识。而往往这些知识都是我们开发者的基础。而这些基础才是我们真正能适应这个技术高速发展的时代。也是这些基础让我们不会害怕任何的变化。因为我们拥有可以适应任何变化的能力。

    所以我们一起终身学习吧。只有学习才能让我们在这个一直变化的技术领域中茁壮成长,越来越强。

    ?? **对 2021 年的自己,我一定会继续坚持写作,继续坚持学习,继续努力提升自己。找到新的机会,加入一个优秀的团队和大家一起创造价值,一同学习成长。 **

    这一年来,感谢有我的粉丝们一直的陪伴和支持。也感谢这一年来给我开阔了很多眼界和知识的老师们。

    同时这里也感谢有 CSDN给我提供知识分享的平台。平台的工作人员们,你们辛苦了。



    博主开始在B站直播学习,欢迎过来《直播间》一起学习。

    我们在这里互相监督,互相鼓励,互相努力走上人生学习之路,让学习改变我们生活!

    学习的路上,很枯燥,很寂寞,但是希望这样可以给我们彼此带来多一点陪伴,多一点鼓励。我们一起加油吧! (? ?????)?


    我是来自《技术银河》的三钻,一位正在重塑知识的技术人。下期再见。


    推荐专栏

    小伙伴们可以查看或者订阅相关的专栏,从而集中阅读相关知识的文章哦。

    • 📖 《前端进阶》 — 这里包含的文章学习内容需要我们拥有 1-2 年前端开发经验后,选择让自己升级到高级前端工程师的学习内容(这里学习的内容是对应阿里 P6 级别的内容)。

    • 📖 《数据结构与算法》 — 到了如今,如果想成为一个高级开发工程师或者进入大厂,不论岗位是前端、后端还是AI,算法都是重中之重。也无论我们需要进入的公司的岗位是否最后是做算法工程师,前提面试就需要考算法。

    • 📖 《FCC前端集训营》 — 根据FreeCodeCamp的学习课程,一起深入浅出学习前端。稳固前端知识,一起在FreeCodeCamp获得证书

    • 📖 《前端星球》 — 以实战为线索,深入浅出前端多维度的知识点。内含有多方面的前端知识文章,带领不懂前端的童鞋一起学习前端,在前端开发路上童鞋一起燃起心中那团火🔥