我做了不应该做的事情。我从 Stripe 辞职了,而且没有找好下家。
在离开之前,我深思熟虑地考虑了如何离职。离职的想法既令人恐惧又令人振奋,这出乎我的意料。我发现自己半夜醒来,思考很多问题。我把这些长篇的思绪写成了一篇内部博客文章。我反复修改,读给妻子听,她帮助我把这些内容精炼成我真正关心的东西:更真实地讲述我们的故事。
现在,我想将我的故事更广泛地分享出去。为什么?因为也许有人正在孤独地挣扎。
我害怕公开分享这些内容。我担心这会让人怎么看待我。我已经把这个帖子搁置了几个月,一直在质疑自己的动机。但到了某个时候,你只能按下“不管它了”这个按钮。
我重视诚实。见鬼,我核心价值观之一就是“谦逊的诚实”。我想这就是一种体现吧。
以下是我内部分享的内容,未经任何编辑:
大家好,我是 Jon。我在 Stripe 工作了将近四年。我的最后一天将是 8 月 30 日星期五。最近我越来越被真实写作所吸引。我希望能够向你们分享我在 Stripe 的经历,这些故事不会出现在邮件中。让我们从头说起。
那是俄勒冈州波特兰市家中办公室的一个夏日下午。我坐在书桌前仔细检查我的 IDE 设置,确保在即将到来的电话面试中展现出最好的一面。TypeScript 配置好了吗?完成了。安装了最小的测试框架吗?嗯哼。Tmux 能用吗?可以。终端颜色显示得低调而雅致吗?就像孔雀一样。
我看着时钟慢慢接近下午 3 点,手心已经开始出汗。我紧张得要命。我已经在软件工程领域取得了成功的职业生涯,差不多有十年的时间。我发起了并推动了全公司向 Kubernetes 的迁移。我编写了一个被数百名工程师使用的组件库。当我的前公司被 AT&T 收购时,我获得了最高的留任奖金包。然而,在面试前夕,这一切似乎都不重要了。我即将接受严格的评判,非常害怕被认为能力不足。
我对 Stripe 的印象非常高。我认为它是一家杰出的公司,注重工艺、细节和工程卓越。每当在 Hacker News 上看到推出的新产品时,我都会兴奋不已。我听过 Patrick 在播客上的讲话,敬仰他作为行业领袖的远见。用“崇敬”这个词来形容再合适不过了。
带着这些错综复杂的感觉,我迎来了 3 点钟。心跳得如此强烈,我甚至能感觉到它在我的脑袋里跳动。我尝试深呼吸,但并没有帮助。我的脑子里不断回顾每一个细节。“我会在 30 秒后加入,这样他知道我准时了但不是太急切。”我加入了通话,面试官也随后加入。
他自我介绍后,我们开始了电话面试的惯常仪式。我告诉他我已经设置好了自己的环境,并共享了我的屏幕。“他一定会注意到我精心设置的编程环境。”我想。
他给了我一个 coderpad 链接。我开始阅读题目。我已经感到思维像糖浆一样缓慢。表面上看,这个问题似乎相当直接。它展示了一个简单的数据结构,要求根据一组约束条件进行过滤。“没问题!”我想。
我启动了 VIM 并开始工作。“既然他们对质量如此重视,我应该确保类型定义无懈可击。”我从类型建模开始。“嗯,这个问题需要动态键,所以我需要一个索引类型。感谢上帝我不用查资料就能记得怎么做。不想显得软弱。”
尽管腋下已经湿透,事情进展还是比较顺利。我默默地怨恨妻子单方面放弃使用抗汗剂的原因是化学物质。
我找到一个合理的点来运行代码。保存文件后,我的小 fsnotify 脚本检测到文件更改,运行了 TypeScript 检查,然后执行了我的代码。
错误。糟了。
当我仔细阅读错误时,意识到自己并不立即知道解决方法。一团黑暗逐渐笼罩了我的思绪边缘。我手忙脚乱地尝试了几分钟,试图正确解决问题。被困住了,被自己想表现得有能力的需要束缚住了。我能感受到自己的思维在不同的想法之间飞快跳跃,试图找到出路。最终,我看了看时间,发现面试已经进行了一段时间。我必须找到一个泄压阀,以防止整个事情失控。
我做了不可想象的事情。在代码中添加了一个 //@ts-ignore
注释以绕过编译器。
“啊哈哈,如果这是真实的代码,我当然会解决这个问题。为了节省时间,我先忽略这个错误继续前进。”我说。
我继续沿着越来越危险的道路走向解决问题。又一个错误。再一个。更多的忽略注释。糟了糟了糟了。
那一刻,我已经几乎完全不在状态了。我掉进了一个自我的意识黑洞,感觉这威胁到了我的存在。
我知道代码已经接近完成,但我的思维已经消失了。我完蛋了,我也知道这一点。他友好地结束了面试,问我是否有问题。我结结巴巴地问了一些问题,但我知道结果已经定了。
不合格。失败。
我们结束了通话,我把头埋在手里,但只有一会儿。一个想法浮现在脑海中。如果我能迅速让代码运行起来,并找到办法发给他呢?
我切换到 Chrome,谷歌了他的名字。唯一能找到的是他的 Twitter 账号。那时我已经没有什么可失去的了,所以解决这个问题变得轻而易举。几分钟内,我整理了一份包含工作的代码的公共 Gist,并给他发了一条私信:
不必回复我。我只是讨厌像那样留下未解决的问题。代码还不是完美的,但我至少想联系你并发送给你。再次感谢!
我紧张地点击了发送按钮,沮丧地离开了电脑。几天后,我收到了预料中的邮件。
拒绝。
最终,六个月后,我鼓起勇气再次尝试面试。我得到了这份工作。我非常高兴。我对能在 Stripe 得到工作感到非常自豪。我甚至做了一个简单的 Web 动画,与同事分享我的下一个去处。
我是新成立的 JS 基础设施团队的第一个成员。我努力工作,试图证明自己。花了很长时间我才找到一个能够明确展示业务价值的项目。在找到那个项目之前,我一直在其他方面挣扎:写作。
刚来到 Stripe 时,写作对我来说很困难。在我之前工作的较小公司中,我从未真正写过严肃的项目提案。我的写作技能显得极其不足,随着每天阅读那些精心撰写的邮件,这种感觉更加强烈。我试图鼓起勇气分享一份费尽心思的文档链接时,胸中总会有一种下沉的感觉。更糟的是,看到未完成文档上其他人的头像标志。让不完善的工作被看到让我感到害怕。我并不希望别人知道我陷入了困境。我也不希望他们知道他们的意见对我来说有多重要。
稍后再回到写作的话题。
大约一年后,我在 Stripe 找到了第一个真正有影响力的项目。我孜孜不倦地努力将 Dashboard 开发迁移到一个新的 JS 打包工具上。开发速度提高了约 10 倍。这是一个巨大的成功。
我记得朋友在 Slack 上告诉我,我发布的邮件成为了 Patrick 在周五炉边谈话中的一个标签。那时我因为忙着工作而没有参加。得到亿万富翁的认可?幸福极了。想到 Patrick 注意到我,感觉无比美好。终于,我在梦想中的公司证明了自己。我飘飘欲仙。
直到我与老板的下一次一对一会议。她向我提出了一些关于沟通和项目管理的担忧。她和其他人收集的反馈觉得我没有很好地拉其他工程师参与到项目中。她谈到了对成果的自豪感,但这并不能弥补我不够理想的手段。
绩效评估时,我得到了部分符合期望(PME)。
“我知道在这么成功的项目之后,你可能会觉得这个评价很难接受。我想向你保证,只要你解决围绕项目管理和保持高质量交付的反馈,下一轮评估就会有所改善。”老板在另一个一对一会议中对我说。
电话结束后,我爬进衣柜,默默哭泣。这是我为数不多让自己这样做的时刻之一。我感到羞耻和屈辱。
我告诉了那些把我推荐给 Stripe 的朋友们关于我的评分,他们都很震惊。他们给了我很温暖的话语,但这一切都感觉很虚伪。每个人都向我保证,PME 是一种正常现象,并且他们确信我会振作起来。这仍然让我感到痛苦。更糟糕的是,因为这件事影响如此之深而感到沮丧。“该死的,Jon, shrugged it off and get back to work(耸耸肩继续工作吧)” 我这样告诉自己。
我从团队中