How Tobe an Principal Engineer - 如何成为首席工程师

AI 摘要: 本文介绍了工程师的分级以及对首席工程师的理解,首席工程师需要具备卓越的技术能力和领导能力,以及高效能的习惯。卓越的技术能力包括专业技能扎实和领域知识深入了解。

最近在复盘准备面试,集合 GPT 中的 OpenAI 问题答案,尝试把自己对于首席工程师的理解系统整理出来,方便自己查漏补缺!

1. 工程师分级

在软件工程领域,通常存在一些常见的工程师分级。这些分级可能会有不同的称谓和具体细节,具体的分级方式也可能因公司、行业和地区而有所不同。以下是一种常见的工程师分级方式:

  1. 初级工程师(Junior Engineer):初级工程师通常是刚刚入行或者经验较少的工程师。他们可能需要指导和支持来完成任务,并在实践中不断学习和成长。
  2. 中级工程师(Intermediate Engineer):中级工程师具备一定的工作经验和技术能力。他们能够独立完成任务,并对所负责的系统或领域有一定的理解和掌握。
  3. 高级工程师(Senior Engineer):高级工程师是经验丰富、技术能力较强的工程师。他们在系统设计、架构和解决复杂问题方面具备较高的能力,并能够为团队提供指导和支持。
  4. 首席工程师(Principal Engineer):首席工程师是具有卓越技术能力领导力的工程师。他们具备卓越技术能力(专业技能、领域知识、复杂问题处理)和卓越领导力(战略规划、管理能力、协同能力、团队效能)以及高效能的习惯,对团队、企业方面发挥重要作用,并对整个技术组织有深入的影响力。

2. 你是如何理解首席工程师?

基于第一性原理,反推自己要在哪些方面继续努力

首席工程师在技术能力领导能力两方面非常卓越,同时具备高效能的习惯,能够做到不断更新、持续学习和精进

如何成为首席工程师

3. 卓越的技术能力包括

3.1. 专业技能扎实

3.1.1. 基础知识很扎实

  • 计算机专业知识(数据结构与算法、操作系统、网络编程、数据库、中间件)
  • 编程语言(Go、PHP、Python、JS)
  • 全栈(Web 前端、客户端、Linux 运维、测试、DevOps CICD)

3.1.2. 架构设经验丰富

  • 带团队从 0 到 1 搭建一个电商系统、完成微服务转型,搭建开放平台账号系统,演进结算计费系统、消息 Push 系统
  • 熟悉分布式微服务架构,熟练掌握DDD领域建模,熟练构建分布式高性能高可用可扩展安全低成本的系统
  • 熟练掌握架构设计原则编程思想,能够从业务实际场景出发,分析识别软件复杂度结合现状设计出合适的架构(TradeOff)
  • 业务架构、技术架构、数据架构经验

3.2. 专业领域知识非常深入

  • 电商领域(广告营销、大促活动、用户账户、商品订单、支付结算、仓储物流、售后服务)
  • 在线教育领域(直播房间、消息信令、音视频)
  • 专业领域实战项目经验丰富,业务专家从0~1实现系统设计和落地过相关项目
  • 大数据、AI、算法

3.3. 复杂问题分析解决能力

系统化收集信息、分析关键问题、分治解决,保持头脑极度开放,结合团队现状制定合适解决方案

  • 信息收集和分析:通过数据分析文档阅读代码走查功能体验专家咨询,深入了解问题背景和相关因素,更好的把握问题的本质
  • 系统化思考原则:系统化统一思考,了解问题组成部分相关性,有助于更好的看清全貌,识别关键问题问题根因,避免问题遗漏、偏差
  • 分治原则:大问题拆分子问题,降低问题的复杂度,使解决过程更加可行和可控(DDD、业务域、分层、组件化、模块化)
  • 保持头脑极度开放(放):突破传统的思维经验教条限制,竞品调研、创新思维行业趋势,防止避免造车
  • 制定合适解决方案(收):基于收集到的信息,考虑不同的方法和策略,并评估它们的优缺点,结合团队和业务现状, 选择最合适的解决方案,并制定详细的行动计划
  • 总结反思:回溯复杂问题处理过程中好与不好的地方,将相关方法论沉淀,如果是故障类,思考如何后续避免同类型事件发生
  • 团队合作参考卓越领导力-协同合作能力部分

4. 卓越的领导力包括

4.1. 战略目标制定能力

确定在未来一段时间内,朝哪个方向前进,会经历哪些里程碑和路径,大概要多久才能到达目的地

  • 目标管理:看清自己位置,明确方向,根据 SMART(具体、可测量、可达成、相关、时限)原则制定清晰战略目标,输出 RoadMap 里程碑
  • 时间管理:优先级管理,因为人力、时间资源都是优先的,遵循要事第一原则,二八原则,抓大放小

4.2. 管理能力(理事管人)

制定详细的执行计划,高效能的实现既定的战略目标(任务管理、时间管理、人员管理、进程管理、成本管理、复盘管理)

4.2.1. 项目管理(理事)

  • 任务管理:分解任务和授权,战略目标分解为具体的任务和项目,合理的分配给合适的团队成员,给予团队成员适当的授权和自主权,鼓励他们发挥创造力和主动性
  • 时间管理:要事第一,二八原则,抓大放小
  • 方案&成本管理:基于项目方案识别关键成本要素(机器、人力),制定预算、成本跟踪、成本控制、定期报告和审查
  • 进程管理(进度、风险&质量管理)
    • 进度:通过晨会、例会,主动收集项目或任务的,确保进程符合预期
    • 风险:期间是否有遇到什么风险,是否要及时解决
    • 质量:施工过程是否有保质保量完成
  • 复盘管理:定期反思和改进,识别项目过程中好与不好的地方,争取同样的问题尽量下次不要重复发生

