从外包到React核心团队成员

前端桃园

共 10858字,需浏览 22分钟

 ·

2020-08-19 18:44

作者 Dan Abramov,Redux作者,React Core Team成员

转载并翻译自Dan的博客,已获得Dan授权

10年前,我还是一个大一新生。那年我17,没有工作,没有圈子,还是个前端小白。

而现在,你正在看我的博文,对此我非常自豪。

每个人的故事都是独一无二的。我非常幸运的出生在一个中产家庭,长了一张“程序员”的脸。

可能我们的境遇天差地别,但是希望你能与我的程序员经历产生一些共鸣,或者至少觉得有趣。

2010 失恋了,但是有了第一份工作

我出生于俄罗斯,并一直生活在那直到2019年完成高中学业。

在俄罗斯,只要你考试合格,大学学业是免费的。当时我特别想进一所经常在编程大赛中有学生获奖的大学。

可惜我数学不太好,如果我想做与编程相关的事情,就没有太多的选择余地。

于是我从可选学校中选择了一所给学生配备苹果电脑的大学。

到2010年夏天,我上完了大一。学校不怎么教编程相关课程。相反,却会有很多代数,物理和其他我不是特别感兴趣的课。

开始还行,后来我就没啥兴趣了,而且我不想早起去上这些课。

对于一些我比较拿手的课程,也是挫折满满。我们的英语课很基础,于是我和老师商量不去上课。

但当我参加考试时,老师却不允许我交卷,除非我交钱给这个老师参加他的“补习班”。

这段经历让我开始对高等教育系统充满怀疑与不满。

与此同时,我的初恋也黄了。

到现在,我对大一唯一记忆只剩下焦虑和那种自己是个loser的感觉。

好在,我得到了我的第一份程序员工作!

我们大学边上有个被叫做叫做“商业孵化器”(提醒下,这不是硅谷的那类商业孵化器—而是俄罗斯版的)的小场地,用于举办各类会议活动。

我真是不清楚他们会“孵化”什么类型的商业项目。

但是,他们接办了一场关于软件开发的会议。在当时我还不认识任何程序员,也不知道行业大会的存在。所以我对这些内容很感兴趣,就去看了看。

我已经记不清当时讲的内容是什么了。但我记得那个发言的人是一家跨国(俄罗斯-美国)外包公司的高管。

我从12岁开始编程,所以我主动询问他们是否雇人。他给我一个邮箱地址,我做了些面试题,几周之后我得到了那份工作。

2010年夏天,我开始了第一份工作。

我的工资是$18k/年(是的,是18,不是180)。

如果以发达国家来看,是在是低。但是,再一次的,这里是俄罗斯——所以房租什么的也很便宜。

我立刻搬离了我妈的公寓,并租下了月租$150的房间。我超级激动,用我的第一次工资买了一个iPhone,我很惊讶它的UI是如此的美丽。

夏天来又去,我的大学二年级开始了。这一年大学里少了我的身影。

我开始了全职工作,不再去上课,不再参加期中考试,甚至还弄丢了苹果电脑。我唯一再去学校的时候,只是去取我的论文。

PS:我不是说大学毫无价值,或者你应该辍学。那只是我的选择,并且我知道如果事情不顺利我可能会重新回到我妈那里住。

因为我的背景(很早接触编程),我很享受那种看起来与生俱来很能干的感觉。其他没有这样背景的人通常都会学一个学位才能积累足够的能力进入这个行业。


2011 失业了

我大部分工作是给外包公司的程序修bug。由于没有行业经验,我过度使用了各种我能用到的新技术。

甚至将Microsoft Research projects用在最终的产品上。为此我感到抱歉,但我也做了一些很不错的事情。

在我第一份工作中,我出过一次差。我们有个客户是一个位于纽约的投资集团。虽然我到现在还是不怎么懂投资,但基本上来说,当时的需求是:他们有个电子邮件系统接受订单,这些订单都要经过不同级别的批准。

