亚马逊与 Uber,软件开发的方式有何不同?

  • 时间:
  • 浏览:0
  • 来源:东华大学教务处_贵州师范大学教务处_中国药科大学教务处山东理工
阅读模式

我是一名软件工程师,最近从亚马逊跳槽到了优步。我曾在亚马逊的多个部门和地区工作了六年半的时间。在过去一个月里,我一直在西雅图的优步数据研发部门工作。

我想在这篇文章中解答朋友和同事问我的一个问题:“在亚马逊和优步工作有什么不同?”

本文不包括的内容

我们无法简单地界定一家公司的工程文化,因为各个组合和团队的文化都是独一无二的。本文中表述的观点是根据我在特定团队和组织中工作时观察到的结果,并不能代表公司的文化。

这篇文章并不代表我此次跳槽的缘由,因此,请不要误解。

从亚马逊跳槽到优步

这两家公司的文化之间存在很多共通之处和对比性。其中一些可能是由于公司的规模产生的差异,还有一些则是公司自身固有的DNA和独特之处。下面就让我来介绍一下我遇到的一些值得一提的差异。

压迫开发运营团队

在不妨碍快速创新和持续生产发布的情况下,努力保持服务的高可用性是一个难以解决的问题。放到亚马逊和优步如此大规模的运维中,这个问题更为棘手。这两家公司都希望全心全意做好运维。但亚马逊已经通过长期的努力建立了解决问题的成熟流程,而另一方面优步仍在尝试哪种策略最适合他们。

亚马逊的软件工程师负担着沉重的运维工作,他们需要全天候值班和待命,亚马逊也因此落得声名狼藉,然而在现实中每家公司都会以客户为中心,非常重视系统的可靠性,优步也不例外。因此,由于新兴平台的快速增长和松散结构化的运维流程,优步的开发和运维团队也承担着巨大的压力,与亚马逊相比有过之而无不及。

开源

在我加入优步的时候,发现他们使用了很多开源软件,这让我感到意外惊喜。优步是一家开源优先的公司。这反映在公司内部工具和技术的选择上,以及对社区的巨大回馈。

围绕开源技术构建内部基础架构,让开发人员自由选择适合的工具,并集中精力解决需要创新的业务问题。这也意味着你可以拥有互联网上多元化的开发人员网络,帮助你解决在尝试调试第三方库时遇到的难题。相比之下,亚马逊的工作则主要依靠内部开发的基础设施和工具,工具的选择范围很窄,而且在遇到难题的时候可以获得支持的途径也很有限。

优步并没有构建自家的开发人员生产力工具(监控、仪表板、分页、招聘等),而是从提供软件即服务的公司购买了许多工具。与内部开发的工具相比,这些拥有专业软件产品的小型公司能够在各自的领域提供更好的服务。作为开发人员,你可以获得最新和最好的工具,这意味着你可以提高工作效率并改善软件开发生命周期。这也可以让开发人员专注于开发软件,解决优步独有的业务问题和功能。

透明度

在优步,每周都有机会与公司领导会面,并由高管们回答员工提出的问题。除此之外,你还有机会定期见到各个层面的管理人员。

作为开发人员,这种透明度可以让你了解每项工作决策背后的理由,有助于你将自己的工作与公司的目标更紧密地联系起来,并确保你的付出是为了解决正确的问题。此外,你还可以了解到你的直属团队或组织以外的难题。再加上他们对文档的高度重视,你有机会搞清楚每个你做出的决策(无论是否与技术有关)背后的“原因”。举个例子,假设我有一个问题:“为什么优步更喜欢Go,而不是Java?”或者“为什么我的组织架构采用了这样的形式?”,那么我一定可以找到一份文件详细解释了其中的原因。

这种透明度与每项决策息息相关,无论是否与技术有关,都让人感到精神振奋,而且有助于让你在入职期间了解现有基础设施的状况。相比之下,在亚马逊,透明度仅限于须知事项。

没有AWS

我很想念自动扩展规模的日子,只需点击一个按钮就可以管理好与MySQL相兼容的数据库。在AWS工作期间,我低估了云基础架构即服务(Infrastructure As A Service,即IaaS)为软件工程师的开发生命周期带来的便捷。使用云服务需要花钱,而在优步,虽然你可以选择使用任何技术来完成工作,但必须证明,花钱购买云提供商的服务相对于自行管理/开发的成本是非常值得的。

办公室的社交互动

由于优步西雅图工程办公室的员工人数很少,所以感觉办公室很小,即便不是同一个团队的同事你也很快就认识了。午餐时间的社交活动和团建活动在建设团队的过程中起着重要的作用。相比之下,亚马逊的各个职能部门各自为政,员工的社交互动仅限于两个披萨团队(除非你积极地参加全公司的活动,那倒是有很多)。

工程上的难题

两家公司在解决工程难题方面的差别不大。无论在哪家公司,由于规模和可用性的要求,你都会面临现有解决方案无法解决的业务用例(可能AWS的要求比优步在不同领域的要求更高)。这两家公司的业务问题可能有所不同,但从工程的角度来看,你正在设计的系统其规模越来越大,系统本身越来越健壮、越来越易于使用,且与现有解决方案相比越来越快。这些解决方案是专门为满足自家公司复杂且多样化的特定业务用例而量身定制的。也许两家公司的不同之处仅限于解决问题时投入的工程师人数。在亚马逊,处理某个问题时会投入两个披萨的团队,但在优步可能只有一位开发人员在处理解决方案。

战略决策和发展蓝图的参与度

在亚马逊,这方面的参与度完全取决于你所在的组织以及高管层设定的方向。我曾经历过完全不了解背景的项目,需求完全由上而下强制推进;也经历过由工程团队主导的圆桌会议,参与未来2-5年技术产品计划的讨论。在优步,每个与我承担的内部产品相关的决定都由我说了算,从界定差异到定义成功指标。鉴于我在优步的名气很有限,因此感觉这在我们组织中是常态(我们是一个平台组织,而不是产品组织),而且感觉优步的每个人比亚马逊拥有更多的所有权。

远程办公

猜你喜欢