Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

我的十年回顾(转贴) #174

Open
yanyue404 opened this issue Aug 19, 2020 · 0 comments
Open

我的十年回顾(转贴) #174

yanyue404 opened this issue Aug 19, 2020 · 0 comments

Comments

@yanyue404
Copy link
Owner

yanyue404 commented Aug 19, 2020

本文转载自 作者 Dan Abramov,Redux 作者,React Core Team 成员。

[原文链接](https://overreacted.io/my-decade-in-review/)

我的十年回顾

2020 年 1 月 1 日

我是以一名大一新生的身份开始的我的这个十年。那时我 17,没有工作,没有任何业内交际圈,真正的小白一个。而现在你正在阅读我的博文!我的确为此骄傲。

我已经零零散散的在不同的播客中讲述了我的故事。现在我感觉正是一个非常恰当的契机写下这些最值得记忆的时刻们。

每个人的故事都是独一无二无法复制的。我非常幸运的出生在一个中等偏上的中产阶级家庭中且有非常标准的程序员外表。且人们愿意给我机会。我再次声明,我分享我的经历是希望它能通过与你的经历对比,产生共鸣并有所用处。即使也许我们的境遇天差地别,至少你也许会从中找到一点点娱乐性。

2010

我出生在俄罗斯并直到 2009 年在那里完成了高中。在俄罗斯高等教育是免费,只要你考试成绩达标。我在几所大学试了我的运气。我当时特别想进一所学生经常得编程大赛大奖的学校(这件事我当时感觉非常酷)。

然而,似乎我的数学成绩不够优秀。于是如果我想做与编程相关的事情,我就没有了太多的选择余地。从我能够进的学校当中,我选择了一所给学生苹果电脑用的学校。(还记得那种白塑料预装 GarageBand 的苹果电脑吗?它们是最棒的。)

到 2010 夏天,我刚刚完成了我的第一学年。我发现,原来那里不会教授太多的编程相关课程,而且在接下来的两年也会如此。但是却会有很多代数,物理和其他我不特别感兴趣的学科。事情一开始还都不错,但是我开始慢慢没有耐心,且不去参加那些需要早起的课程。我落下的知识开始慢慢如滚雪球越积越多,我在第一年还能记得住的东西就只剩下焦虑与那种自己是个彻底失败者的感觉。

甚至是那些我熟知的学科,我也经历了许多不如意。我们的英语课非常基础,我得到了我们老师的口头同意跳过了大多数课程。但当我参加结课考试时,我不被允许交考卷,除非我给这同一个老师钱,参加他数小时长的“补习班”。这段经历让我开始对高等教育系统充满怀疑与不满。

在做一名糟糕大学生的同时,我也开始了我的第一份认真的感情—它也没不成功。我很难过,但是我认为时间可以最终“解决”这一切的问题。

在好的方面。专业上,2010 年是令人兴奋的一年。我得到了我的第一份程序员工作!接下来是这一切是怎么发生的。

我们大学边上有个小小的场地可以接纳各类会议活动。这个场地叫做“商业孵化器”—提醒下,这不是在硅谷的那类商业孵化器—而是个俄罗斯版。我真是不清楚他们会“孵化”什么类型的商业项目。然而,他们接办了一场讲软件开发的会议,我决定去看看,因为我对这类内容太感兴趣了。我的生活中不认识任何程序员,我也不是道 meetup 的存在。

我已经记不清当时讲的内容是什么了。但是我记得那个发言的人是俄罗斯-美国外包公司的高管。我从 12 岁开始编程,所以我主动接近他并询问他们是否雇人。他给我一个电子邮件地址,我做了他们的面试题,几周之后我得到了那份工作。

我 2010 年夏开始了我的第一份工作。我的工资是$18k/年(是的,那是18,不是180)。这个在发达国家什么都不是,但是,再一次的,这里是俄罗斯—所以租金也相应的便宜。我立刻搬离了我妈妈的公寓,并租下了月租$150 的房间。我非常激动。用我的第一次工资,我买了一个 iPhone,且惊叹于它上头的 UI 是如此的美丽。

夏天来又去,我的大学二年级开始了。但这一年大学里少了我的身影。我现在开始了正式的工作且人们为此为我付工资,我失去了我最后的一点动力坐在那听课并完成练习。我停止去上课且不去参加期中考试。我还掉了苹果电脑。我唯一再去那里的时候,只是去取我的纸(papers)。

短暂离题。我不是在说大学毫无价值,或者你应该辍学。那只是我的正确选择,但我知道如果事情不顺利我可能会重新回到我妈那里住(稍后详细介绍)。我已经有一份工作。

我享受那份与生俱来看起来很能干的优势,因为我的背景(一个很早开始编程的人)。那些不俱备这样特质的人通常都会学一个学位用以积累出可能的相应能力来进入这个行业。就这样。

2011

我大部分的工作都是修理低价外包公司的垃圾程序。我自己没有任何行业经验,我过度使用了各种我能用到的新鲜科技。我甚至将 “random Microsoft Research projects” 用到了最终产品上。我为此感到抱歉,我也做了一些好的工作。

我的第一份工作项目包括了一次旅行。我们的客户是一个位于纽约的投资集团。我至今还不太了解投资,但基本上他们有个电子邮件系统接受订单,这些订单都要经过不同级别的批准。他们有个程序来管理这件事情,但是这个程序极其凌乱,没人真正知道他到底怎么工作的。我的工作就是到那家公司,在纽约待一个月,最终修理好那个程序。

这个程序是由一个廉价的外包合同公司写成的。九年之后,我仍然能够记起他的名字。令人最为难忘的是那个 13000 行的函数。为了弄清楚它到底是如何工作的。我只能将他们打印出来,把打印出来的代码放在桌子上,用铅笔在上头注释上。原来那是同一段程序片段在不同的情况下被重复写了 50 遍。我猜写程序的人一定是按照程序的行数来被支付酬金。

我在那个月添加了无数的输出日志去探索到底那个服务在实际产品中如何工作,然后从无到有的重新写了一遍这个程序以使它不再那么脆弱。与一个非技术公司合作是不易的。比如,我不可以添加一个程序错误修复,而不写一个 Word 文档来解释我的修改。且这个文档必须有那个公司 IT 部门的签字。到了这一步,还会有一些代码审查。

在我旅程的结尾,我去了一家酒吧看音乐表演看到深夜。第二天大早我原计划需要给客户展示一个月的工作成绩。我的会议被定在早晨九点。不幸的是,我睡过了头,那天下午一点钟才醒来。我的工头为我道了歉,我带着痛苦与尴尬回了家。

那个项目没有什么其他后续。似乎他总体上是个成功的项目,我的客户把我当成了一个奇怪的俄罗斯小伙,那种不懂怎么梳头的一类。但是我自己知道我是在自欺欺人。我也不是特别想参与更加“企业项目”类型的项目。工作开始变的繁琐。

我回到了俄罗斯圣彼得堡。夏天的那里天空永远不黑。在一个找寻灵魂的夜晚,我从一个酒吧到另一个酒吧的前行着,带着模糊不清的不安感。大约到清晨 7 点钟,我头顶上的一个电灯泡熄灭了。我吃了一个 shawarma,带上一个赛百味去了办公室,等待人士部门的同事,辞掉了工作。

我的一个朋友计划了一个去克里米亚的旅游(在它被吞并之前)并询问了我是否愿意同行。我带上了一个帐篷跟一个可以充一次电用一周的诺基亚手机就上路了。我们搭帐篷搭了两周,大部分时间是没有什么保护的,在那种迷迷糊糊的精神状态下,我不太能记住除了以下两个片段之外的什么其他东西。

其中有一次,有个人用刀子威胁我。说他会杀掉我,但是第二天他就消失了,一切重归平常。另一次,我独自在悬崖周围游泳,且差点溺水身亡。我被一个湖中间的石头救了,我爬到它上头,直觉上在那里失去意识大约一个小时。

这次旅程仿佛一次硬件重启。我的 burnout 被治愈,我再一次为写程序做好了准备。(但是这里我不是对你说你必须以濒死为代价来治愈 burnout)

但是现在唯一的问题是… 我的专业能力仍需提高!真没办法!

你看,我只写过桌面应用的软件。如今还有谁听说过桌面应用软件?现在它什么都不是了。要么做后端,要么做移动端,要么做前端。我完全不了解这些。而且我仍然失业,于是我只能搬回家跟妈住(谢谢你,老妈!)

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

我加入了项目。且很快发现其中根本没有真正的教学:我们只是得到了一些网上的教程,我们实际上只是相互学习。幸运的是,我可以承担这份工作的花销,因为我跟我妈住一起。我学会了 Git,Python 基础,Django,一点点 CSS 和 JavaScript,还有一点点 Bash 用于发布我的更改。Web 你好,我来了!

九年之后,我仍然不确定我应该如何看待这段经历。一方面我们免费为他的个人项目工作。另一方面,我们在项目中有 root 权限,可以随意将我们的更改发布到终端产品当中,这确实非常令人激动而且由此从我们的错误中学习到知识。这个项目给了我们全部学习的基础设施。它不花我们一分钱,而且你随时可以走人。这些项目因为它们的教育性衍生了一定的社交价值。这使我想到了开源软件。

我至今还是非常感谢这个人,因为他特别架设了这个“bootcamp”且成为我的导师。但是我不是暗示你免费给人打工总体而言是个锻炼自己的好方法。我在这里不是给你提供建议—我只是在叙述我的故事。

我制作了一个 dashboard 程序来追踪我们每个人的学习进度。我的导师建议我可以把它打包做成产品卖给其它经营网络课程的公司。我尝试“startups”的经历是丢人的。我不清楚我在做的项目到底是什么,我给不同的人展示了不同的东西。最终,我帮助不同的客户制作完全不同的网站,而它们使用同样的一个引擎。从整个过程当中,我赚到了约$200。我浪费了数个月在上头,然后关掉了他。但是它带给了我一线希望,我成为了一个网络开发程序员。

但是我仍然失业。

2012

作为一个 20 岁的网络技术程序员,我只想在一个地方工作。那是一个俄罗斯社交网络公司。每个在俄罗斯的人都使用他们的产品。那个产品非常成熟。而且他背后的团队被认为非常“酷”。几乎是被称作精英。

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

我的导师介绍我给他们的 CTO,我得到了一份可以拿回家做的 JavaScript 考试题。这个题里头包括了克隆一个他们产品当中的功能,就是在给朋友发信息的时候,自动预测你想发给的用户的名字。其中我仔细模仿了这个功能相似的缓存与去抖算法。

在他们公司的面试是一场灾难。显而易见,我并没有他们那个级别的经验,但是,他们愿意给我一次机会如果我“理解他们的产品线”。他们给了我一个可以带回家做的考试题,题中叫我设计一个他们网站的登陆页面。题中他们希望可以显示一个手机—许多人不知道网页版的网站可以运行在廉价的手机上。

我花了一周时间去设计这个网站。我在许多细节上花了心思,甚至埋了几个彩蛋。我很自豪。但是,我没找到一个看起来不太丑的手机照片。于是我放了一个漂亮的 iPhone 在上头。我想从美学上是令人愉悦的,我认为。

我当然被拒了。我忽略了唯一他们需要的东西—我为什么就这么执拗?我哭了几个小时,因为我真的不想到其他地方工作。我仍然住在妈家,而且没赚钱。

此时,我从心底怀疑着我的能力。很多事情变得在我身上有了“魔力”。我开始反思辍学是否是好的。我在 iTunes U 上注册了 iOS 开发课程。除此之外还在 Coursera 上注册了另两门课程:编译器与机器学习。也许那些可以让我成为“真正的程序员”。

独自学习这些课程让人孤单。我组织了一个由我们网络开发“bootcamp”成员参加的 meetup。我们一起看不同的网络课程,在我们导师的共享工作空间当中。

大约一整个月都花在了上头,我得到了一个电子邮件。有个人正在招程序员,他由一个参加我的这个 meetup 的人介绍知道了我。我已经十分讨厌这些招工广告,直接忽略了这个电子邮件,但是这个人持续的给我发邮件。他想跟我用 skype 聊聊。

Roman Mazurenko 是个不走寻常路的创业公司创始人。Roman 对于 DYI 出版非常感兴趣。与其他几个好友,在几年时间里,他让莫斯科似乎变得酷起来。他组织聚会,在时尚杂志里搔首弄姿。我不知道应该期待什么。但是 Roman 非常踏实且与其谈话非常让人开心。他的梦想是创造一个 DYI 平台,如这个概念视频所展示的。我将搬到莫斯科并在那里边工作边学习 iOS 开发。(顺便说一句,视频里的人不是 Roman,而是一个朋友,而那个 app 也只是通过 Flash 制作的一些动画。Roman 很善于制造幻相。)

我同意了他的提议。

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

2013

到 2013 年,我的工资是$30k/年—几乎是之前工资的一倍。在美国人的角度看仍然很低,但是在俄罗斯是非常不错的。我还在 Stampsy 得到了一点股份(真相大揭秘:这些股份最终变得一文不值)。

我们的团队由五个程序员与两名设计师组成。我们从开发一个 iPad 的应用开始,但是我们当中没有任何人对 iOS 有实际经验。至今我都能依稀记得,当我们的一个队员研究出了如何写一个我们会用到的动画效果时候,我的那份释放的感觉,直到那时,我都以为我们肯定会倒霉。

我在我们办公室足足住了几个月时间。回看这段时间,我不会因为我的生活-工作平衡而骄傲,而且那的确不健康。然而,我在此期间学到的东西比我之前两年时间学到的还要多,我一点都不后悔。

最后,我搬离了办公室。我搬进了 Roman 相同的公寓。我的房间租金是$1k/月。那是一个宽敞的公寓,它坐落于那个唯一使我感到愉悦的区域,而且到办公室往返的时间只有 5 分钟。

我们以为我们写的程序也许对他人会有所帮助。所以我们开始把我们的程序发布到 GitHub 上。我们没有期待会发生什么,甚至得到一些程序开发上的支持都很棒。那时候我最受欢迎的项目得到过 30 颗星。而对于我们而言,那真是非常多

一个我们团队中的设计师推荐了我 Victor 的演讲—尤其是发明原则。我想那是一个非常好的演讲。一个非常好的。

到四月,我们发布了我们投入很多精力的iPad 应用。苹果公司向我们团队要了一些此应用的素材用于将它放到苹果商店的精选当中。我们乐上了天。它被作为精选应用数周之久,人们真的开始使用它了。

我们的激动情绪很快就消散了,因为我们意识到这个应用根本没有适合的市场。这个应用是用来创造如同杂志一类风格的排版的,但是没有人在自己的 iPad 里装用于这些排版的素材。而且 iPad 的相机又只有可怕的照片质量。这个应用没有任何意义。我们为什么从来没有意识到这一点?

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

在之后的几个月,我不把这件事告诉我们共同的圈子,只专注工作。但是我意识到我特别想念某个特别的朋友。我发信息给她,她告诉我他也非常想念我。我安排了一次共同的旅行。

我得了感冒。当那个计划好的旅行即将到来的时候,我感觉更加糟糕了,但我仍然希望我将好起来。当我乘坐的从莫斯科到圣彼得堡的火车进站的时候,我的高烧仍然十分明显。她说无论如何还是去她那里坐坐。她为我烧了热茶,递给我厚一些的袜子,我们相吻。我们正式开始。

2014

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

在短暂的生存危机之后,我们放弃了那个 iPad 应用取而代之的是转向一个网页程序。这也就意味着我要学 JavaScript,这一次是来真格的。我们用 Backbone 做了一个非常不错的程序原型,但是互动部分非常难于实现。

我的一个同事首先看到了 React 但很快就放弃了它。但是几个月以后,他又跟我说,React 也不是太一无是处。我决定试一试。戏虐的是,我的第一个从 Backbone 转写到 React 的部件是一个喜欢按钮。

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

React 对于我们团队并不难于掌握。我们在接下来的一年中伴随发布新功能的机会,渐渐把所有的 UI 部件都改写成了 React。React 跟它所使用的单向数据流原则使得我们的开发更加快速并产生更少的错误。

我们发布了一个内测 beta 版本,一些摄影师享受于使用这个产品创造可视化故事。它是一个介于 Medium,Pinterest 和 Tumblr 之间的产品。它没有吸引来很多注意力,但是它不再是一个彻头彻尾的失败,如之前的 iPad 应用那样。

使用 React 的唯一缺点就是它简直就没有任何生态系统。我们刚刚开始的时候,当时只有一种路由(且_不是_React 路由),而且我们没人懂得如何使用它。于是我们自己做了一个。当 React 路由发布的时候,我们才用了它,并加入了一个我们的产品中用到的特性。

在我们的应用中没有拖放功能。所以我移植我同事的一个函数库到 React 当中。我制作了一个帮助程序来管理文档标题。还写了另一个函数库来统一化 API 的响应。Jing Chen 通过 React IRC 频道建议了关键创意,而且它可以使用!我还不知道,在接下来的几年中,Twitter 将重写他们的网页,并用到这个函数库,而且维护这个函数库。

我也想为 React 做贡献。我联系了 Paul O’Shannessy 问他是否有 pull requests 我可以参与帮忙的。几天内,我就完成了我的第一个任务,但是它在数月之后才被 merged。大型项目的发布周期,和与其相关的事情。让我困惑于它缓慢的响应时间。于是我花时间与经历到 React 的周边上。回想起来,那个任务影响更加深远。

在 2014 年,我做了一些与我第一次公开演讲相关的事情。我在我们办公室办了如大学演讲一样的介绍 React 的讲座。那个讲座持续了 2 小时,我至今都感到吃惊,因为大部分出现的人似乎都还挺高兴的座到了整个讲座的最后。

事后,我申请注册在 BerlingJS meetup 上进行一次发言。我的题目是“React 跟 Flux”。我没有之前练习我的演讲。当我的时间到了的时候,我才讲了我计划内容的一半。人们对我翻了白眼,我终于学会了。从那以后,我一定之前排练我的演讲 3 到 15 遍。

2014 年我第一次得到 Facebook 人事的电子邮件。我没看到它,直到数月之后才发现。我们最终还是聊了一下,原来招我到美国进 Facebook 并不容易,因为我没有足够年数的工作经历而且我辍学没有文凭。Oops。

在 2014 年我着手的项目当中,有个我特别喜爱的项目。正如我人生中很多重要的事情一样,他们就这样不经意的发生了。我正在将我们的应用从 require.js 转向 webpack 以便实现代码分割。我读到了一个怪异的功能叫做“热模块置换”,一个让你可以编辑 CSS 而不用重新加载页面的功能。但是在 webpack,它可以对 JavaScript 同样适用。

我非常困惑于这个功能,于是我在 StackOverflow 上提问。Webpack 当时仍然非常新颖,它的开发者看到了我的问题并做出了反应。这个回答给了我足够的信息让我把这个功能加入到 React 中,以之前提到的 Bret Victor 的发言的思想作为依据。

我写了一个非常非常草率的验证原型,通过直接编辑 React 的源代码,外加加入一堆全局变量。我决定直到它可以开始工作位置,我都不去睡觉。到了早晨 7 点钟,我有了一个可以发推特的演示模型。在此之前从来没有人在意我的推文,但是这个推文受到了几个喜欢与转发。那 20 个转推对这个点子是巨大的验证。我于是知道,我不是唯一一个人对于这个点子感到激动的人。这个验证原型只是个简单的尝试,在工作之余我没有时间去继续在上头花时间。我之后是在一次出门旅行中完成了它的整个原型机

免责声明:再一次,我不是在说你“应该”在业余时间或旅行中工作。我不是在炫耀我的操劳,没做任何我提到的这类事情的成功人士大有人在。事实上,如果我能够很好的管理时间,我很有可能在我不受干扰的平常日里挤出更多的时间来。我分享这些是因为我在讲述我的经历,如果我说我是在我的 40 小时工作时间里完成的这些,那我就是在撒谎了。

2015

我们发布了产品的内测 beta 版本。我也在成长,不过是非常缓慢的与线性的。我们的公司正在悄悄地耗尽资本与想法子筹到更多钱。而我则想花越来越多的时间在开源项目上。

我也想发表我的第一次会议演讲。当然我想讲的就是我的热加载功能,但是我知道已经有人在 ReactConf 上提到过它,因此人们不会为此感到激动。于是我决定在我的演讲申请提案里加点噱头-“时间旅行”,再一次的,我的点子受 Bret 的演示的启发。我的提案得到了通过,在接下来的数月中我没有花什么经历在上头。

到了四月,我的工资开始被拖欠数周。但是最终还是发了下来,但是我已经意识到,是时候找新工作了。我找到了一个使用了我项目的公司,他们同意愿意在之后的几个月里赞助我的工作。

我的女友问我是否想结婚。我告诉他我想我会快 40 岁的时候才选择结婚。她问我:“为什么呢又?”我确实找不到支持我想法的有力依据,于是我们迅速的买了结婚戒指领证结婚。我们的婚礼花掉了$100。

我的演讲日期即将临近。但是我仍然不知道到底如何实现“时间旅行”。我知道 Elm 语言有相类似的功能,但是我非常害怕去研究他们,我担心我的研究会最终告诉我这个功能在 JavaScript 上可能实现不理想。

在这个时间节点上,市面上流行非常多 Flux 的函数库。我尝试其中几个,Andrew Clark 开发的 Flummox 让我眼前一亮,我模糊的感觉到与 Flux 一同实现的热加载同样能够让我实现时间旅行。Sunil 的gist让我有了一个点子:Flux 范例中用一个 reducer 函数取代原有的储存器。我脑子里已经为它起了一个很棒的名字。我的演讲真的太需要这个点子了!

我是赶在演示时间旅行功能之前不久实现的 Redux。我的第一次演讲排练是在 Skype 上。我边出汗边喃喃自语,而且整个过程完成的过快。到最后,我问大会组织人我是否还有可取之处。他说“嗯…人们喜欢你的”,我以为他只是在想委婉的安慰我的丑态。

我邀请了跟我一同在之前的那个创业公司里工作的设计师同事帮我修改我的幻灯片。我加上了动画跟过度效果。我的幻灯片做的越好,我就在演讲的时候更加冷静与感到有信心。我练了十多遍。

我飞到了巴黎参加我的第一个技术研讨会。这也许是我人生中最幸福的一天。第一次,我对上了认识人的面孔。到会的有 UI 高手与我的英雄们。这种感觉仿佛是来到了霍格华兹魔法与巫术学院。

我的演讲差点就没有发生。就在发言的当天早晨,我发现我的电脑连不上投影仪。我只有几个小时准备了。Christopher Chedeau 非常慷慨的借给了我他的电脑,我把我的现场演示项目安装到了他电脑上(除了 Sublime 的证书,你如果看了那场演讲,你可能会有印象)。

在一开始,我的演示程序在 Chistopher 的电脑上因为 Node 的版本不同而运行不了。会场的无线网差到一个程度,根本下载不了另一个 Node 的版本。幸运的是,我发现了一个 npm 的命令可以重新编译 Node 的运行版。它救了我的演示。我最终用他的电脑在我的演讲上顺利的完成了我的演示。

我在听众群当中看到了很多推特上认识的人。其中的一个是 Jing Chen。我是从 React 的 IRC 聊天频道当中认识的她。我就跟她打了个招呼。她问我 FB 的人士是否有联系过我,我说我拿不到美国的签证。Jing 问我是否感兴趣到他们的伦敦办公室工作,而我还根本没有听说过伦敦这么一个办公室!我电话了我的妻子,并询问是否她愿意搬去伦敦。我以为她会很不愿意,但是她竟然很快的同意了。于是我就决定参加一次面试。

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

一切都是这样瞬息之间发生的,我既没时间准备,也没有时间紧张。我智障到了一个地步,以至于我无法用三行代码调换一个数组当中的两个元素。我请求 Jing 两三秒内先别看我。她说“我知道你可以调换这两个元素的”,这句话给了我足够的信心完成了答案,而且使我完成了面试。也许我没有完美的完成我的这次面试,但是我拿到了工作邀请。

我的演讲引起了很大的关注。Andrew Clark 也因此停止继续开发 Flummox—那个最受欢迎的 Flux 函数库—为了支持 Redux,这个我们共同完成的函数库。新手在阅读它的 README 时候会非常困惑,因为它是给那些已经在这个领域有了非常多经验的人看的。我仍然没有工作,而且英国的签证要等几个月。

我在 Patreon 上开了几个月账户来支持我的项目—而且主要是帮助我写好 Redux 的使用文档,创建小小的演示项目以及录制免费的教学视频。我筹到了大约$5k/月的资金,这个金额比我之前做过的任何工作都赚钱。来自Egghead的人们给我邮寄来了麦克风用以让我录制我的“学习Redux”课程。我如今每次看它们都要尖叫,但是它们非常流行,而且让我在很长一段时间赚到了很多钱(约$3k/月的版税)—尽管这些视频是免费的。

FB 接手了大部分移民签证的问题。我跟妻子只需要填填表格,参加一下英语考试以及一些体检流程。FB 做了我们搬迁新地方的大部分工作,包括把我们的猫咪从俄罗斯带到英国(这一项花掉了大约$5k)。我被按照第四等级工程师的标准雇佣,也就是初始工资$100k/年,以及就职 4 年后可以拿到的一个价值$125k的原始股。而且我还拿到了$18k 的签约奖金,它在我的安家这件事上起了很大作用。(顺便说一句,技术工人的工资在英国比在美国要低一些。)

我们在 2015 年 11 月到达伦敦。我们之前没有到过伦敦。我们从机场乘坐了一辆黑色英式面包车。我们在最开始的 10 分钟不知道怎么关掉热风,以至于我们一直出汗,看不到窗外的风景。当我们终于关掉了热风,窗子的雾气也消散之后,我们的眼睛张得跟盘子一样大。伦敦实在是太美丽了。

就在第二天,Roman Mazurenko 被一位粗心的司机撞死。他刚刚拿到他的美国护照,他只是到莫斯科来取他的文件。他告诉我莫斯科有某种邪恶的力量。它就是不想让你离开。我没能再在 2015 见到我的这位朋友,也永远不能了。

Roman 有一种数字化afterlife,是由他的朋友们提供的。我知道他会喜欢那个苹果商店上充满讽刺意味的 2.5 颗星的评价。

2016

新工作。新城市。新国家。不同的语言。不熟悉的口音。大城市。取向。会议室。项目们。团队。文档。表格。Shit。Fuck。Fuck。Fuckety Fuck,Shit,哦亲爱的,Blimey!

我不太能够记住最开始的几个月。我是在一种没有字母支持下持续试图理解人们到底在说什么的紧张焦虑当中度过的。我的头儿到底在告诉我什么?是否会不礼貌,如果我再问他一次?也许拼写给我更好?

什么,我需要给苏格兰的一个女士打电话来询问我的社保号?她说的任何一个字我都听不懂。什么又社会保险?为啥我会有一个零号的税号,为什么我的工资比我想想的又低?等一下,这里的人真的实际上纳税?我如果病了需要怎么做?什么是 NHS?

我在 2016 年第一次来到美国期间(部分是因入职培训),我有时候一整天忘记吃饭,喝非常非常多咖啡,一次,在给同事演示热加载的功能的时候彻底被惊慌失措打倒。我们叫了救护车,我因此得到了一个$800 的账单(幸好,由 FB 买单—或者至少,我没有被叫为此付款)。

更换地点工作是非常让人伤脑筋的,尽管公司帮我解决了大部分的问题。我以为我在入职培训的时候解决了每一个问题,但是我忘记了到警察局登记。(我把这件事与到邮局登记混淆了,那也是一件必须做的事情)我最后发现我们比应有的计划晚了数月,据说这样可能影响我们的签证。幸运的是,至今似乎都没有出什么事。

最初的想法是我加入到伦敦的 React Native 团队。通常而言,我们雇来员工并让他们经过短期培训班,然后再叫他们自己选择一个团队,但是我并没有那个自由度。我是被预定好到哪里去的。但是,我对于 React Native 并不是特别感兴趣。我告诉了 Tom Occhino(当时他管理着 React 团队),他建议我可以作为React Core团队(位于美国)的唯一驻英国成员。因为我早已在开源项目中习惯远程办公,所以我同意了。

在 2016 年,React 彻底火爆了,但每个人都在通过不同的打捆程序,监视程序,编译程序等研发自己的“模板”。React 成为模块化 JavaScript,ES6 以及所有复杂工具合集的同义词。Christopher Chedeau 建议制作一个命令行界面的 React 初始化工具。我们很快的在几周之内制作出了第一版,并公布了这个Create React App

2017

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

直到 2017 年我才意识到这些从国外来的收入是需要缴税的,经过计算我欠女王陛下大约$30k 的税款。Oops。如所有的成年人,我找到了一个会计师。解决掉了这些问题,也用尽了我的所有积蓄。

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

在我的个人生活当中,除了税务方面还发生了很多其他事情。我始终还在适应新环境。我在与官僚机构打交道的时候不那么害羞了。我可以在打与接电话的时候不那么紧张。我看电影不再需要字幕。我懂得了如何对付国家健康服务与私人保险。我也停止了我的个人项目。

2018–2019

最近的这两年转瞬即逝。我仍然跟他们距离太近,以至于无法沉淀下来,看清楚其中发生的什么事情对我非常有意义。

专业领域当中,我们的项目们前所未有的火爆。如果你关注 React,你会知道我们有一些东西我们正在着手做。我成长为了一名工程师,并且仍然有那么多东西要学。我们伦敦的团队也发展壮大起来—我不再孤军奋战。

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

我升职了。我把这个博客当成了一个个人项目。我另开辟了一个个人项目,我在那里将会反思这两年。我与更多在网上认识的人线下见了面。将更多人的面孔放到了他们的头像上。有趣极了。

我一直知道我喜欢设计 UI。我从 Visual Basic 入行,花掉这个十年设计了 UI,然后又设计了设计这些 UI 的方式。然后讲述它以及解释它。不过我现在刚刚意识到,解释事情给我的动力与我创造它们产生给我的动力一样的大。

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

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

20 年代,欢迎你!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant