高薪,让大厂成为一个外界无数从业者憧憬与向往的地方。据 levels.fyi 最新的薪酬报告显示,Meta 的首席工程师薪酬最高,总薪酬中位数高达 978,000 美元。
7 月 20 日,Meta 工程师、React 项目核心人员、Redux 原作者 Dan Abramov 在 Twitter 上连发 15 条推文,以“我感到苦乐参半,几周后我就要辞去 Meta 的工作了”为开场白,官宣了自己即将从这座围城中离开的消息。
15 条推文中蕴藏着些许的无奈,也让人担心 React 这个前端主流框架的未来动向。
今年正值 React 十周年,其在 Web 前端开发中占据主导地位。据 JavaScript 现状调查显示,React 使用率自 2016 年以来稳步攀升,目前稳居第一,使用率已经超过 80%。
今年也是Dan Abramov 在 Meta 工作的第 7 个年头,一直以来,他作为 React 的官方发言人,长期活跃在开发的一线,也被众多开发者亲切地称之为“Dan 神”。
如今突然宣布将要从 Meta 离职,其实并不是 Dan Abramov 刚萌生起来的想法,而是几经心理斗争做下的决定。
Dan Abramov 表示,「在过去的三年里,我一直说我会在“一年左右”的时间离开,但感觉总是没有合适的时机」。
(2)遵循 React 团队的“全栈架构愿景”, 能够看到广泛可用的 Suspense 数据获取集成交付。
“我对是否要早点离开感到犹豫,因为不久前,离开 Meta 就意味着离开 React 团队。那对我来说太悲伤了”,Dan Abramov 说道。
与此同时,Dan Abramov 也表示,如今的 React 已经成为一个多公司项目,团队中也有几位独立工程师可以挑大梁了。
接下来,Dan Abramov 将作为独立工程师留在 React 团队,这也意味着他不会得到任何公司的全职赞助,继续参与团队的工作与相关会议。
对于未来,Dan Abramov 也有些迷茫,因为他也还不清楚其未来参与 React 团队开发的确切性质。
其回忆道,「七年前,当我开始加入 React 团队时,我主要负责编写代码。然而,我的队友在这方面经常比我出色,随着时间的推移,我发现自己倾向于做其他事情」,比如说面向开发者解释一些事情。
不过,Dan Abramov 表示虽然自己全身心地投入到这个项目中,但现在有点力不从心了。他坦言:
我发现现在很难写作了,因为我无法再达到自己头脑中的标准。这可能会随着时间的推移而消失,但我需要从文字写作中休息一下。
有时人们会认为我为 React 写了很多代码,但其实我已经很久没有这么做了。除了合作编写新文档,我在过去几年中的其他贡献主要是社区粘合剂工作:成为社区和团队之间的桥梁。
虽然我很喜欢这类工作,但单靠我一个人的力量是难以为继的,这也给我带来了情绪上的影响。在某些时候,作为一个单点故障点就不再有趣了,我觉得我既辜负了团队,也辜负了社区。
同时,有些遗憾的是,Dan Abramo 表示,「目前,只有两家公司资助员工全职从事 React 工作,但我们希望将来能有来自其他公司的贡献者加入。」
其实对于 Dan Abramov,不少开发者从其分享的开发文档中获益,有开发者表示,作为 Redux 的原作者与 React 社区核心主力,他一直很接“地气”,无论是分享技术文章,还是回答社区的问题,都能够深入浅出地分享。
除了 Dan Abramov 为 React 带来的贡献引人注目,其“逆风翻盘”的成长经历也让人敬佩。
Dan Abramov 真正深入学习 JavaScript 是在十四岁的时候。当时,他的继父向他提出了一个有趣的任务,需要开发一个数据库来跟踪照片拍摄的信息。这个简单的任务让 Dan 陷入了编程的世界,他对此产生了浓厚的兴趣。
不过,Dan 的数学成绩不太好,所以他可以选择与编程有关的选项并不多。从剩下的选项中,Dan 选择了一所向学生提供 MacBook 的大学。
大学第一年结束,Dan 发现接下来两年里,大学课程中不会有太多编程内容,但有很多线性代数、物理和其他科目,他对此不太感兴趣。
与此同时,他在经历偷懒、逃课之后,发现当他参加考试时,老师不允许他交卷,除非交钱给这个老师参加他的“补习班”,这让他对大学的初始印象并不好。
不过,从职业角度来说,也是在这个时候,Dan 找到了人生第一份工作——软件开发者,可以拿到$18k/年的工资。
当暑假过去,大二开学时候,他发现通过工作可以拿到工资,这磨灭让他去学校听课的最后一点动力。最终,他毅然决然地选择了退学。
那时,他的大部分工作是在便宜的外包公司里面修复糟糕的 Bug。由于没有行业经验,Dan 过度使用了各种他能用到的新技术。虽然这样做对于编写项目而言很糟糕,但是他也完美地完成了不少任务。
那段时间,发生了很多令 Dan 终生难忘的事情,比如为一个 13000 行的函数修复 Bug。那时,为了弄清楚它到底是如何工作的,Dan 只能将他们打印出来,将打印出的纸铺在桌上,用铅笔在上面做注释。最终发现,那是同一段程序片段在不同的情况下被重复写了 50 遍。为了探索那个服务在实际产品中如何工作,Dan 添加了无数的输出日志,然后从无到有的重构了一遍这个程序。终于,它不再那么容易崩溃了。
一如现在行业中的外包工作,Dan 经过几个项目下来,感觉备受“折磨”。在坚持了一段时间后,某一天,Dan 在等待公司 HR 上班之后又毅然地选择了辞职。
在失业且辍学的期间,Dan 不断地反思自己,最终也发现自己的编程技术需要提高。偶然间,他在网上看到一篇从硅谷回来的俄国企业家写的文章。这个人正在寻找志愿者参与他的个人项目,作为回报他会免费教授开发技术。
于是,Dan 选择加入了这个项目。结果发现这位企业家提供的教学有限,好在 Dan 与其他志愿者一起努力学习 Git、Python 基础知识、Django,以及一些 CSS 和 JavaScript。
在接下来的一段时间里,Dan 参加了更多的编码课程。2012 年,Dan 从圣彼得堡搬到了莫斯科,开始在一家网络邮资解决方案(软件)公司 Stampsy 工作,拿着$30k/年的工资。
在 Stampsy,Dan 开始开发 iPad 应用程序,并学习如何使用 iOS。他们的应用程序于 2013 年 4 月发布,得到了苹果公司的认可。与此同时,他们也开始在 GitHub 上发布自己的代码,与开发者社区分享他们的成果。
2014 年,Dan 开始接触 React。他们决定将原来的 iPad 应用转换为 Web 应用,这使得 Dan 开始更深入地学习 JavaScript。在同事的推荐下,他尝试了React,并从 Backbone 转换了第一个组件——一个赞按钮。随后的一年里,他们将整个 UI 都转换成了 React,并发布了许多新功能。
鉴于当时 React 周围的生态系统还很小,Dan 希望为 React 做出自己的贡献,并联系了当时的 React 核心团队成员 Paul Oshannessy,询问是否有任何他可以处理的拉取请求。
与此同时,Dan 也开始就 React 技术在各地进行分享演讲,首先是在 Stampsy 的同事面前,然后在 BerlinJS 聚会上。2014 年,Dan 还收到了 Facebook招 聘人员的第一封电子邮件,但由于他没有足够的工作经验,并且之前退学了没有文凭,所以招他到美国进 Facebook 并不容易。
不过,他并没有放弃对 React 的学习与投入。后来,在受邀参加 ReactConf 时,Dan 想带来关于热加载功能的主题演讲,同时,他也在分享中加一些噱头——“时间旅行”。
不过,随着演讲日期即将到来,Dan 仍然不知道到底如何实现“时间旅行”。他知道 Elm 语言有类似的功能,但他也担心自己的研究最终会告诉他这个功能在JavaScript 上可能实现不理想。
在那个时间节点上,市面上流行着非常多 Flux 的函数库。Dan 尝试其中几个,Andrew Clark 开发的 Flummox 让他眼前一亮,他模糊的感觉到与 Flux 结合热加载能够让自己实现时间旅行。Sunil 的 gist 让他有了一个点子:Flux 范例中用一个 reducer 函数取代原有的 store。
最终,赶在这场演示时间的 deadline 前,Dan 实现了 Redux,这是 Flux 模式的一种变体,但具有更简化的功能。
在演讲结束后,他得到了 Flummox(一个受欢迎的Flux库)的开发者Andrew Clark的支持,最终两人一同编写了 Redux。
最终在 Jing Chen 推荐下,Dan通过面试,拿到了 offer,入职了 React Core 团队,也成为唯一在英国远程工作的成员。
面向未来,Dan 表示,「不做“计划”和“目标”,现在正是尝试新事物、重新找回初学者感觉的好时机。我不知道接下来我要做什么。可能会做一些 YouTube,一些咨询。我确实有点渴望编写一些产品代码来应对大公司之外的快速迭代周期。也许我会结合所有这些。我也有点想什么都不做。」
不过,从 Web 框架的角度来看,Meta 允许他们开源项目最著名的推动者之一 Dan 离开,也有人将其解读为,Meta 在为其开源产品融资方面不那么热情了。
如今,在 React 成熟发展之际,Dan 离开,而另一边,Google 仍然在继续维护 Angular 框架的创新、尤雨溪也在发力 Vue,这也为未来前端框架的新格局带来一些不定性。
祝福他。新的 React 文档真是天赐良机。我真希望我一开始就有一个好的起点,而不是原始文档和社区网络功能版本的混杂体。
如果你查看提交历史记录,他已经有一段时间没有参与到 React 的工作中了,这对 React 来说应该不会有太大影响。
这并不是贬低他的重要性,只是因为他担任 React 的代言人有一段时间了,所以有人会认为 React 可能会放缓或发生一些负面的事情。
我祝愿他好运,我无法想象他一定感受到了怎样的压力,我相信这是一个艰难的决定。