他们有个程序来管这件事,但是这个程序写的很糟糕,没人真正知道他到底怎么工作的。我的工作就是在那家公司呆了一个月,修复这个程序。

这个程序是个廉价的外包公司写的。九年过去了,我仍然能够记起他的名字。

令人最为难忘的是那个13000行的函数。为了弄清楚它到底是如何工作的。我只能将他们打印出来,将打印出的纸铺在桌上,用铅笔在上头注释上。

最终我发现,那是同一段程序片段在不同的情况下被重复写了50遍。我猜写程序的人一定是按程序的行数来领工资。

为了探索那个服务在实际产品中如何工作,我添加了无数的输出日志,然后从无到有的重构了一遍这个程序。终于,它不再那么容易崩溃了。

与一个非技术公司合作是很不容易的。比如,我不能在不写修改文档的情况下去修复一个bug。而且修改文档必须有那个公司IT部门的签字。到了这一步,还会有一些代码审查。

出差的结尾,我去了一家酒吧待到半夜。原定第二天早上九点我得给客户汇报一个月的工作成绩。结果,我下午一点才睡醒。我既痛苦又尴尬的回了家。

我回到了圣彼得堡,那里夏天的天空永远不会黑。

在一个探寻灵魂的夜晚,带着模糊不清的不安感,我徘徊在一个个酒吧之间。

大约到凌晨7点,我头顶上的一个灯泡熄灭了。我吃了一个shawarma,带上一个赛百味去了公司,等待HR上班后辞掉了工作。

一个朋友邀请我一起去克里米亚旅游(在它被吞并之前)。我带了一个帐篷和一个充一次电能用一周的诺基亚手机就上路了。

我们在没保护的情况下搭帐篷睡了两周。在那种迷迷糊糊的精神状态下,除了下面两件事,我不记得其他事了:

有一次,有人用刀子威胁会杀掉我,但是第二天他就消失了,一切重归平常。

另一次,我独自在悬崖边游泳差点溺水身亡。最终我爬到一个湖中间的石头上,直觉上我趴在石头上晕过去了一小时。

对我来说,这次旅行就像一次硬重启。我被治愈了,并再一次为写程序做好了准备。(PS:我可没说你必须以濒死为代价来自愈自己)

现在唯一的问题是:我的编程技术需要提高!

我只写过桌面应用程序。如今还有谁听说过桌面应用程序?他们早就不存在了。现在要么做后端,要么做移动端,要么做前端。

我完全不了解这些,而且我还是失业状态,于是我只能搬回家跟我妈住(谢谢你,老妈!)

不久之后,我在网上看到一篇从硅谷回来的俄国人写的文章。他正在寻找志愿者参与他的个人项目,作为回报他会免费教授开发技术。在那个时候,这对我而言是个非常不错的买卖。

我加入了项目,但是很快发现其中根本没有真正的教学:我们只是得到了一些网上的教程。实际上我们只是相互学习。

幸运的是,我可以承担这份工作的花销,因为我跟我妈住一起。

我学会了GitPython基础,Django,一点点CSSJavaScript,还有一点点Bash用于发布我的更改。

Web你好,我来了!

九年后,我仍不确定我应该如何看待这段经历。

一方面我们免费为他的个人项目工作。另一方面,我们在项目中有root权限,可以随意将我们的更改发布上线。这确实非常令人激动,而且我可以从错误中学习到知识。

我从中找到了学习的方向,并且它没有花我一分钱,我还能随时走人。并且由于有教育的意义,这些项目还附加了些社交价值。这使我想到了开源软件。

这个人架设了“bootcamp”且成为我的导师,我至今还是非常感谢他。

PS:我不是暗示免费给人打工是个锻炼自己的好方法。我只是在叙述我的故事。

我制作了一个dashboard程序来追踪我们每个人的学习进度。我的导师建议我可以把它打包做成产品卖给其它经营网络课程的公司。

我的创业经历有些丢人,我给别人演示我自己都不知道是什么的项目。

