-
阿里 P6/P7 要求
P6(高级工程师,工作 3~5 年,团队核心)其实是熟练的执行者,单兵作战强,能按照上级分拆的任务高效完成;P6+ 表示已经具备非常熟练的任务执行能力,但还稍微缺乏对于复杂项目的阅读能力与大局观。
P7(技术专家,工作 5~10 年,团队核心 or TL)可能带人,也可能不带,取决于是业务导向还是技术导向,如果是技术导向,其专业方向在业界横向对比中要有较深见解,对困难的技术任务有较强的攻坚能力;如果是业务导向,则具备较好的团队正向影响力,能将中等规模的项目梳理与分解,协调若干 P6 一起高效完成工作。
假如我们接到一个紧急项目,需要在 1 个月时间内上线一个电商网站。
P6 的要求就是能独立完成某个业务模块的设计与实现,比如登录注册这样的用户模块,按时完成,不出致命 bug 并避免性能、安全、运维风险。
P7 的要求就是可以把整个电商各业务模块合理拆分和研发人力分工排期,并且考虑到可能的性能、安全、运维风险,也考虑到哪些模块可能有项目进度问题,hold 得住业务需求评审,能担当整个项目的技术 Owner,沟通与协调能力达标,能和产品、运营、设计、测试、运维等部门以共同步调去拿结果。
简单来说,P7 就是在 P6 的基础上,除了技术更过硬,还需加上团队管理能力、项目管理能力、业务意识能力。
下面附上 P6 和 P7 的要求(仅供参考):
P6(高级工程师,工作 3~5 年,团队核心): - 公司:大厂工作经验/或者有一定知名度的公司; - 学校:985/211 加分项; - 专业技能:语言基础、使用过的技术框架和中间件,架构设计,技术选型; - 具备专业领域能力,深入的知识和技能,能够培训和教导初级员工; - 对自己所从事的职业具备一定前瞻性了了解; - 基于分析思考,有效执行,领导非跨部门项目; - 掌握分析解决问题的能力,主动协调资源,独⽴处理复杂问题,拿到有效结果。 P7(技术专家,工作 5~10 年,团队核心 or TL): - 公司:最好有大厂工作经验/或者有一定知名度的公司; - 学校:985/211 加分项; - 专业技能:语言基础、使用过的技术框架和中间件,架构设计,技术选型,架构认知; - 专业领域的丰富积累,具备专业影响力,是他人的咨询对象; - 在专业领域中,对公司内外及业界的相关资源及水平⽐较了解; - 基于分析思考,有效执行,领导跨部门项⽬,培养新员工; - 良好的分析解决问题的能力,有创新想法,能改进业务流程; - 团队协作中具备利他精神,能以积极正⾯的心态去影响团队; - ⾏业外或公司内培养周期较⻓。 复制代码如何能达到阿里 P7 ?
对于 P7 这个级别来说,需要的是综合能力的体现。
技术能力(广度、深度、领域)+ 业务能力(懂行) + 管理能力(带项目、管团队)+ 沟通协调(会扯皮、会来事)+ 工作态度(皮实、肯加班)
1. 技术
需要构建自己的技术体系,有广度、有深度,下能撸代码、改 Bug,上能出方案、搞架构。
1)负责一个领域的技术,能定义该领域的核心问题,有思考规划能力和迭代演进,提供具有行业竞争力的技术方案落地,具备一定的技术深度和广度。
什么是技术体系,举个例子,你说自己会 MySQL 数据库,但是除了日常写 SQL 进行 CURD 的业务开发外,你还知道 MySQL 的运行架构、主流存储引擎的区别、主从同步、主从复制、锁机制、分表分库、事务控制,围绕着技术名称的中心点,能像蜘蛛网那样扩散出去,形成有条理的网状结构,就形成了自己的技术体系。
然后是技术广度 + 深度。
广度上要熟悉 MySQL、Redis、JVM 原理、并发编程、高并发、设计模式、Spring 全家桶系列、消息队列、分布式原理、配置中心、注册中心、微服务、RPC 等等,甚至还需要了解架构设计三原则(合适、简单和演化原则),DDD,CAP 理论,Docker,K8S 等等。
深度方面比如 JVM,各种垃圾收集算法得了解吧,遇到 outofmemory 、YGC、 FullGC,可以速度定位到问题吧。遇到某一个 SQL 忽然不走索引了,得能分析出具体什么原因吧。应用服务器 CPU Load 突然增长到原来的几十倍,你需要具备第一时间定位问题的能力。
2)跨 1 到 2 个技术栈开发和方案设计能力,具备良好的技术自驱力和业务思考力。了解整个系统,具备核心模块的编码能力,有很强的分析和解决问题的能力,是关键问题终结者。
这里其实主要体现对系统的方案设计上,具备多领域知识,我们解决问题的思路和办法会开阔很多,然后我们负责的系统所有的技术难题都可以快速解决,妥妥的扛把子!
3)能针对复杂问题和多样环境设计良好的技术架构,对于一类业务/技术问题具备良好的扩展性和鲁棒性,具备很强的数据分析意识。
这里就体现较强的系统、架构设计能力,比如抽象共性、化繁为简、模块和组件化等。小的来说,缓存集群挂了系统不会挂,立马故障转移;大的来说,一个机房挂了,照样不影响正常业务运转。
4)业务发展背后思考技术策略和洞察技术需求,形成对应的技术产品支撑系统,驱动业务的持续发展。
据我所知,绝大多数的公司技术都是支撑公司业务发展,技术驱动公司业务是极少数。2. 业务
所有开发者都要记住一点,开发者具有双重的行业属性:软件行业属性和软件所要解决的问题所属行业的属性。
软件所要解决的问题,就是我们通常所说的业务,比如支付宝的业务是支付问题,京东商城的业务是电子商务问题。
精通业务,可以成为开发者的优势,这是开发者在问题域构建起来的优势,即所谓的懂行。
如果业务积累方面的优势和开发技能方面的优势能叠加起来,那这位开发者,就具有秒杀 85% 以上开发者的能力。
P7 需要具备的业务技能: 具有协调多条业务的技术 PM 能力,有较强的技术整合能力,对负责业务上下游链路技术风险具备识别能力,且能提供合理的满足各方诉求的总体解决方案,并且能拿到业务结果。
- 有结构化思维和定义指标能力,贴合业务大目标清晰地理解自己团队的定位和核心发力点,具有架构演进和规划落地的能力,并取得有数据佐证的业务结果。
负责一小型业务线,能够拆解产品需求并进行平台化沉淀,同时具有反向驱动业务发展。
3. 软技能
这个金字塔能力模型,适用于绝大多数软件开发工程师,该模型提出的作者说:
大多数时候所谓的“技术之玻璃天花板”,其实只是缺乏软技能而已,这些技能可以学到,缺乏的知识可以通过决定改变的努力来弥补。
我们每位开发者都要牢记这句话,要清醒地意识到:不深入钻研,缺乏开发技术等硬技能,你很难在初期的职业生涯(0 ~ 5 年)中做出成绩占据重要位置;
- 没有沟通、协商、领导力、语境切换、创新、认知等软技能,你很难在职场上走出高度。
所以,在你掌握了一定的开发技术可以搞定一些任务后,就要并行地去培养自己的软技能,只有软技能匹配你的硬技能,你才能更好的发展。
P7 需要具备的软技能:
- 跨部门领导项目:P6 需要在一定的指导下才能跨部门领导项目,但是 P7 需要完全具备跨部门领导项目的能力;
- 构建团队的能力:具备从 0 到 1 搭建一个 10 人左右团队的能力,或已经有 3/4 个老员工将团队搭建到 10 人左右的能力。
- 带领小型团队的能力:可以根据业务的战略方向,给团队指明技术方向,同时可以带领团队完成既定的目标,同时可以根据每个下属的特点给予指导,让下属工作的同时还可以提升自己的能力;
有培养技术骨干的能力:我见过非常多的技术经理或者 P7 的朋友,他们可以自己把一件很难的工作做好,但是对于培养新人,培养技术骨干(P6)缺乏经验,但是作为 P7,这项能力是必须具备的。
4. 小节
最后我们把阿里 P7 的胜任细则,再简单归纳一下:
技术广度和深度,绝对的扛把子(占比偏大)
- 架构设计能力,方案(占比偏大)
- 跨部门的推动,通过多部门的联合推动(占比偏大)
- 主导业务的能力,领导力(占比最大)
- 业务效果,上层业务的挖掘,为业务带来了哪些撬动点(占比偏大)
- Coding(占比最低)