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文章分享内容札记
  • 持续找有挑战的事情做:走出舒适区,不断挑战自己,主动寻找和接触各种类型的问题,挑战自己的思维和解决能力。与经验丰富的人合作,学习他们的方法和技巧
  • 反思复盘:定期反思和改进,识别自己的强项和改进的领域,让自己变得更好