最终,我实现了一个框架,基于这个框架我帮不同的用户定制网站。在整个过程中,我赚到了约$200。但是却浪费了几个月时间,最终我关了他。

虽然没有什么收获,但是它带给了我一线希望,我可以成为了一个web程序员。

杯具的是,我仍然处于失业中。

2012 还是失业

作为一个20岁的web程序员,我只想在一个地方工作 —— 一家俄罗斯社交网络公司。

每个在俄罗斯的人都使用他们的产品。那是个非常成熟的产品。并且他背后的团队被认为非常“酷”。

他们公司的高管经常发文提到他们的工程师是如何的高薪。他们小小的技术团队似乎对于他们面对的挑战与公司的待遇都非常满意。在俄罗斯的技术圈子里,很多人都知道他们大名。

我的导师将我介绍给他们的CTO,我得到了一份可以拿回家做的JavaScript考试题。

这个题里包括了克隆一个他们产品中的功能 —— 在给朋友发信息的时候,自动预测你想发给的用户的名字。其中我仔细模仿了与这个功能相似的缓存与防抖算法。

在他们公司的面试是一场灾难。显而易见,我并没有他们那个级别的经验。但是,如果我能够“理解他们的产品线”,他们愿意给我一次机会。

于是,他们给了我一个可以带回家做的考试题,题中叫我设计一个他们网站的登录页面 —— 一个可以运行在手机上的建议登录页。

我花了一周时间去设计这个网站。许多细节上我都花了心思,甚至埋了几个彩蛋,为此我感到很自豪。

但是,我没找到一个看起来不太丑的手机照片。于是我放了一个漂亮的iPhone在上面。我认为从美学上这是令人愉悦的。

我当然被拒了。我忽略了唯一他们需要的东西(一个简单的登录页)。我为什么就这么执拗?为此我哭了几个小时。我真的不想到其他地方工作。

现在我仍然住在我妈家,而且失业中,没赚到钱。

我开始怀疑自己,反思辍学是否是好的。

我在iTunes U上注册了iOS开发课程。除外还在Coursera上注册了另两门课程:编译器与机器学习。也许那些课可以让我成为“真正的程序员”。

独自学习这些课程让人感到孤单。于是我在我导师的共享工作空间当中将“bootcamp”成员组织起来组团学习。

大约学了一个月。有个一起学习的同学介绍一个创业公司创始人给我认识。Roman Mazurenko是个不走寻常路的创业公司创始人。

他的梦想是创造一个DYI平台,虽然我不知道应该期待什么,但是与他谈话非常让人开心。

他提议我搬到莫斯科并在那里边工作边学习iOS开发,我同意了他的提议。

最终,我也没有完成编译器与机器学习课程。但是,我学到了足够的知识明白他们都不是魔法。在此之后,我就对他们失去兴趣。

2013 有工作了,但是失恋了

到2013年,我的工资是$30k/年(几乎是之前工资的一倍)。

在美国人的角度看仍然很低,但在俄罗斯是非常不错的。我还在Stampsy得到了一点股份(然而这些股份最终变得一文不值)。

我们的团队由五个程序员与两名设计师组成。我们从开发一个iPad的应用开始,但是我们当中没有任何人对iOS有实际经验。

至今我都能依稀记得,当一个同事研究出如何写一个我们会用到的动画效果时,我的那份释放的感觉。直到那时,我都以为我们肯定会倒霉。

我在办公室足足住了几个月时间。回首往事,我不会因为我的生活-工作平衡而骄傲。

这的确很不健康。但是,我在此期间学到的东西比我之前两年时间学到的还要多,我一点都不后悔。

最后,我搬进了和Roman相同的公寓。我的房间租金是$1k/月。那是一个宽敞的公寓,地理位置我很喜欢,并且到办公室往返的时间只有5分钟。

我们以为我们写的程序也许对别人也有帮助。所以我们在GitHub上开源了项目。那时我最受欢迎的项目得到过30颗星。而对于我们而言,那真是非常多。

一个我们团队中的设计师向我推荐了Victor的演讲 —— 发明的原则。真的很棒。

