前端职业规划 - 前端技术专家们的生死书

18,804 阅读12分钟

前言

我写这篇是想引发大家对前端生态系统发展模式的思考, 所以评论前最好先看懂了再说话, 另外关于行业内卷, 有人认为高级岗位不受影响, 技术更替, 只要不停学就可以, 我觉得这种评论很肤浅, 首先内卷才不管你是高级低级, 行业内卷的含义是这个行业无论什么段位的人都会受到影响, 就像卷铺盖一样, 怎么高级岗位是跳蚤能跳到外面去了? 那不就是转行了么. 行业内卷之下, 竞争变得激烈, 相同岗位的门槛变高, 这不是你自己努努力, 可以解决的问题, 就算你是个天才, 内卷之下你也会被磨一磨, 何况天才能有几个?

今天刷沸点摸鱼, 无意中摸到一条让我有写作冲动的鱼

本来想顺手写个评论, 参与下聚众摸鱼, 结果越写越长, 想想还是直接开篇文章吧.

有什么是写文章说不清的呢, 那就再来一篇

正文

前端从有概念开始至今差不多发展了近 10年, 到现在形成了极其庞大的生态系统, 在这 10年中这个生态系统几乎以每 2年的速度在膨胀在重构, 这个过程中诞生了无数的 前端技术专家, 同时又消灭了同样数量的 前端技术专家, 前端的历史堪称一部 前端技术专家们的生死书

回顾历史, 我想言简意赅的来说明前端技术生态系统在这 10年的巨大变迁, 在这个生态系统里, 大致可以分为这样几条发展脉络

  • DOM 操作技术
  • JavaScript 编程技术
  • HTML & CSS
  • 静态资源分析与编译
  • 浏览器运行时
  • 杀进移动端
  • 杀进服务端
  • 杀进客户端
  • 杀进嵌入式
  • 杀进区块链
  • 杀进人工智能
  • 杀进...

其实前端生态是一个杀心挺重的生态, 但是前端这些年杀进去的所以领域都几乎没有占据多少优势, 从职业发展的角度来讲, 除了占据一时风口分享了一些红利, 大部分人几乎不是成了培训班的韭菜, 就是成了被压榨的血汗劳工, 当我们冷静下来, 大前端 光环之下却是一地鸡毛😑... 关于这部分历史, 让我们先从杀进移动端开始讲起.

杀进...

前端生态为了杀进移动端和 Android iOS 工程师们抢饭吃, 可谓是经历了一场又一场的技术变革, 但实际上最早干这个勾当的恰恰是 iOS 工程师, 最早由几个苹果公司的 iOS 工程师从实践中演变而来的开源项目 Cordova, 拉开了前端生态杀进移动端的大幕, 这和 Nodejs 的诞生非常相像, Nodejs 的作者就是 C++ 背景, 还有区块链里的 Dapp, 谷歌的 TensorFlow, 树莓派这类搞 IoT 的, 其实前端生态这些年从来都是被其他生态的优秀工程师引入他们擅长的生态里, 然后就开始一发不可收拾, 但这种辉煌的背后却难掩一个尴尬的事实 杀进去的前端生态从来都没有真正的扎下根来

在移动端, 从 Cordova 到 RN 然后 RN 要重构了, 到最近的 Flutter, 其实 Flutter 已经跟前端没啥关系了, 我不知道为啥 Flutter 还会算在前端或者大前端的头上, 如果说以前我们还能用前端三大件来降低一点移动端开发的门槛, 比如 Cordova 或者 RN 或者 Weex, 但是 Flutter, 从头到尾都是标准的移动端呀, 跟前端有半毛钱关系么...其实纯前端很难开发出合格的移动端应用, 因为大多数前端开发者并没有浏览器环境之外的开发经验,分不清进程和线程,不知道什么是进程间通信,相比同样年限的移动端开发并不占据优势。

移动互联网的繁荣催生了一批杀进移动端生态的前端开发者, 这些人经过几年的磨练成了这方面的技术专家, 比如 Cordova 开发专家, ReactNative 开发专家, Weex 开发专家等等... 什么??, 你没听过这些专家??

你没听过这些专家, 那是正常的, 因为他们在移动端开发热潮降温, Flutter 崛起的背景下消失了, 这也是上面那位摸鱼掘友发出的灵魂拷问, 前端技术经不起时间的考验, 前端技术专家就显得格外短命

