首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

不同的企业文化之下,作为软件工程师,工作存在什么样的差异?

作者 | Divij Vaidya

译者 | 弯月,责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

以下为译文:

背景介绍

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

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

本文不包括的内容

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

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

从亚马逊跳槽到优步

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

压迫开发运营团队

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

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

开源

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

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

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

透明度

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

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

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

没有AWS

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

办公室的社交互动

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

工程上的难题

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

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

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

远程办公

在亚马逊,我曾经在西雅图的总部工作,所有的利益相关者、合作伙伴和上游依赖人员都在10分钟的路程之内;而在优步,利益相关者和依赖人员都在不同的地点办公。这一点可能仅限于我在两家公司工作的团队,但无论怎样我感觉我的工作有了很大的改变。如果我的依赖关系和利益相关者都在外地,那么我需要付出额外的努力才能实现协同工作。视频通话并不能完全取代面对面的会议和讨论。偶尔的跨办公室访问也无法取代所有人都在同一间办公室工作的巨大优势。

创新

优步鼓励软件工程师在与各自的工作和团队直接相关之外的领域寻找和解决问题。如果你发现一个想要解决的工程问题,而且感觉这对优步有好处,那么管理层很可能会允许你花时间解决这个问题,即使问题的范围超出了你们团队的所有权。相比之下,在亚马逊,你很难遇到其他组织所面临的难题,因此除非你换团队,否则很难解决他们的问题。

办公室的午餐/零食(很重要!)

亚马逊不为员工提供免费午餐,办公室也没有咖啡馆,你可以购买公司的健康午餐;而优步则免费提供午餐,每周都有固定的菜单。尽管我希望证明这种琐事在重大的工作计划中无关紧要,但事实是,在办公室吃免费的午餐,而且全天都可以吃到美味的点心,这提高了我的工作效率。因为我不会感到饥饿,也不用花半小时在拥挤的市中心餐厅吃饭,或早早回家吃饭。

今后的期待

当我成为一名真正的优步人nUber(这是优步对新员工的称呼),并在优步积累了一些经验时,我开始意识到公司的核心价值观/原则在日常工作中的体现。作为开发人员,这些原则有助于我们理解公司的决策过程,并让整个组织的不同阶层保持统一。在我有更好的了解以及随着工作经验的增加有更多体会时,我会写更多这方面的文章。

原文:https://medium.com/swlh/amazon-to-uber-from-the-lens-of-a-software-engineer-e5bd1c38caba

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190812A085MK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券