4.2.2. 人员管理(管人 - 选用育留)

  • 招聘选拔:组建团队,基于能力潜力全面评估候选人的能力和适应性,筛选高素质适合团队的人
  • 人员使用:金子、钢、铁、废铁、铁锈
  • 目标设定和绩效管理(OKR)
    • 高绩效(萝卜):薪酬福利、奖金、晋升机会、项目奖金
    • 低绩效(大棒):提供指导、培训支持、制定改进计划、警告、解雇
  • 员工培训和发展:为团队成员提供必要的培训和发展机会(晋升、内部培训、外部培训、导师制度、工作轮岗),以提升他们的技能和知识,帮助做职业规划

4.2.3. 协同合作能力

打造高效的团队,激励和激发团队成员的潜力,培养团队的凝聚力和归属感

  • 目标共识:确保团队成员对共同目标有清晰的理解和共识,帮助团队成员聚焦于共同的任务和方向,增强团队的凝聚力和协同性
  • 团队文化
    • 互信、尊重和支持(分享意见、提出建议和解决问题)
    • 开放、进取和包容(信息共享、知识传递和技能互补)

4.2.4. 高效沟通

具备良好的沟通和表达能力(口头、书面),能够清晰、有效(金字塔原理)地传达自己的想法和观点(反面无效沟通、表达逻辑混乱)

  • 沟通前-明确沟通目标:希望通过沟通实现什么样的沟通结果和预期
  • 沟通前-了解沟通受众:了解你的受众是谁,他们的背景需求是什么,选择适当的语言和方式来传达信息,确保重要的信息能够被清晰地传达。
  • 沟通前-选择合适沟通方式:根据沟通的目的和受众的特点,选择合适的沟通方式(面对面会议、电话、电子邮件、即时通讯工具等),确保选择的方式能够达到高效沟通的效果。
  • 沟通中-言简意赅清晰简洁易于理解的语言进行沟通,避免使用复杂的术语、行业专有名词,避免冗长和模糊的表达,突出重点,确保你的信息能够被受众轻松理解
  • 沟通中-倾听、尊重和理解对方:沟通是一个双向的过程,不仅要表达自己的观点,也要倾听对方的意见和反馈积极倾听对方的观点,展示出真诚的兴趣和尊重。努力理解对方的观点和立场克制自己表达冲动,避免偏见和主观判断。
  • 沟通中-提供明确的行动步骤和期望:主动提供明确的行动步骤和期望确保对方清楚自己需要做什么,避免产生误解和不必要的延误
  • 沟通后-及时回应和跟进:对于收到的信息或请求,尽快给予回应,并跟进相关事项,及时沟通可以避免信息滞后和误解的产生。

4.2.5. 冲突管理

及时处理,鼓励表达,求同存异(鼓励团队成员积极表达意见,倾听不同观点,寻求共同的解决方案),必要时候寻找中立第三方介入

4.2.6. 资源支持

积极争取和分配资源,确保团队拥有必要的资源和支持,包括人力、财力、技术和设备等方面的支持,帮助团队成员提升技能和能力,以解决团队在执行过程中的需求和挑战

4.3. 实现卓越的团队研发效能

4.3.1. 研发流程和规范

  • 研发流程标准化:需求明确 → 可行性分析 → 方案设计 → 人员排期(版本规划)→ 研发编码 → 持续集成 → 部署自测 → 联调测试 → 产品体验 → 版本发布 → 运营观测 → 用户反馈 (TAPD 需求单、Jira IWiki 方案设计排期、工蜂 Git 编码、智研项目 CICD、智研测试环境部署、NoHost 配置测试代理测试、K8S 部署更新、全链路监控告警、业务数据 Grafana 观测)
  • 研发规范清晰:清晰研发规范(业务域、代码库、git 分支命名)和编码规则(服务命名、目录、分层、命名、错误码规范、配置规范、组件选型、组件使用规范等)、培训分享(解释、示例和实践分享演练)、代码审查CR、代码自动检测工具、知识共享和交流(好用例分享)、持续改进

4.3.2. 敏捷迭代开发

  • 需求敏捷迭代开发:小步快跑、MVP、高效能协作(专项、例会、小群、小黑屋作战室)
  • 敏捷的基础设施平台支持
    • CICDCO:持续集成、部署、观测,使用自动化构建、测试、部署工具实现软件持续集成、自动化测试、持续部署、持续观测,确保代码的稳定性和可靠性
    • 容器化技术:依赖容器化、K8S 等技术确保基础设施的不可变性

5. 高效能习惯包括

  • 高效能人士 7 个习惯:积极主动、以终为始、要事第一;统合综效、知彼解己、共赢;不断更新;
  • 保持好奇心,持续高效的学习新的知识,保持对前沿技术和趋势的感知
    • 高质量信息输入:行业 Top 资讯(业界大会、专栏、新闻、讲座、训练营、大 V 技术 Blog)、向牛人学习(Leader、导师、专家、行家学习)、读书
    • 高质量信息输出:技术 Blog文章分享内容札记
  • 持续找有挑战的事情做:走出舒适区,不断挑战自己,主动寻找和接触各种类型的问题,挑战自己的思维和解决能力。与经验丰富的人合作,学习他们的方法和技巧
  • 反思复盘:定期反思和改进,识别自己的强项和改进的领域,让自己变得更好