「首席工程师」首席(Principal )工程师修炼之道

出境入境2024-03-12 01:55小乐

「首席工程师」首席(Principal )工程师修炼之道

过去几年,Grab 已从一家小型初创公司发展成为东南亚最大的科技公司之一。随着公司的发展,微服务、功能和团队的数量显着增长。在撰写本博客时,我们有大约350 个微服务支持我们的超级应用程序。

优秀的工程团队是我们成功的关键组成部分。作为一名工程师,您面前有两条职业道路:个人贡献者角色或管理角色。虽然管理角色通常更容易理解,但本文阐明了成为Grab 首席工程师的含义,这是我们工程职业阶梯上的最高级别之一。

提高质量“您为您的技术系列设定了卓越工程的标准。您的架构在效率、稳定性、可扩展性、可测试性以及随时间发展的能力方面堪称典范。您的软件在出现故障时非常脆弱。要健壮,可扩展且经济高效。您的编码实践在代码组织、清晰度、简单性、错误处理和文档方面堪称典范。您解决本质上困难的问题,在需要时获取专业知识。您将复杂的问题分解为简单的解决方案。——Grab 的工程职业阶梯

那么首席工程师是做什么的呢?随着您的职业生涯从初级到高级再到首席工程师,您的责任也会随之增加;您管理越来越大的系统。例如,初级工程师可能管理微服务的特定组件。高级工程师的任务是设计和运营整个微服务或产品。另一方面,首席工程师通常专注于团队级架构。

首席工程师级别类似于高级经理,你负责整个子组织的架构,而不是间接管理人(管理者的管理者),这就是所谓的技术家族/平台。这些技术家族通常拥有50 多名工程师,分布在多个团队中,就像一个小公司,拥有自己的企业主、设计师、产品经理等。

具有挑战性的项目“您承担可能需要多个团队一起工作的项目的工程所有权;您划分职责,以便每个团队都可以独立工作并将系统集成为一个整体。您的项目通常跨越团队、技术系列、平台,甚至跨界研发中心,征求不同意见,保持开放心态,善于凝聚共识,——Grab的工程职业阶梯

作为首席工程师,您的工作是解决更大的问题,并将模糊的问题转化为一系列可操作的项目。您可能会面临“提高Grab 交通系统的效率和互操作性”之类的大问题。 “你需要了解问题、业务影响,并思考如何改进它。它可能需要您设计新系统、更改现有系统、了解所涉及的成本,并召集合适的人员来实现这一目标。

单独解决这样的问题几乎是不可能的。您必须与其他经理和工程师作为一个团队合作才能实现这一目标。通过给你的领导/高级工程师一个明确的目标来帮助他们设计正确的系统,但让他们负责系统级架构。

您还将与经理合作,为他们提供完成工作的建议,并将正确的事情作为团队的优先事项。虽然您不需要精通项目管理和敏捷方法,但您确实需要能够与团队一起提前计划并了解项目或迁移需要多长时间。

一个技术家族可以轻松拥有20 多个微服务。您需要充分了解它们的功能需求和交互。这很有挑战性,因为学习新事物总是“不舒服”并且需要时间。你必须与工程师、产品经理和数据科学家接触,最好是面对面的接触,以建立同理心。不断提出问题并尝试了解事情是如何运作的。您还需要阅读现有文档及其代码。

技术所有权“您是对我们的架构和基础设施做出重大技术贡献的源泉。您将获得由一个或多个团队构建的软件的安全性、性能、可用性和操作的设计和质量的技术所有权。您确定您的时间需要花在哪里,根据项目和团队的需求在编码、设计和架构之间进行转换。您交付软件的方式允许团队进行自助服务,提供清晰的采用/迁移路径.——Grab 的工程职业阶梯

作为首席工程师,您将与整个技术系列的工程主管和经理合作,以提高整体系统质量。通常,没有人告诉您需要做什么。您需要找出差距,改进它们,并不断改进系统。

