作为优步工程资金团队的新毕业生学习

0
作为优步工程资金团队的新毕业生学习

完成计算机科学学士学位为大学毕业生提供了第一个持续的机会,离开学术学习的行列,尝试在更广阔的市场中应用他们的技能。

去年5月,我从加州大学伯克利分校(University of California, Berkeley)毕业前,我的目标是找到一家有有趣问题的公司,这家公司能让刚毕业的学生有机会立即对解决这些问题产生影响。去年夏天在一家大公司实习后,我看到一些重要问题得到了解决,但我觉得我对个人责任的渴望在那种规模的成熟公司无法得到满足。我渴望一个更接近起步阶段,需要工程师,有丰富的学习和职业发展机会的公司。

在面试之后软件工程职位在优步的资金团队,我知道我遇到了对手。这是一家颠覆性的公司,在一个古老的行业进行创新,提供了一个团队建设的职位,并扩大了一个每天处理数百万笔交易的支付平台。

第一个任务

在我入职后不久,我就有机会参与Uber当时最重要的项目:改造Uber最大的项目PostgreSQL表成提供分片的、无模式的数据存储的服务

为什么有必要这么做?高行程量导致Uber对应的表超出了单个PostgreSQL数据库的限制。需要一个新的设计来容纳更多的信息。完全重新设计Uber的出行模式(我们如何定义出行)意味着要重构现有的代码库。这项工作持续了几周,包括来自多个团队的工程师,包括该公司的实际CTO和工程主管Thuan Pham。

然而,这样一项巨大的工程并非没有挑战和风险。相互依赖的服务越多,一个服务的更改对另一个服务产生不利影响的风险就越大。您可以尝试考虑尽可能多的依赖项,但在一个相当大的代码库中,需要跟踪的依赖项有数百个(如果不是数千个的话),这些依赖项可能会随着每周的额外更新而变化。

考虑到这一点,我对公司进行了迄今为止最大的代码更改。我们新的旅行数据存储是不可变的,因此我们需要一种新方法来存储对旅行票价的更改。我们决定将票价调整信息移到一个新的Postgres表中。除了重构表以读写新的数据存储外,还需要设计它的模式。在工作了两周之后,我在一个周五的下午把我的更改推到了生产阶段。考虑到周末持续的高流量放大了任何可能的漏洞,Uber周五的部署应该只包含关键的变化。

这个错误

在我的更改上线大约一个小时后,一位随叫随到的工程师确定我的更改导致了所有行程费用显示0.00美元在司机应用程序收据.这是怎么发生的?我正确地修改了内部API服务的行为,但我没有考虑到影响下游服务行为的更改。因此,我的代码创造了一个显示错误,会让司机在完成每次旅行后认为他们没有从他们的旅行中赚钱。

凭借优步的全球影响力,变革迅速蔓延。我造成了远至澳大利亚悉尼的司机报告的停电,这让我感到羞愧。我到公司才几个星期,对处理这种规模的问题毫无经验。整个事件会如何发展?

经验教训

问题被诊断出来后不久,多位工程师伸出援手。他们向我介绍了如何协调和沟通紧急部署以发布修复程序。在通过调试和添加更多单元测试确定错误后,我在第二天早上部署了修复程序。随着收据正确显示正确的金额,业务恢复到正常状态。

通过这次活动,我了解了Uber作为一个工程组织。作为一名刚毕业的软件工程师,我最担心的是导致全公司的宕机。我这样做了,但我并没有受到其他工程师的负面影响,而是被视为一种短期成本的长期学习经验。在我的同事帮我解决了这个问题后,他们中的许多人都分享了自己造成全公司范围内停机的类似经历。

这样的一次不幸不仅证明了我正在编写的代码的重要性,而且还让我了解了我们工程组织的真实特征。我能够把一个错误变成一个学习的机会,让我成长为一名工程师。

我了解到在快速变化的公司中沟通代码更改的影响的重要性,以及最终与复杂系统一起工作将不可避免地导致故障。我很幸运有工程师伸出援手,我很乐意把它传递给下一个我发现需要帮助的人。

把爱传递出去:科里·麦克道尔(左一)现在负责车辆收据工程,他和伯克利分校的同事、2015年夏季资金团队实习生拉里·徐(中)一起工作。货币工程师Joe Maliksi在我们位于旧金山的工程办公室工作(中右),该办公室位于第三街和市场街附近。
把爱传递出去:科里·麦克道尔(左一)现在负责车辆收据工程,他和伯克利分校的同事、2015年夏季资金团队实习生拉里·徐(中)一起工作。货币工程师Joe Maliksi在我们位于旧金山的工程办公室工作(中右),该办公室位于第三街和市场街附近。

图片来源:我所拥有的那点小钱——那是我的财富,而我所拥有的那些我不愿为之花钱的东西,那才是我的财富。罗伯特·Brault ~通过凯特·特尔哈尔下许可CC-BY 2.0.图像裁剪的头部尺寸。

评论