热热闹闹的杀进移动端, 好不容易依靠几年经验熬成专家的前端开发者, 正准备接受"大佬"的皇冠, 却突然发现了一个尴尬的事实, 经济放缓, 需求降温, Flutter 另起炉灶, 过去多年经验一朝化为乌有, 想从 0 开始学习 Flutter 却无法和那些应届毕业的年轻后浪们竞争, 这种进退不得的局面那叫一个酸爽 剩下的多年摸鱼经验也不被企业认可

说实话 Flutter 算前端头上, 都让我有种感觉 所谓大前端不过是个垃圾厂, 专收软件研发生态里的试验品和早期产物 于是大前端的学徒们一不小心就成了试验品和收破烂的.

如果前端生态体系依然不做反思, 我相信接下来几年还会有一批 Flutter 技术专家经历生死折磨

说起这个又不得不提 Electron, 也是类似的情况, 眼见 Electron 专家起, Electron 专家落.

说完移动端不得不说另一个广阔的战场 服务端

自从 Nodejs 发布以来, 前端生态系统借助 Nodejs 的能力得到了极大的发展, 但是在服务端, 开发的主要生态还是以 Java 为主, 这么些年过去了, 我们依然要面对为什么要用 Nodejs, Java 和 Nodejs 如何并存等等灵魂拷问. 验证一个生态最好的方式还是看需求, 我相信死磕 Nodejs 当个服务端开发一定能找到工作, 但如果你已经到了那一步, 我觉得你转行 Java 应该前途更光明一些.

这种杀进式的技术广度发展模式, 并没有让前端生态系统在邻接的领域里获得更多的话语权, 或者扎根其中, 反而是带来了 大前端这样一个很笼统的概念, 并且极大的分散了前端开发者们的注意力和精力, 其结果就是

样样都能搞, 样样都不精

没有市场需求, 就没有让工程师持续深入提升和研究的土壤, 在这些领域的前端开发者更多的是充当廉价炮灰, 帮那些不靠谱的创业公司在试错的路上节省成本, 成了小白鼠, 尤其是当前行业内卷, 更是要接受钱少事多离家远, 顺便还陷入内部竞争的惨烈境况.

Flutter 和 Deno 一定程度上在宣告前端生态系统在两个非常重要的邻接领域发展的失败

我对失败的定义是随着 Flutter 和 Deno 的发展, 传统的移动端开发和服务端开发更容易分享这种红利, 在失去了 JavaScript 的加持下, 他们比传统的前端开发者更适合学习这些技术并且拥有更好的背景知识.

如果横向扩展是失败的, 那纵向呢?

让我们把目光收回到前端生态体系内, 重新审视下这些年, 前端生态体系内部都发生了什么样的变化, 可能你会发现在我上面罗列的那些脉络中并没有 React Vue 这些耳熟能详的框架, 作为一个从手工操作 DOM 时代过来的开发者让我告诉你原因

无论是 jQuery 还是 Angular1.0 还是 React Vue, 本质上都是基于 DOM 操作技术的一种发展

拨开React 和 Vue 的华丽外衣,其内核一直都是围绕同一件事,面对日益复杂的业务需求,如何同时保持 DOM 操作的高效和高性能,但换个角度看,这何尝不是 DOM API 本身的问题?

  • 无法高效操作 DOM 读写数据
  • 无法高效操作 DOM 响应用户行为
  • 无法高效操作 DOM 移动变化

随着新一代前端开发逐渐活在被 React 和 Vue 统治的生态里, 他们可能会丧失对这种本质的认知能力, 所以我建议做前端, 红宝书必读, 即便你可能后面永远都用不到 document.getElementByIdaddEventListener

Angular 1.0 的失败其实就是没搞清楚自己的定位, 一个 DOM 操作技术框架妄图染指更复杂的领域, 看 React 和 Vue 就很能摆正自己的位置不是.

我上面提到前端生态系统每 2年会重构自己, 你可能会提出疑问, React , Vue ,Angular 已经超过 2年了吧没有被重构掉呀? 那我只能告诉你, 你太天真了, 事实上 React 15 和 16 就是两个版本你可以看成是 2个东西, 只不过向下兼容而已, 至少你对 15的理解完全不能套在 16上, 同理 Vue2 和 Vue3 能是一个东西么?, 至于 Angular 啧啧, 看着他的版本号我就不说啥了

