React 作者 Dan 的十年回顾
共 11615字,需浏览 24分钟
·
2024-05-11 07:55
我的十年回顾
2020 年 1 月 1 日
我作为一名刚从高中毕业的一年级大学生开始了这十年。我当时17岁,没有工作,没有任何行业联系,而且真的什么都不懂。现在你正在阅读我的博客!我会感到自豪的。
我在不同的播客上讲述了我的故事的一些片段。现在感觉是时候写下令我最难忘的部分了。
每个人的故事都是独一无二的,无法直接复制。我出生在一个上层中产阶级家庭,而且看起来像一个典型的程序员刻板印象,这让我受益匪浅。人们在我身上冒险。尽管如此,我还是希望分享我的故事能够有助于比较我们的经历。即使我们的情况相差很大,至少你可能会发现其中的一些有趣。
2010年
我出生在俄罗斯,2009 年在那里完成了高中学业。在俄罗斯,如果你考试成绩足够好,高等教育是免费的。我在几所大学尝试过机会。我特别希望能进入一所学生经常赢得编程比赛的大学(我当时认为这很酷)。
然而,事实证明我的数学考试成绩不够好。因此,我可以选择的与编程有关的选项并不多。从剩下的选项中,我选择了一所向学生提供 Macbook 的大学。(还记得带有 GarageBand 的白色塑料耳机吗?它们是最好的。)
2010 年夏天,我刚刚完成了在那里的第一年。事实证明,在接下来的两年里,课程中不会有太多编程内容。但有很多线性代数、物理和其他科目我觉得不是特别有趣。一开始一切都很好,但我开始偷懒,逃课,而我必须早起听课。我的知识差距逐渐像滚雪球一样越滚越大,大学第一年我所记得的大部分内容都是与彻底失败的感觉相关的焦虑。
即使对于我熟悉的科目,事情也没有完全按照我的计划进行。我们的英语课非常基础,我得到了老师的口头批准,可以跳过大部分课程。但当我来参加期末考试时,我不被允许_交卷_,除非我付钱跟同一个老师进行几个小时的“补习”。这段经历让我对高等教育产生了怨恨和怀疑。
除了是一个糟糕的学生之外,我还处于我的第一段认真的恋爱关系中——而且进展得也不太顺利。我不高兴,但我认为你可以通过继续不高兴并“解决”它来解决这个问题。不幸的是,我没有智慧再摆脱几年的非工作关系。
现在到了光明的一面。从职业角度来说,2010 年对我来说是激动人心的一年。我找到了第一份工作——软件开发人员!事情是这样发生的。
我的大学附近有一个小场地,举办了不同的活动。这个场所是一个“企业孵化器”——请注意,不是硅谷类型的企业孵化器——而是一个小型的俄罗斯企业孵化器。我不知道他们“孵化”了什么企业。然而,他们举办了一场有关软件开发的演讲,我决定去看看,因为我非常渴望这类内容。我在现实生活中不认识任何程序员,也不知道聚会的存在!
我现在不记得谈话内容了。但我知道给出这个消息的人是一家俄美外包公司的高管。我从 12 岁起就开始编程,所以我找到他并询问他们是否正在招聘。他给了我一封电子邮件,我完成了他们的测试练习,几周后就得到了这份工作。
我在 2010 年夏天开始了我的第一份工作。我的薪水是每年 18,000 美元(是的,这是 18,而不是 180)。这在发达国家来说是微不足道的,但同样,这是俄罗斯——所以租金也很便宜。我立即搬出了妈妈的公寓,开始以每月 150 美元的价格租一个房间。我很兴奋。我用我的第一份薪水买了一部 iPhone,并惊叹于它的 UI 有多好。
夏天来了又去,大学第二年开始了。但这是在没有我的情况下开始的。现在我开始做实际的工作,人们付钱给我,我就失去了听课和做练习的最后一点动力。我不再去那里了,也没有参加期中考试。我归还了我的 Macbook。我唯一一次去那里是五年后,去取论文。
一个简短的题外话。我并不是说大学毫无价值,或者你应该退学。这对我来说是正确的决定,但我知道当事情困难时我可以依靠我的家人(稍后会详细介绍)。我也已经有工作了。
由于我的背景(一个很早就开始编码的人),我有幸_默认_被视为知识渊博。不符合这种刻板印象的人通常会获得学位只是为了获得假定的能力。所以就是这样。
2011年
我的大部分工作是在更便宜的外包公司之后修复糟糕的代码。由于我自己没有行业经验,我对每个项目都进行了过度设计,以尝试我能掌握的每一种很酷的技术。我什至将随机的 Microsoft Research 项目投入生产。对于那个很抱歉。我也做了一些很好的工作。
我的第一个有趣的工作项目是一次旅行。我们的客户是纽约的一家投资集团。我对投资还是一无所知,但基本上他们有一个电子邮件系统来接收订单,这些订单需要经过不同级别的审批。他们有一项服务可以管理这一点,但该服务非常不稳定,没有人能弄清楚它是如何工作的。我的工作是去现场,在纽约工作一个月,并修复服务。
该服务是由一家更便宜的外包公司的承包商编写的。九年过去了,我仍然记得他的名字。该代码中最令人难忘的部分是一个三万行函数。为了弄清楚它的作用,我必须将其打印在纸上,将纸张放在桌子上,然后用铅笔进行注释。事实证明,这是同一个代码块,在不同的条件下重复了五十次。我猜某人的报酬是按代码行数计算的。
那个月我添加了一些日志记录来弄清楚该服务在生产中的作用,然后从头开始重建它以减少不稳定。在一家非科技公司工作是一次令人困惑的经历。例如,如果不编写一个 Word 文档来描述我的更改并让 IT 部门负责人签字同意,我就无法推送错误修复。现在_是_一些代码审查。
旅行即将结束时,我深夜去酒吧看了一场音乐会。第二天早上,我应该向客户展示我一个月的工作。我的会议安排在上午 9 点。不幸的是,我睡过头了,直到下午1点才醒来。我的经理为我道歉,我满脸尴尬地回家了。
工作中没有受到任何影响。这个项目总体上是成功的,客户知道我是一个奇怪的俄罗斯家伙,不知道如何梳理头发。但我知道我让自己出丑了。我也并不是特别期待更多的“企业项目”。工作变成了一件苦差事。
我回到了俄罗斯的圣彼得堡。夏天,那里的天空不会变黑。在一个晚上的自我反省中,我带着一种模糊的不安感从一家酒吧跳到了另一家。早上7点左右,我脑子里突然灵光一闪。我吃了一份沙威玛,坐地铁去办公室,等HR,然后辞职了。
我的朋友正计划去克里米亚旅行(在克里米亚被吞并之前),并问我是否愿意加入。我收拾了一个帐篷和一部旧诺基亚手机,电池可以用一周。我们在不同的思维状态迷雾中露营了两周,大部分时间都赤身裸体。除了两集之外,我几乎不记得那次旅行的任何事情。
有一次,有人拿刀威胁我。那个人说要杀了我,但第二天他就走了,一切都如常。还有一次,我愚蠢地试图独自绕着悬崖游泳,差点被淹死。我被海里的一块岩石救了,我爬了上去,昏倒了大约一个小时。
这次旅行就像一次硬件重置。我的倦怠得到了治愈,我准备好再次编写代码了。(但不要说我告诉过你要差点死才能治愈倦怠。)
唯一的问题是……我的技能无关紧要!哎呀。
你看,我主要是在编写桌面软件。有人听说过桌面软件吗?那已经不是什么事情了。要么你做后端,要么你做移动,要么你做前端。我对他们俩一无所知。而且我没有工作。所以我不得不搬回去和妈妈住在一起。(谢谢妈妈!)
很快,我在社交网络上看到了一条帖子。这是一个从硅谷回到俄罗斯的俄罗斯人写的。他正在寻找愿意免费参与他的项目的人,作为回报他免费教我们网络开发。当时,这对我来说听起来很划算。
我加入了这个计划。我很快发现没有真正的教学参与:我们从网上得到了一些教程,我们大部分是通过互相帮助来学习的。幸运的是,当我住在妈妈家时,我有能力这样做一段时间。我学习了 Git、Python 基础知识、Django、一点 CSS 和 JavaScript 以及一些 Bash 来部署我的更改。你好,网络,我来了。
九年后,我仍然不确定我对这个项目的感受。一方面,我们免费参与他的项目。另一方面,我们获得了完全的 root 访问权限,能够在生产中推动我们的更改并从错误中吸取教训,这真的很令人兴奋。它给了我们一个学习的结构。我们不需要花任何钱,而且你可以随时退出。由于围绕教育,这些项目具有一定的社会效用。这让我想起了开源。
我仍然感谢这个人设立了这个临时“训练营”并成为我的导师。但我不想暗示免费工作通常是一种很好的练习方式。我不是在这里提供建议——我只是讲述我的故事。
我建立了一个仪表板,我们可以在其中跟踪自己的学习成绩。我的导师建议我将其作为产品推销给开设课程的公司。我短暂地尝试“初创公司”是很尴尬的。我不知道我在开发什么产品,而且我向不同的人推销不同的东西。本质上,我最终用一个引擎为不同的客户制作了几个完全不同的网站,并在此过程中赚取了大约 200 美元。我在这上面浪费了几个月的时间,也浪费了愿意提供帮助的朋友的时间。我对此感到羞耻,并将其关闭。一线希望是我成为了一名网络开发人员。
但我仍然没有工作。
2012年
作为一名 20 岁的 Web 开发人员,我只想在一个地方工作。这是一家俄罗斯社交媒体公司。俄罗斯的每个人都使用他们的产品。那个产品非常精致。而且这个团队被认为_很酷_。几乎是精英。
他们的高管经常发布有关他们工程师的薪酬有多高的信息。这个工程师小团队似乎对技术挑战以及公司对待这些挑战的方式感到满意。在俄罗斯科技圈,许多人都知道他们的名字。
我的导师向我介绍了他们的 CTO,我得到了一份 JavaScript 练习。它涉及到构建他们的预先输入的克隆,你可以在其中选择要发送消息的朋友。我花了两周时间构建它。它在所有浏览器中都是像素完美的。我小心翼翼地复制了类似的缓存和去抖动行为。
现场面试是一场灾难。显然,我没有他们规模的经验。然而,他们表示,如果我“了解他们的产品”,他们愿意给我尝试一下。他们给了我一个为该社交媒体网站设计注销状态的练习。他们希望它显示功能手机的图片 - 许多人不知道该移动网站可以在廉价手机上运行。
我花了一周时间设计该页面。我做了很多小细节,甚至在里面藏了一些复活节彩蛋。我为自己感到骄傲。然而,我找不到任何设计得体、看起来不难看的功能手机。相反,我在那里放了一个漂亮的 iPhone 设计。我想,如此美观。
当然,我被拒绝了。我实际上忽略了唯一的硬性要求——为什么我这么笨?我哭了几个小时,因为我真的不想在其他地方工作。我仍然和妈妈住在一起,没有赚钱。
当时我严重怀疑自己的技术。很多事情对我来说都是“神奇的”。毕竟,我开始怀疑退学是否是一个好主意。我在 iTunes U 上报名了 iOS 开发课程。我还在 Coursera 上报名了两门课程:编译器和机器学习。也许他们会让我成为一个“真正的程序员”。
独自完成这些课程是很孤独的。我与我们的网络开发“训练营”的一些人组织了一次小型聚会。我们会在我导师的联合办公空间聚集并观看不同的在线课程。
一个月后,我收到一封电子邮件。有人想招聘一名开发人员,他从参加我聚会的人那里听说了我。我患有单核细胞增多症,忽略了这封电子邮件,但这个人一直给我发电子邮件。他想用Skype。
罗曼·马祖连科 (Roman Mazurenko) 并不是典型的初创公司创始人。Roman 对 DIY 出版很感兴趣。几年来,他和几个朋友一起让莫斯科变得很酷。他组织聚会并为时尚杂志摆姿势。我不知道会发生什么。但罗曼非常脚踏实地,交谈起来很有趣。他的梦想是建立一个像这个概念视频中那样的 DIY 发布平台。我必须搬到莫斯科并随时随地学习 iOS 开发。(顺便说一句,视频中的人不是Roman,而是一个朋友,视频中的应用程序是用Flash制作的假动画。Roman非常擅长制作烟雾和镜子。)
我说是。
我没有完成我的编译器和机器学习课程。我学到了足够多的知识,知道这些主题并不神奇。在那之后,我对它们失去了大部分兴趣。
2013年
到 2013 年,我的薪水达到了 3 万美元/年——几乎是我之前工作的两倍。虽然按美国标准来看较低,但在俄罗斯却相当不错。我还在 Stampsy 谈判了一些股票(剧透警告:它最终完全一文不值)。
我们的团队有五名开发人员和两名设计师。我们一开始是开发一款 iPad 应用程序,但我们都对 iOS 没有任何真正的了解。我记得当队友第一次弄清楚如何实现我们需要的动画时,我松了口气。在那之前,我以为我们注定要失败。
几个月来,我确实住在我们的办公室里。回顾这段时期,我对自己的生活与工作平衡并不感到自豪,而且这种平衡并不健康。然而,这几个月我学到的东西比两年前更多,我并不后悔。
最终,我搬出了办公室。我开始和罗曼住在同一套公寓里。我的房间每月花费 1000 美元。这是一套宽敞的公寓,位于莫斯科唯一我喜欢的区域,距离办公室仅五分钟步行路程。
我们认为我们编写的某些代码可能对其他人有用。因此我们开始在 GitHub 上发布这些作品。我们并没有期待什么伟大的事情,即使得到一些贡献也真的很好。我在那段时间从事的最受欢迎的项目有 30 颗星。对我们来说,这已经很多_了_。
我们团队的一位设计师向我介绍了 Bret Victor 的演讲,特别是《原则发明》。我认为这是一次非常好的谈话。_非常_好的一个。
四月份,我们发布了我们一直在开发的iPad 应用程序。Apple 联系了我们的团队并要求提供资源以在 App Store 中展示它。我们欣喜若狂。它保持了数周的特色,人们开始使用它。
当我们意识到产品不适合市场时,我们的兴奋很快就消失了。该应用程序旨在创建漂亮的杂志式布局,但没有人在 iPad 上拥有任何漂亮的内容。此外,iPad 的相机质量也很糟糕。该产品没有任何意义。我们怎能不认识到这一点呢?
我的私人关系也崩溃了。我们并不合适,大多数时候都是因为害怕孤独而互相依偎。我们终于分手了。
有几个月的时间,我没有和我们共同圈子里的人说话,而是专注于工作。但我意识到我想念一位特别的朋友。我写信给她,她说她也想念我。我安排了一起旅行的计划。
我感冒了。随着我们旅行的日子越来越近,我感觉更糟,但我希望也许我会没事。当我从莫斯科开往圣彼得堡的火车到达时,我明显发烧了。她说无论如何也要到她那儿去。她给我泡了一些热茶,给了我温暖的袜子,然后我们接吻了。我搬进去了。
2014年
对我来说,2014 年是 React 年。
在经历了短暂的生存危机后,我们放弃了 iPad 应用程序并决定转向网络应用程序。这意味着我必须学习 JavaScript,这次是真正的学习。我们用 Backbone 构建了一个不错的原型,但交互部分的编码很痛苦。
我的同事看到了 React,但最初不予理睬。但几个月后,他告诉我 React 实际上并没有那么糟糕。我决定尝试一下 React。讽刺的是,我从 Backbone 转换到 React 的第一个组件是一个 Like 按钮。
而且效果很好。_真的_很好。这感觉不像我见过的任何东西。
对于团队来说,React 并不难推销。在接下来的一年里,我们逐渐将所有 UI 转换为 React,同时发布新功能。React 和单向数据流的原理使我们能够更快地开发并减少错误。
我们开始了私人测试版,一些摄影师喜欢用它来创作视觉故事。它介于 Medium、Pinterest 和 Tumblr 之间。虽然没有太大的吸引力,但它并不像 iPad 应用程序那样彻底失败。
使用 React 的唯一问题是几乎没有生态系统。当我们刚开始的时候,只有一个路由器(不是_React_ Router),我们不知道如何使用它。所以我们自己做了。React Router 出来后,我们采用了它并添加了我们产品所需的功能。
我们的用例没有拖放解决方案,因此我将同事的库移植到 React。我做了一个助手来管理文档标题。编写了另一个库来标准化 API 响应。React IRC 频道的 Jing Chen 提出了核心思想,并且成功了!我几乎不知道几年后,Twitter 会用这个库建立他们的新网站并维护它。
我也想为 React 本身做出贡献。我联系了 Paul O'Shannessy,询问是否有任何我可以处理的拉取请求。我在几天内完成了第一个任务,但直到几个月后它才被合并。大项目发布周期等等。我对响应缓慢感到沮丧,所以我转而将精力投入到生态系统中。回想起来,这更具影响力。
2014 年,我进行了第一次公开演讲。我在我们的办公室做了一场关于 React 的讲座。整个活动持续了两个小时,我仍然感到惊讶的是,大多数到场的人都足够有礼貌地坚持到了最后。
后来,我报名参加 BerlinJS 聚会并发表演讲。我的主题是“React 和 Flux”。我没有练习演讲,直到时间到了才讲完前半部分。人们翻白眼,我终于吸取了教训。从那时起,我会把每个演讲排练三到十五遍。
2014 年,我收到了 Facebook 招聘人员的第一封电子邮件。我在收件箱中错过了它,几个月后才找到它。我们最终还是聊了聊,但事实证明,在美国雇用我并不容易,因为我没有足够的经验_,而且_我从大学退学了。哎呀。
我在 2014 年开始的一个项目对我来说特别珍贵。就像我生命中最重要的事情一样,它是随机发生的。我将我们的应用程序从 require.js 转换为 webpack 以启用代码分割。我读到了一个奇怪的 webpack 功能,称为“热模块替换”,它允许你在不重新加载页面的情况下编辑 CSS。但在 webpack 中,它也适用于 JavaScript。
我对这个功能感到非常困惑,所以我在 StackOverflow 上询问了它。Webpack 还很新,它的创建者注意到了我的问题并留下了回复。它给了我足够的信息,让我知道我可以将此功能与 React 结合起来,本着我之前提到的 Bret Victor 演讲中第一个演示的精神。
我通过编辑 React 源代码并添加一堆全局变量,编写了一个极其 hacky 的概念证明。我决定在它发挥作用之前我不会去睡觉,到早上 7 点我就有了一个可以在 Twitter 上发布的演示。在此之前没有人关心我的 Twitter,但这条推文收到了一些点赞和转发,而这 20 条转发非常有效。我当时就知道我不是唯一一个认为这令人兴奋的人。这个概念验证是一次性的工作,我没有时间在工作中继续研究它。我休假了,在那里完成了原型。
快速免责声明:再说一次,我并不是说你“需要”在晚上或假期工作。我并不是在歌颂忙碌,而且有很多拥有伟大职业生涯的人却没有这样做。事实上,如果我在时间管理方面做得更好,我可能会找到一种方法来在日常生活中挤出那些不受干扰的时间,或者学会在干扰中取得进展。我分享这个是因为我正在讲述我的故事,假装我在每周 40 小时内完成了所有事情是一个谎言。
2015年
我们的产品已经结束了内测。它正在增长,但缓慢且线性。该公司的资金即将耗尽,并且正在努力筹集更多资金。我想花越来越多的时间在我的开源项目上。
我还想发表我的第一次会议演讲。当然,我想谈论热重载,但我知道有人已经在 ReactConf 上提到过它,而且我认为人们不会对此感到兴奋。我决定在我的演讲提案中添加一些趣味,添加“时间旅行”——同样受到 Bret 演示的启发。这个提议被接受了,几个月来我没有考虑太多。
四月份,我的工资被推迟了几周。最终还是完成了,但我意识到是时候寻找新工作了。我发现一些公司正在使用我的一个项目,他们同意赞助我的工作几个月。
女朋友问我想不想结婚。我说我想我三十多岁就结婚了。她问:“为什么?”我实在找不到任何等待的理由,所以我们很快就买了戒指并结婚了。我们的婚礼花费了 100 美元。
我演讲的截止日期快到了。但我不知道如何实现“时间旅行”。我知道 Elm 有类似的东西,但我不敢看它,因为我担心我会发现时间旅行不能在 JS 中很好地实现。
当时有很多 Flux 库。我已经尝试过其中的一些,特别是 Andrew Clark 的 Flummox,我有一种模糊的感觉,使用 Flux 进行热重载_也_可以让我实现时间旅行。Sunil 的要点让我想到了一个想法:Flux 模式的变体,带有减速器功能而不是存储。我已经为它想好了一个简洁的名字。我的演讲确实需要它!
我在时间旅行演示中及时实现了 Redux。我的第一次演讲排练是在 Skype 上进行的。我满头大汗,咕哝着,跑得太快了。排练结束时,我问组织者我的演讲是否好。他说“好吧……_像_你这样的人”,我认为这是可怕的委婉说法。
我请一位来自我刚刚辞职的初创公司的设计师朋友帮忙让我的幻灯片变得漂亮。我添加了动画和过渡。我的演讲看起来越优美,我就越平静、越自信。我练习了十几次。
我飞往巴黎参加我的第一次技术会议。这可能是我一生中最快乐的一天。我第一次将面孔放在头像旁边。我周围有 UI 书呆子和我个人的偶像。感觉就像去霍格沃茨一样。
我的演讲几乎没有发生。早上,我发现我的笔记本电脑拒绝连接投影仪。我只剩下几个小时了。Christopher Chedeau 很友善地借给我他的笔记本电脑,我将现场演示设置转移到他的计算机上(Sublime 许可证除外,如果你看过的话,你可能会知道)。
起初,我的演示无法在 Christopher 的笔记本电脑上运行,因为我们有不同的 Node 版本。会议的 WiFi 非常糟糕,以至于下载另一个 Node 版本是不可能的。幸运的是,我找到了一个可以重建二进制文件的 npm 命令。它拯救了我的演示。我用他的电脑进行了演讲,进展顺利。
我在观众中遇到了很多我已经在推特上认识的人。其中之一就是景琛。我在 React 频道的 IRC 聊天中想起了她,就过来打招呼。她问FB招聘人员之前有没有联系过我,我说我拿不到美国签证。Jing问我是否有兴趣在伦敦办事处工作,我根本不知道_有_伦敦办事处!我打电话给我的妻子,问她是否准备搬到伦敦。我以为她会讨厌这个主意,但她立即答应了。所以我同意接受采访。
FB 来参加会议的有四个人,所以 Jing 就在会议酒店安排了一次完整的采访。这是一个常规的采访过程,只不过是在巴黎,每个人都满头大汗,因为外面太热了。
一切都发生得那么自然,我既没有时间准备,也没有时间紧张。有一次我吓坏了,因为我无法编写三行代码来交换数组中的两个项目。我让璟把目光移开几秒钟。她说“我知道你可以交换两件东西”,这给了我完成答案并通过面试的信心。我可能没能顺利通过,但我还是得到了这份工作。
我的演讲非常受欢迎。Andrew Clark 已经弃用了最流行的 Flux 库 Flummox,转而使用他与我共同编写的 Redux。人们开始将 Redux 投入生产。新学习者对自述文件感到困惑,该自述文件是为拥有所有现有上下文的早期采用者编写的。我没有工作,而且还需要几个月才能拿到英国签证。
我创建了一个 Patreon 来维持我的项目几个月——特别是编写 Redux 文档、创建小型示例应用程序并录制一些有关它的免费视频。我每个月在 Patreon 上筹集了大约 5000 美元,这比我一生中赚到的任何薪水都多。Egghead 的人给我发了一些麦克风设备,我录制了我的“Redux 入门”课程。今天我无法不感到畏缩,但它非常受欢迎,并且在很长一段时间内让我赚了很多钱(大约每月 3000 美元的版税)——尽管它是免费的。
FB 负责处理大部分移民流程。我和我妻子只需要填一些试卷,我还要参加英语考试和做一些健康检查。FB 完成了我们搬迁的大部分工作,包括将我们的猫从俄罗斯搬到英国(花费约 5000 美元)。我被聘为 4 级工程师,初始基本工资为 10 万美元/年,初始限制性股票单位在四年内归属,金额为 12.5 万美元。我还获得了 18,000 美元的签约奖金,这对我们安顿下来很有帮助。(顺便说一句,英国的技术人员工资比美国低。)
我们于2015年11月底抵达伦敦。我们之前从未去过伦敦。我们从机场乘坐了一辆黑色出租车。我们花了十分钟不知道如何关闭驾驶室内的暖气,所以我们满头大汗,透过窗户看不到任何东西。当我们关掉风扇,窗户变干净时,我们的眼睛像碟子一样睁得大大的。伦敦很美丽。
第二天,罗曼·马祖连科 (Roman Mazurenko) 被粗心的司机撞死。他的美国签证刚刚获得批准,他来到莫斯科领取文件。他曾经告诉我莫斯科有一些邪恶的东西。它不只是让你走。我不会再见到我的朋友了。2015 年不会,以后也不会。
罗曼在朋友们的帮助下度过了一种数字化的 来世。我知道事实上他会喜欢拥有两点五星级应用商店评级的讽刺。
2016年
新工作。新城市。新国家。不同的语言。陌生的口音。大公司。方向。会议室。项目。团队。文件。形式。拉屎。他妈的。他妈的。操他妈的,妈的,哦,亲爱的,天哪!
我几乎不记得最初的几个月。由于试图在没有字幕的情况下理解人们在说什么,我一直处于压力状态。我的经理到底在告诉我什么?要求再重复一遍是不是不礼貌?帮我拼一下吗?
_什么,我需要给苏格兰的一位女士打电话_以获取国民保险号码?我听不懂她在说什么。国民保险又_是_什么?为什么我的税码是“零”?为什么我的工资低于我的预期?等等,这里的人_真的纳税_吗?当我生病时我该怎么办?什么是国民医疗服务体系?
2016 年我第一次去美国(入职的一部分)期间,我一整天都忘记吃饭,喝了很多咖啡,并在试图向同事解释热重载的工作原理时陷入了彻底的恐慌。我们叫了一辆救护车,我收到了一张 800 美元的账单(谢天谢地,是由 FB 支付的——或者至少我不记得自己付过钱)。
尽管公司解决了大部分困难,但搬迁还是令人伤脑筋。我以为我已经完成了入职说明中的所有操作,但我忘记了向警方登记。(我把这与在邮局登记混淆了,我们也必须这样做。)几个月后我才发现我们搞砸了,我们被告知这可能会影响我们的签证。幸运的是,到目前为止还没有。
最初,我应该加入伦敦的 React Native 团队。通常,我们会雇人来参加训练营并选择一个团队,但我没有这样的自由。我是预先分配的。然而,我对 React Native 并不是特别感兴趣。我和 Tom Occhino(他当时管理 React 团队)交谈过,他建议我可以作为唯一的英国成员加入React Core团队(位于美国)。我已经习惯了开源的远程工作,所以我同意了。
2016 年,出现了 React 热潮,但每个人都用捆绑器、观察器、编译器等制作了自己的“样板”。React 成为模块化 JavaScript、ES6 和所有工具复杂性的代名词。Christopher Chedeau 建议为 React 入门构建一个命令行界面原型。我们在几周内制作了第一个版本并发布了Create React App。
2017年
书呆子课程继续带来稳定的附带收入和版税。我毫不犹豫地将它们花在送餐或漂亮的衣服上。
直到 2017 年,我才意识到这些特许权使用费要作为外国收入纳税,而且我欠女王陛下大约 3 万美元。哎呀。像一个成年人一样,我有一个会计师。修复这个烂摊子又耗尽了我所有的积蓄。
在工作中,我们花了 2017 年的大部分时间从头开始重写 React。你知道它的结果是React 16。索菲讲述了我们如何在这里做到这一点的故事。
除了税收之外,我的个人生活并没有发生太多事情。我还在适应环境。在与官僚机构打交道时我不再那么害羞了。我可以毫不惊慌地拨打和接听电话。我看的电影没有字幕。我学会了如何处理 NHS 和私人保险。我不再做副业了。
2018–2019
过去的两年是一片模糊。我与他们的距离仍然太近,无法清楚地了解什么是重要的。
从专业角度来说,我们的项目一如既往地要求严格。如果你关注 React,你就会知道我们一直在做的一些事情 。我已经成长为一名工程师,但仍有很多东西需要学习。我们的伦敦团队已经成长——现在我并不孤单。
人们偶尔会认出我。这是令人谦卑的。曾经有人在桑拿房里认出了我,并开始抱怨 React。请不要成为那样的人。
我升职了。我开始这个博客是作为一个业余项目。我还有另一个副业项目即将开始,这两年的大部分时间我一直在思考这个项目。我从互联网上认识了更多的人,并为头像添加了更多的面孔。这个很有趣。
我一直都知道我喜欢构建 UI。我迷上了 Visual Basic。我花了这十年的时间构建 UI,然后构建一种构建 UI 的方法。然后谈论它并解释它。但我现在意识到,_解释_事物的动力对我来说与构建的动力一样重要。或许,更重要的是。
我期待在未来十年里做更多这样的事情。
或者,我应该说,_这_十年?
欢迎来到二十几岁。