您还需要学习如何更好地管理您的时间,以便有效地确定优先顺序。这归结为了解自己的优势和劣势。例如,如果您确实擅长构建分布式系统,但对信息安全领域的最新和最出色的设计一无所知,请在本次会议中找到合适的信息安全工程师并考虑跳过它。不要试图一次完成所有事情,也不要参加所有受邀参加的会议。 —— 您仍然需要审查代码、设计和注意力,因此要进行相应的计划。

您还需要了解您的决策对业务的影响。例如,如果您为某个产品功能做出贡献,您想知道该功能将对组织产生多大影响。如果不知道,请询问负责的产品经理。如果您正在开发平台功能,例如改进构建系统,您应该知道它将如何帮助您。每位工程师每天节省30 分钟的构建时间是一项巨大的成就。

通常,您必须推动迁移,这类似于代码重构,但在系统级别,需要与人员进行大量协作。了解什么是技术债务以及如何减轻技术债务—— 良好的架构可以最大限度地减少技术债务,从而加快上市时间并帮助业务蓬勃发展。

技术领导力您可以通过领导复杂软件和/或关键功能的设计评审来扩大您的影响力。您探究假设、阐明陷阱并促进共同理解。您使团队朝着一致的架构策略发展。 ——Grab 的工程职业阶梯

在Grab 中,我们有一个名为RFC(征求意见)的流程,允许工程师提交设计和想法以供更多受众讨论。这一点尤其重要,因为我们的组织遍布多个大洲,在东南亚、美国、印度和中国设有研发办事处。虽然欢迎任何工程师对这些RFC 发表评论,但总工程师和首席工程师有责任定期审查它们。这将帮助您扩展对现有系统的知识,并帮助其他人改进他们的设计。

沟通是一项需要不断提高的关键技能,也是许多工程师的致命弱点,他们宁愿坐在座位上工作,也不愿与任何人交谈。对于初级工程师(甚至一些高级工程师)来说,这完全没问题,但对于首席工程师来说,沟通至关重要。让我们将其分解为一组需要改进的特定技能。

为了向他人传达您的想法,您需要能够有效地写作。这包括了解你的听众并以读者可以理解的方式说话。针对工程师受众的技术设计文档的编写方式与针对产品和业务经理受众的设计提案的编写方式不同。

您需要能够公开展示和谈论您正在从事的各种项目。这包括创建具有良好视觉效果的幻灯片以及将数月的工作压缩为几张幻灯片。学习这一点的最好方法就是走出去并不断展示你的作品。随着时间的推移,你会变得更好。

您还需要能够在不浪费任何人时间的情况下促进会议和讨论。作为技术领导者,您的主要职责之一是让人们朝着同一个方向前进并在会议中达成共识。

教学“您在个人层面和规模上教育其他工程师: 让工程社区了解最新的先进技术问题、技巧和趋势。例如,新员工入职训练营、实习生、特定技能差距培训开发,以及分享专业知识以提高其他工程师/团队/开发中心的技术水平。”

首席工程师是技术领导者,作为领导者,你有责任指导和辅导其他工程师,无论他们的水平如何。除了代码审查之外,您还可以在团队中组织办公时间和知识共享会议,每个人都有一些东西可以展示。您还可以帮助举办新兵训练营,帮助新员工快速上手。

最重要的是,无论哪种方法适合您,您都需要通过阅读期刊和论文、博客文章、观看视频录制的演讲、参加会议以及浏览各种开源项目来不断学习——。你也可以向其他抓取者学习,即使是初级工程师也可以教你一些东西,我们都有自己的优点和缺点。不断提升自己,完善自己!

原文:https://engineering.grab.com/about-being-a-principal-engineer-at-grab

本文:https://pub.intelligentx.net/being-principal-engineer-grab

讨论:请加入知识星球或小红圈【首席架构师圈】

猜你喜欢