到了四月,我们投入很多精力的iPad应用上线了。苹果公司向我们团队要了一些应用的素材用于将它放到苹果商店的精选当中。整个团队都沸腾了。

它被作为精选应用推荐了数周,真的有人开始用他了。

我们的激动情绪很快就消散了,因为我们意识到这个应用根本没有适合的市场。

这个应用是用来创造如同杂志一类风格的图片排版,但是没人会在自己的iPad里装用于这些排版的素材,并且iPad的相机质量也不敢恭维。

这个应用没有任何意义。我们为什么从来没有意识到这一点?

我的个人情感生活也分崩离析。虽然我们相互很适合,但是大多数时候只是为了逃避独自一人的恐惧。最终,我们分手了。

在之后的几个月,我专注工作,对于失恋,没告诉任何人。但是当我意识到我特别想念某个特别的朋友,我发信息给她,她告诉我她也非常想念我。于是,我安排了一次共同的旅行。

杯具的是,当那个计划好的旅行即将到来的时候,我感冒了。我感觉情况越来越糟糕,但我仍然希望我能好起来。

当我乘坐的从莫斯科到圣彼得堡的火车进站的时,我的高烧仍然十分明显。

她说无论如何还是去她家坐坐。到了她家后,她为我烧了热茶,递给我厚一些的袜子。

四目相对后,我们接吻,一切都好起来了。

2014 与React结缘

对我而言,2014是React的一年。

在短暂的生存危机后,我们放弃了那个iPad应用。取而代之的是转向web端应用。

这也就意味着我要学JavaScript,这一次是来真格的。我们用Backbone做了一个非常不错的程序原型,但是互动部分非常难实现。

我一个同事首先看到了React但很快就放弃了它。但是几个月以后,他又跟我说,React也不是一无是处。我决定试一试。

戏虐的是,我的第一个从Backbone转到React的组件是一个喜欢按钮。

它工作正常。且是非常正常。我感到React与我之前看到的所有东西都不相同。

React对于我们团队并不难于掌握。我们在接下来的一年中伴随发布新功能的机会,渐渐把所有的UI部件都改写成了React

React跟它所使用的单向数据流原则使得我们的开发更加快速并更少出错。

我们发布了一个内测beta版本,它是一个介于Medium,Pinterest和Tumblr之间的产品,摄影师可以使用这个产品创造可视化故事。

虽然它没有吸引来很多注意力,但是不像之前的iPad应用那样是彻头彻尾的失败。

使用React唯一缺点就是它简直就没有任何生态可言。

我们刚开始用React的时候,只有一种路由(不是React-Router),没人懂得如何使用它,我们只能自己做了一个。

我们的应用中没有拖放功能,于是我移植我同事的一个函数库到React当中。

我制作了一个帮助程序来管理文档标题。还写了另一个函数库来统一API的响应。Jing Chen通过React IRC频道给我提供了些建议。

我还不知道,在接下来的几年中,Twitter重构他们的网页时会用到这个函数库并且维护这个函数库。

我也想为React做贡献。我联系了Paul O’Shannessy问他是否有pull requests我可以参与帮忙的。几天内,我就完成了我的第一个任务,但是它在数月之后才被merged

大型项目的发布周期非常长。所以我决定将时间花到React的周边上。回想起来,那个PR对我的影响很深远。

在2014年,我在我们办公室举办了介绍React的讲座,这是我第一次公开演讲。

那个讲座持续了2小时,我至今都感到吃惊,因为大部分参会的人似乎都还挺高兴的坐到了整个讲座的最后。

事后,我申请在BerlingJS meetup上进行一次发言,题目是“React跟Flux”。

我没有提前练习我的演讲,当我的时间到了的时,我才讲了一半。有人对我翻了白眼,从那以后,我在公开演讲前会排练3到15遍。

2014年我第一次收到Facebook HR的电子邮件。直到数月之后我才看到他。

最终我们还是聊了一下,由于我没有足够的工作年限,而且我辍学没有文凭,所以招我到美国进Facebook并不容易。Oops。

