时时自警。
能力模型总体思想:
阶段一:强调完成项目能力。提高自己的专业技术能力,在项目中积累更多的知识。
阶段二:强调项目把控能力和业务能力。专业技术能力较扎实。
阶段三:强调规划能力,强调知识创新能力。 具有行业领先的专业技术能力、较广的技术面;具有Lead技术方向、 Lead复杂产品线的能力。
特别说明:
每个阶段的能力包含低一阶段的能力特征。
能够对低阶段的工程师在技术开发有协助和指导。
名词解释:
技术领域:Web前端、iOS、Android、Windows客户端、Web服务端等。
技术方向:指一个技术领域内或跨技术领域的细分方向,如界面布局、高可用、互动动效、搭建、NodeJS容器、音视频编解码、组件化、富交互应用、数据可视化、安全、渲染引擎、3D等。
产品线:一个大的产品体系,通常由多个产品组成。
产品:面向特定用户,满足用户某些需求的功能集合。产品可以是产品体系的产品之一,也可以是独立产品。
项目:产品的一次需求研发过程。项目难度与产品需求密切相关,通常从0开始的产品搭建或大改版时难度较大,细节功能的升级需求难度较小。项目难度与产品规模也密切相关。
C端前端工程师的成长规划:
理解产品的子模块及其功能,能够在指导下完成产品功能的开发和升级,且质量稳定,逻辑符合预期。对产品线的核心指标有一定贡献。
深入理解业务逻辑,工作质量高。能够提出对业务逻辑的优化和完善策略,能够指导多名低阶同学,对产品线的核心指标有突出贡献。
对产品线的理解全面到位,能够解决产品线的关键问题,能够带领团队贡献产品线的绝大部分核心绩效。
在产品或技术上有独创性的贡献,对产品相关的技术融会贯通,具有较强的将基础技术应用在产品落地中的能力。不但是产品线主要业绩的完成者,更能将技术影响力发挥到其他产品线。
对公司核心业务的多条产品线具有较强的技术把握能力,能基于公司业务的发展对未来产品需要的技术有很强的前瞻和指引能力。能带领整个业务团队带来突出的贡献。
细则
1. 理解产品的子模块及其功能,能够在指导下完成产品功能的开发和升级,且质量稳定,逻辑符合预期。对产品线的核心指标有一定贡献。
重点:独立自主,做事让人放心。技术指导人投入在指导这位工程师的时间和精力正常,没有明显过多。
技术:可以熟练地完成一般难度的产品需求研发工作。
技术:能够及时发现、分析、定位、跟进项目中的技术问题。
代码:代码风格符合相关规范,不存在明显质量问题。
项目:能够正确理解项目需求,并较为准确的估算进度。
项目:能够与PM、UE、QA等角色顺畅合作完成项目。
2. 深入理解业务逻辑,工作质量高。能够提出对业务逻辑的优化和完善策略,能够指导多名低阶同学,对产品线的核心指标有突出贡献。
重点:独当一面。能够开始独立负责项目。
技术:了解单一技术领域各技术方向基础知识,能够高效解决开发中的大部分问题。
技术:对一般难度的项目有独立设计能力。
代码:高质量的代码细节,简洁清晰,逻辑严谨,模块组织有基本设计。
项目:能够独立把握和推动一般难度的项目。
技术规划:在所负责的项目或产品有短期技术规划。
3. 对产品线的理解全面到位,能够解决产品线的关键问题,能够带领团队贡献产品线的绝大部分核心绩效。
重点:精益求精。能够高质量的完成项目。
技术:对单一技术领域各技术方向、技术点的基础知识有较为全面了解。包括但不限于:
精通布局与样式实现,良好的视图管理,能较好实现各种视图场景和动画。
较好管理用户交互行为与视图更新过程,深入理解视图渲染与更新机制。
能较好管理数据、资源和网络请求,对协议有深入理解。
对缓存能力和持久化能力有全面了解,并能根据业务场景使用和设计机制。
对服务的高可用,页面的性能优化手段有全面理解,并能根据业务场景使用和设计机制。
技术:能将一般难度产品需求转化成技术详细设计。方案考虑较为全面,针对产品目标与特性、各端的技术特点(功耗、流量、硬件资源占用等),做到精细化设计,项目开发质量较高。
技术:对项目中的技术点能够做出通用化、不局限于某个产品的抽象。
技术:能够预见或及时发现项目或产品中的疑难技术点,并主动解决。
代码:代码分层与模块划分清晰、较好的模块依赖关系管理。
项目:能够负责一般难度项目或小型产品的总体协调规划。
技术规划:了解行业内的技术现状,并能用来指导产品的中期技术规划。
4. 在产品或技术上有独创性的贡献,对产品相关的技术融会贯通,具有较强的将基础技术应用在产品落地中的能力。不但是产品线主要业绩的完成者,更能将技术影响力发挥到其他产品线。
重点:完全把握一个技术方向。
技术:在一个技术方向有深刻理解,达到行业领先水平。
技术:能将复杂的产品需求转化成技术详细设计,方案考虑全面,具有较好的可扩展性和鲁棒性。
技术:能够发现技术共性问题,并较好解决。不重复造轮子,善于利用公司内或行业内的技术成果(库、平台、解决方案等)。相关技术成果不完全满足技术需求时,主动参与并推动进步。对无解决方案的问题,能抽象出通用技术成果,为多个项目使用。
代码:代码质量无懈可击,在细节、复用、依赖管理、数据结构、消息流转等方面均达到高水准。
项目:能够负责较复杂项目或中大型产品的整体把控。
技术规划:了解行业内的技术发展趋势,并能用来指导产品中长期的技术规划,保持产品在技术层面的先进性。
视野:不闭门造车,保持跨团队与跨部门的技术交流,参与通用技术的技术共建工作。
影响力:在大组内有较大的技术影响力。
影响力:在小组内的技术方向上起到指导作用。
5. 对公司核心业务的多条产品线具有较强的技术把握能力,能基于公司业务的发展对未来产品需要的技术有很强的前瞻和指引能力。能带领整个业务团队带来突出的贡献。
重点:把握多个技术方向。
技术:单一技术领域各技术方向均有深刻理解,达到行业领先水平。
技术:对不同技术领域的技术特点、思路和能力等有清晰的认识,并能针对产品形态做出正确的技术选型。
技术:能够把握复杂产品的技术架构,在各个方面做到全面而完善的整体考虑与实施。
系统设计与模块划分清晰明确。根据产品形态,设计充分考虑模块复用与扩展性,使开发与维护成本较低,迭代效率能很好的支撑产品发展与进化。API 设计要充分考虑易用性、扩展性与向后兼容,对于OpenAPI或SDK,需要有完善的API文档、实践文档、教程、示例代码、示例项目以及开发时支持的周边工具。
较好的性能、稳定性与较低的资源占用。高性能是卓越的用户体验的保证,主要在白屏时间,首屏时间、可交互时间、动画与转场的流畅度、视图更新效率等方面要做到较优水平。在资源占用上,网络请求、内存使用与管理、CPU时间的影响也需要做到较优水平。
完善的上线与线上管理。完善的灰度机制。移动App需要根据不同平台生态特点与产品需求设计不同的发版机制与更新机制,对不同的功能点需求和模块充分考虑未来的更新方式(发版 / 热更新 /云端配置)选择。统一设计系统运行状态与用户行为的监控与打点,统一设计日志上报,出现问题易追查与回溯。
技术:能在通用平台、通用解决方案的架构设计与研发工作承担重要角色。
项目:能够负责复杂产品的整体把控。
技术规划:能做出一个技术领域的长期(>1年)技术规划,在多个产品或产品线发挥指导意义。
影响力:在部门中有较大的技术影响力。
影响力:在大组的技术方向上起到指导作用。