而且你在 Vue3.0 的 RFC 中应该看到了一个新身影 Svelte, 所以我觉得前端生态完全可以效仿摩尔定律搞个重构定律

我们这帮子搞前端的, 每 2年就要搞死自己人一次

因此就 DOM 操作技术这一条线路, 就已经干掉了不少曾经的技术大佬, 甚至包括 jQuery 的作者

现在还有谁关心 jQuery 的作者么或者那些曾经的核心开发者, 他们可是真-jQuery 专家

但是没用, 该消灭还得消灭, 谁让我们有重构定律呢, 在这条重构定律的魔咒下, 我们可以得到一个有意思的结论

在前端生态这本生死书里, 前端技术专家们活不过 2集

作为一个搞了7年多的前端, 我觉得我可以毫不惭愧的说, 我已经经历了 3次技术专家的生与死, 依然还活着

说完 DOM 我们再来看看越来越不起眼的 HTML & CSS, 这两位是真不起眼啊... 尤其是那些叫喊着 CSS in JS的, 搞 JSX, 说实话 HTML & CSS 可能是前端里最稳定的技术了, 基本你把规范原理搞一遍应该能活好多集, 但是比较惨的一点, HTML & CSS 技术专家确实不会没事就被重构, 但没需求啊

这里不免手动 @张鑫旭

所以 HTML & CSS 作为前端生态系统里难得稳定的技术但是却不受人重视, 现在面试估计连应届都很少问相关的问题了, 其根源在于虽然稳定但是相比 JavaScript 确实过于简单, 在大量成熟的 UI框架的统治下几乎被高度标准化, 从而也就没有了这类技术专家生存的场景.

最后的最后, 静态资源分析与编译与浏览器运行时

其他专家已经被我们消灭的差不多了, 但是还有一类非常典型的技术专家我得提一提, 尤其是里面还有一些代表人物, 那就是浏览器运行时的变迁.

这 10年, 我们经历了从 IE8 到 Chrome 的转换, 在 IE8时代是有不少将精力放在其中的技术专家的, 代表人物就是司徒正美, 这里缅怀下这位同行...默哀🙏

在 IE8 时代, 司徒可以说是兼容 IE8方面的技术专家, 包括他自己开发的阿瓦隆都是以支持 IE8著称, 但是随着浏览器运行时技术的发展, Chrome 的崛起让这种经验逐渐失去价值, 这一波又消灭了一大批 IE8时代的前端技术专家, 有些人超越生死活了下来, 但更多的都消失匿迹了.

至于静态资源分析与编译, 看看 requirejs 就知道了, 可还有相关专家的身影? 包括蚂蚁的玉伯, 我经历了关于 CMD AMD 的讨论, 跟现在 React Vue 粉丝干仗差不多, 不过后面你们也知道了, 这部分成了历史, 是的短短几年就成了历史, 玉伯之后也是靠体验技术成就了自己, 因此这块的技术专家一样短命, 活不过 2集

活不过 2集的前端技术专家尚且如此, 广大的普通开发们又该何去何从

这个问题可以说是对开篇那位掘友提出问题的呼应, 面对现在这种前端的不可持续的职业发展模式, 我们除了不停的学习, 应该沉淀些什么?

我觉得作为前端生态系统中的一员, 这个问题不是某个大佬或者某些人才需要去思考, 而是每个热爱这个生态系统的开发者都应该停下来思考

什么是我们可以沉淀的, 让我们的职业生涯可持续发展的东西, 究竟是什么?

这个答案我也不知道, 但是我给自己找到的方向是 前端架构 因为这种与众不同的思路, 所以有了掘金泥石流的昵称, 我不知道答案, 我只能试着去摸索, 作为算是第二代前端开发, 作为前辈, 我想我也有一点义务给后来者们提供一些思路, 但我很肯定的一点, 在我们热爱的这个前端生态系统里能够沉淀一定不是这些东西

算法

数据结构

面经

面试题

摸鱼技巧

各种不断变化的技术框架和工具以及相关的原理

读源码技巧

心灵鸡汤

本文使用 mdnice 排版