在2014年我着手的项目当中,有个我特别喜爱的项目。正如我人生中很多重要的事情一样,他们就这样不经意的发生了。

当时我正在将我们的应用从require.js转向webpack以便实现代码分割。

我读到了一个叫做“热模块置换”的怪异的功能 —— 他能让你可以编辑CSS而不需要重新加载页面。但是在webpack,它对JavaScript同样适用。

我非常困惑于这个功能,于是我在StackOverflow上提问。

Webpack当时仍然非常新颖,它的开发者看到了我的问题并做出了反应。这个回答给了我足够的信息把这个功能加入到React中。

我写了一个非常非常草率的验证原型 —— 直接修改React的源代码,加入一堆全局变量。

我决定直到它可工作前,我都不睡觉!

到了早晨7点钟,我有了一个可以发推特的演示模型。在此之前从来没有人在意我的推文,但是这个推文受到了几个喜欢与转发。那20个转推对这个点子是巨大的验证。

我于是知道,我不是唯一一个人对这个点子感到激动的人。这个验证原型只是个简单的尝试,我没有额外的业余时间花在这上面。在之后的一次旅行中,我完成了它的整个原型。

免责声明:再一次,我不是在说你“应该”在业余时间或旅行中工作。我不是在炫耀我的勤奋,没做任何我提到的这类事情的成功人士大有人在。

事实上,如果我能够很好的管理时间,我很有可能在我不受干扰的工作日里挤出更多的时间来。

我分享这些是因为我在讲述我的经历,如果我说我是在我的40小时工作时间里完成的这些,那我就是在撒谎了。

2015 Facebook Offer & 结婚啦

我们发布了产品的内测beta版本。我们的公司正在逐渐地耗尽投资,而我则想花越来越多的时间在开源项目上。

我想发表我的第一次会议演讲。当然我想讲的就是我的热加载功能,但是我知道已经有人在ReactConf上提到过它,因此人们不会为此感到激动。

于是我决定在我的演讲申请提案里加点噱头-“时间旅行”。我的提案得到了通过。

到了四月,我的工资已经被拖欠数周。虽然最终还是发了下来,但是我已经意识到,是时候找新工作了。

我找到了一个使用了我项目的公司,他们同意在之后的几个月里赞助我的工作。

我的女友问我是否想结婚。我告诉她我想我会快40岁的时候才选择结婚。

她问我:“为什么呢?”

我确实找不到支持我想法的有力依据,于是我们迅速的买了结婚戒指领证结婚。我们的婚礼花掉了$100。

我的演讲日期即将临近。但是我仍然不知道到底如何实现“时间旅行”。

我知道Elm语言有相类似的功能,但是我非常害怕去研究他们,我担心我的研究会最终告诉我这个功能在JavaScript上可能实现不了。

在这个时间节点上,市面上流行着非常多Flux的函数库。我尝试其中几个,Andrew Clark开发的Flummox让我眼前一亮,我模糊的感觉到与Flux结合热加载能够让我实现时间旅行。

Sunil的gist让我有了一个点子:Flux范例中用一个reducer函数取代原有的store。我已经给他脑补了一个很棒的名字,我的演讲真的太需要这个点子了!

赶在演示时间的deadline前我实现了Redux

我的第一次演讲排练是在Skype上,我边出汗边喃喃自语,整个过程完成的过快。到最后,我问大会组织者我是否有可取之处。

他说“嗯…人们挺喜欢你的”,我以为他只是在想委婉的安慰我。

我邀请了跟我一同在之前的那个创业公司里工作的设计师同事帮我修改PPT,加上了动画跟过度效果。

我的幻灯片做的越好,我就在演讲的时候更加冷静与感到有信心。为此我练了十多遍。

我飞到巴黎参加我的第一个技术研讨会。这也许是我人生中最幸福的一天。第一次,我对上了认识的人的面孔。到会的有UI的高手还有我崇拜的人。

这种感觉仿佛是来到了霍格华兹魔法学院。

