当前位置:网站首页>"Chief Engineer" Principal (Principal) engineer's way of training
"Chief Engineer" Principal (Principal) engineer's way of training
2022-08-10 10:23:00 【51CTO】
在过去的几年里,Grab从一家小的初创公司发展成为东南亚最大的科技公司之一.随着公司的发展,微服务、功能和团队的数量也大幅增长.在写这篇博客的时候,我们大约有350个微服务在支持我们的超级应用.
一个伟大的工程团队是我们成功的关键组成部分.作为一名工程师,你面前有两条职业道路:个人贡献者角色,或者管理角色.虽然管理角色通常更容易理解,但本文澄清了在Grab担任首席工程师意味着什么,Grab是我们的工程职业阶梯中的最高级别之一.
提高质量
“你们为自己的技术家族树立了卓越的工程标准.您的架构在效率、稳定性、可扩展性、可测试性和随时间演进的能力方面堪称典范.您的软件在出现故障时是健壮的,可伸缩的,并且具有成本效益.您的编码实践在代码组织、清晰、简单、错误处理和文档方面堪称典范.你解决本质上困难的问题,在需要的时候获取专业知识.你把复杂的问题分解成简单的解决方案.——Grab的工程职业阶梯
那么,首席工程师是做什么的呢?随着您的职业生涯从初级到高级再到主管工程师,我们的责任越来越大;您管理越来越大的系统.例如,初级工程师可能管理微服务的特定组件.高级工程师的任务是设计和操作整个微服务或产品.而首席工程师通常关注团队级别的体系结构.
首席工程师级别类似于高级经理,你负责整个子组织的架构,而不是间接管理人员(经理的经理),这被称为技术家族/平台.这些技术家族通常有超过50名工程师,分布在多个团队中,作为一个小公司,拥有自己的企业主、设计师、产品经理等.
有挑战性的项目
“你承担了可能需要多个团队共同完成的项目的工程所有权;您可以划分职责,这样每个团队都可以独立工作,并将系统集成为一个整体.你的项目经常跨越团队、技术家族、平台甚至研发中心的边界.你征求不同的意见,保持开放的心态.你善于建立共识.——Grab的工程职业阶梯
作为首席工程师,你的工作是解决更大的问题,并将一些模糊的问题转化为一系列可操作的项目.您可能会面临一个大问题,如“提高Grab运输系统的效率和互操作性”.“你需要了解问题所在、业务影响,并考虑如何改进.它可能需要你设计新的系统,改变现有的系统,了解所涉及的成本,并召集合适的人来实现它.
独自解决这样一个问题几乎是不可能的.你必须与其他经理和工程师一起工作,作为一个团队来实现它.通过给你的领导/高级工程师一个明确的目标来帮助他们设计正确的系统,但是让他们负责系统级的架构.
你还需要和经理们一起工作,建议他们把事情做好,把正确的事情放在团队的优先位置.虽然您不需要精通项目管理和敏捷方法,但您确实需要能够提前与您的团队进行计划,并了解项目或迁移将花费多少时间.
一个技术家族可以很容易地拥有20多个微服务.您需要很好地理解它们的功能需求和交互.这很有挑战性,因为学习新东西总是“不舒服”,而且需要时间.你必须接触工程师、产品经理和数据科学家,最好是面对面地建立同理心.不断地问问题,试着理解事物是如何运作的.您还需要阅读现有的文档及其代码.
技术的所有权
“你们是对我们的架构和基础设施做出重大技术贡献的源头.您将获得由一个或多个团队构建的软件的安全性、性能、可用性和操作方面的设计和质量的技术所有权.您可以根据项目和团队的需要,确定您的时间需要花在什么地方,在编码、设计和体系结构之间进行转换.您交付软件的方式允许团队进行自助服务,提供清晰的采用/迁移路径.——Grab的工程职业阶梯
作为首席工程师,你要与技术家族的工程主管和经理一起工作,全面提高系统的质量.通常,没有人告诉你需要做什么.你需要发现差距,提高差距,并不断改进系统.
你还需要学习如何更好地管理自己的时间,这样你才能有效地确定优先级.这可以归结为了解自己的长处和短处.例如,如果您确实擅长构建分布式系统,但是对信息安全方面最新和最伟大的设计一无所知,那么请在本次会议中找到合适的InfoSec工程师,并考虑跳过它.不要试图一次做所有的事情,也不要参加每一次被邀请的会议——你仍然需要检查代码、设计和关注,所以要相应地计划.
您还需要了解您的决策的业务影响.例如,如果你为产品特性做贡献,你要知道这个特性对组织的影响有多大.如果你不知道,问负责的产品经理.如果你致力于一个平台特性,例如改进构建系统,你应该知道它将如何帮助你:每天为每个工程师节省30分钟的构建时间是一个巨大的成就.
通常情况下,您必须驱动迁移,这类似于代码重构,但是是在系统级别上,并且需要与人员进行大量协作.理解什么是技术债务,以及如何减轻技术债务——一个好的架构可以将技术债务最小化,从而加快上市时间并帮助业务繁荣.
技术领导
你通过领导对复杂软件和/或关键功能的设计评审来扩大你的影响力.你探查假设,阐明陷阱,促进共同理解.您使团队朝着一致的体系结构策略发展.——Grab的工程职业阶梯
在Grab中,我们有一个称为RFC(征求意见)的过程,它允许工程师提交设计和想法,供更多的观众讨论.这一点尤其重要,因为我们的组织分布在多个大洲,在东南亚、美国、印度和中国设有研发办公室.虽然欢迎任何工程师对这些rfc发表意见,但首席工程师和首席工程师有责任定期对其进行审查.这将帮助您扩展现有系统的知识,并帮助其他人改进他们的设计.
沟通是你需要不断提高的一项关键技能,也是许多工程师的致命弱点,他们宁愿坐在自己的位置上工作,而不愿与任何人交谈.这对于一个初级工程师(甚至一些高级工程师)来说是完全可以的,但是对于一个首席工程师来说交流是至关重要的.让我们将其分解为一组需要提高的特定技能.
为了把你的想法传达给别人,你需要能够有效地写作.这包括了解你的听众,并以读者能够理解的方式来表达.以工程师为受众的技术设计文档与以产品和业务经理为受众的设计建议的书写方式不同.
你需要能够公开展示和谈论你正在从事的各种项目.这包括创建具有良好视觉效果的幻灯片,并将数月的工作浓缩为几张幻灯片.学习这个的最好方法是走出去,继续展示你的作品——随着时间的推移,你会变得更好.
你还需要能够在不浪费任何人时间的情况下推动会议和讨论.作为一名技术领导者,你的主要职责之一是让人们朝着同一个方向前进,并在会议中达成共识.
教学和学习
“你教育其他工程师,无论是在个人层面还是在规模上:让工程社区跟上先进的技术问题、技术和趋势.例如,新员工入职训练营、实习生、特定的技能差距培训开发,以及分享专业知识以提高其他工程师/团队/开发中心的技术水平.”
首席工程师是技术领导者,作为领导者,你有责任指导、指导其他工程师,无论他们的水平如何.除了代码审查之外,您还可以在您的团队中组织办公时间和知识共享会议,在那里每个人都可以展示一些东西.你也可以帮助训练营,帮助新员工跟上时代的步伐.
最重要的是,无论哪种方式适合你,你都需要坚持学习——阅读期刊和论文、博客帖子、观看视频录制的演讲、参加会议、浏览各种开源项目.你也可以从其他的攫取者那里学习,即使是一个初级工程师也可以教你一些东西,我们都有自己的长处和短处.不断提高自己,不断完善自己!
谢谢大家关注,转发,点赞.
边栏推荐
猜你喜欢
SQL中的字符串截取函数
「应用架构」六边型架构:三个原则和一个实现示例
LCD模块如何建立联系分析
「技术选型」工作流引擎哪家强?首席架构帮你挑
[C language] Floating point number rounding
兼容移动和PC的loading加载和toast消息插件
Flutter实战-请求封装(五)之Isolate线程改造
Which is the strongest workflow engine for "Technology Selection"?Chief Architecture Helps You Pick
The Generation of Matlab Symbolic Functions and the Calculation of Its Function Values
Swin Transformer作者曹越加入智源,开展视觉基础模型研究
随机推荐
MySQL executes the query process
武功修炼:内功
解决ASP.NET Core在Task中使用IServiceProvider的问题
关于json转换器缺失的问题,报错内容:No converter found for return value of type
chart.js水平柱状图插件
【Redis】Redis入门教程(介绍 下载安装 Jedis 图形化界面)
ELK入门
Situation丨The intrusion of hackers intensifies, and the shooting range sets up a "defense shield" for network security
自动化测试及Selenium
关于编程本质那些事
ESP8266 Tutorial 2 - Burn AT Firmware
高通 msm8953 LCD 休眠/唤醒 流程
ZZULIOJ 1116 Delete elements [delete]
2022.8.8-----leetcode.761
「数据战略」结果驱动的企业数据策略:组织和治理
因子分析(SPSS)
JS高级 之 使用 Iterator - Generator
Numpy学习
【Azure云】服务端点和私有链接有什么区别?观点(1)
单例模式基类