惊险的是,我的演讲差点胎死腹中。就在演讲的当天早晨,我发现我的电脑连不上投影仪。而此时只有几个小时准备了。

Christopher Chedeau非常慷慨的借给了我他的电脑,我把我的现场演示项目安装到了他电脑上(除了Sublime的证书,你如果看了那场演讲,你可能会有印象)。

在一开始,我的演示程序在Chistopher的电脑上因为Node的版本不同而运行不了。会场的无线网网速是在糟糕,根本下载不了另一个Node的版本。

幸运的是,我发现了一个npm的命令可以重新编译Node的运行版本。它拯救了我的演讲。我最终用他的电脑顺利的完成了演讲。

在听众中我看到了很多推特上认识的人。其中之一便是Jing Chen。

我是从React的IRC聊天频道当中认识的她。我就跟她打了个招呼。

她问我FB的HR是否有联系过我,我说我拿不到美国的签证。Jing问我是否感兴趣到他们的伦敦办公室工作,而我还根本没有听说过伦敦有这么一个办公室!

我询问老婆看她是否愿意搬去伦敦。我以为她会很不愿意,但是她竟然很快就同意了。于是我决定参加一次面试。

在会场里有四个FB的员工,于是Jing就直接在举办会议的酒店安排了一个完整的面试。那是一个非常普通的面试,除了那里的人都大汗淋淋,因为这里是巴黎,外边非常热。

一切就这么悄然发生了,我既没时间准备,也没有时间紧张。

我智障到了一个地步,以至于我无法用三行代码调换一个数组当中的两个元素。

我请求Jing两三秒内先别看我。她说“我知道你可以调换这两个元素的”,这句话给了我足够的信心完成了答案,而且使我完成了面试。

也许我没有完美的完成我的这次面试,但是我拿到了offer。

我的演讲引起了很大的关注。为了支持Redux,Andrew Clark停止继续开发Flummox(那个最受欢迎的Flux函数库)。

新手在阅读ReduxREADME时可能会非常困惑,因为它是给那些已经在这个领域有了非常多经验的人看的。

我仍然没有工作,而且英国的签证要等几个月。

我在Patreon上开了几个月账户来支持我的项目 —— 主要是帮助我写好Redux的使用文档,创建演示项目以及录制免费的教学视频。

我筹到了大约$5k/月的资金,这个金额比我之前做的任何工作都赚钱。

来自Egghead的粉丝给我邮了麦克风让我录制我的“学习Redux”课程。如今来看这些课程不尽人意,但是它们非常流行,尽管这些视频是免费的,但是让我在很长一段时间赚到了很多钱(约$3k/月的版税)。

FB接手了大部分移民签证的问题。我跟妻子只需要填填表格,参加一下英语考试以及一些体检。

FB做了我们搬迁新地方的大部分工作,包括把我们的猫咪从俄罗斯带到英国(这一项花掉了大约$5k)。

我被按照level 4的标准被招进来,也就是初始工资125k的原始股。

而且我还拿到了$18k的签约奖金,它在我安家这件事上起了很大作用。(顺便说一句,在英国,码农的工资比在美国要低一些)

我们在2015年11月到达伦敦。在此之前我们从未到过伦敦。

我们从机场乘坐了一辆黑色英式出租车,在最开始的10分钟我不知道怎么关掉热风,以至于我们一直出汗,看不到窗外的风景。

当我们终于关掉了热风,窗子的雾气也消散之后,我们的眼睛睁得跟盘子一样大,伦敦实在是太美了。

就在第二天,Roman Mazurenko被一位粗心的司机撞死了。他刚刚拿到他的美国护照,只是到莫斯科来取他的文件。

他告诉我莫斯科有某种邪恶的力量不想让你离开。我没能再在2015见到我的这位朋友,也永远不能了。

2016 新的开始

新工作。新城市。新国家。不同的语言。不熟悉的口音。大城市。取向。会议室。项目。团队。文档。表格。#¥%……&&……(此处全球通用语言)

我不太记住最初几个月是如何面对一群和我不是同一门母语的同事。我的头儿到底在告诉我什么?是否会不礼貌,要不要再问他一次?

什么,我需要向一位苏格兰女士询问我的社保号?她说的任何一个字我都听不懂。

什么又是社保?为啥我会有一个零号的税号,为什么我的工资比我想象的低?等一下,这里的人真的纳税么?我如果病了该怎么做?什么是NHS?

我在2016年第一次来到美国期间(入职培训),有时候会一整天忘记吃饭,喝非常非常多咖啡。

有一次,在给同事演示热加载的功能的时候直接晕过去了。我被抬上了救护车并得到了一张$800的账单(幸好,FB买单—或者至少,我没有为此付款)。

尽管公司帮我解决了更换工作地点的大部分的问题,但还是非常让人头痛。我以为在入职培训的时已经解决了每一个问题,但是我忘记了到警察局登记。(我把这件事与到邮局登记混淆了,那也是一件必须做的事情)

最后发现我发现我们比应该登记的日期晚了数月,据说这样可能影响我们的签证。幸运的是,至今似乎都没有出什么事。

我最初的想法是加入伦敦的React Native团队。

通常而言,FB会雇来员工让他们经过短期培训后,再由他们自己选择一个团队,但是我并没有那个自由度。我是被预定好到哪里去的。

但是,我对于React Native并不是特别感兴趣。我告诉了Tom Occhino(当时他管理着React团队),他建议我可以作为React Core团队(位于美国)的唯一驻英国成员。

因为我早已在开源项目中习惯远程办公,所以我同意了。

在2016年,React彻底火爆了,但是每个人都在通过不同的打包工具研发自己的脚手架工具。

React成为模块化JavaScriptES6以及所有复杂工具合集的同义词。

Christopher Chedeau建议制作一个命令行的React脚手架工具。我们很快在几周之内制作出了第一版,这就是Create React App

2017 慢慢融入

作为副业,Egghead上的课程持续给我带来版税收入。我毫不犹豫的把他们都花在了吃穿上。

直到2017年我才意识到这些从国外来的收入是需要缴税的,经过计算我欠女王陛下大约$30k的税款。

Oops,如所有的成年人一样,我找到一个会计解决了这些问题,也用尽了我的所有积蓄。

工作方面,我们用了2017年的大部分时间全新重写了React。你们看到的React 16就是努力的成果。

在我的个人生活当中,除了税务方面还发生了很多其他事情。我始终还在适应新环境。

我在与政府机构打交道的时已经不那么害羞了。我可以在打与接电话的时候不那么紧张。我看电影不再需要字幕。我懂得了如何对付国家健康服务与私人保险。我也停止了我的个人项目。

2018–2019 渐入佳境

最近的这两年转瞬即逝。由于才过去没多久,我还不能看清楚其中发生的什么事情对我非常有意义。

专业领域当中,我们的项目前所未有的火爆。如果你关注React,你会知道我们正在着手做一些东西。

我成长为一名工程师,并且仍然有那么多东西要学。我们伦敦的团队也发展壮大起来—我不再孤军奋战。

人们偶尔在街上会认出我。这会使我感到不安。有个人在桑拿里认出了我,就拉着我开始抱怨 React。请不要成为那样的人。

我升职了。

我与更多在网上认识的人线下见了面。能够将这些人与他们的头像对应上非常有趣。

我一直知道我喜欢设计UI。我从Visual Basic入行,花了十年设计UI,然后又设计了设计这些UI的方式。然后讲述它以及解释它。

不过我现在刚刚意识到,解释事情给我的动力与我创造它们给我的动力一样大。

我兴高采烈的展望未来,在下一个十年我将做更多的事情。

或者,我应该说,这个十年?

欢迎来到2020。




推荐阅读




我的公众号能带来什么价值?(文末有送书规则,一定要看)

每个前端工程师都应该了解的图片知识(长文建议收藏)

为什么现在面试总是面试造火箭?


浏览 25
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报