我之前说过,程序员如果想有未来,必须最少做到P7的水平,这样在未来找工作可以有很大的选择权。
同时P7具备的专业的开发技能和一定的架构知识,在程序员纬度上能力慢慢趋于全面。
而且我推荐技术团队的leader要到P7才开始带团队,从BAT来看,基础leader都是P7开始胜任的。
那么P7亦或是P8应该具备哪些技能呢?简单梳理了一下。
后台开发知识
关键词:理解原理,掌握后台架构设计方法论
标准:
- 深刻理解系统在实际运行过程中所经过的各个环节的相关知识,原理,如硬件(CPU,内存,存储架构等),内核(进程调度,内存管理模型),应用(设计模式,进程模式,同步异步设计),网络(协议栈,拓扑结构,收敛比等),清楚各个部分对实际系统服务的影响,对性能优化和系统扩展有清晰的思路。
- 深刻理解高并发,高可用系统设计理论,能够在实际场景中灵活运用。
- 熟练掌握IO,多线程,网络协议,数据存储,分布式相关框架中间件设计原理,并能够根据业务场景做定制开发。
- 熟练掌握柔性可用,过载保护,灰度升级等各类海量用户访问的架构设计方法和适用场景。
- 掌握业内在高并发高可用高性能方面的优秀做法和经验,能够根据业务实际特点采取积极措施,达到行业领先水平。
业务领域知识
关键词:理解产品核心体验,对业界多个业务有深入理解,行业趋势判断
标准:
- 对个人负责的业务的未来发展(包括产品,技术架构等)有一定了解,能指导平时工作。深入理解产品核心体验,在技术方案和产品体验上能和产品团队一起进步。
- 对业界相关多个行业方向有深入了解,在整体上可以和产品团队一起沟通并推动产品持续正向发展。
- 对业界发展趋势能够有正确判断,能够引领产品和技术团队,推动整个行业变革。
开发能力
关键词:能主导或核心参与大中型项目,能担任大型项目的技术负责人
标准:
- 精通1~2门主流开发语言。
- 熟悉1~2种常见软件工程开发模式,领会其中要领,并在具体项目中实践过。
- 主导或深入参与过一个中型项目研发工作,或在一个大型项目中研发其中核心子项目,担任其中研发负责人。
- 能够协同团队完成简单系统的研发工作,包括需求调研,设计,开发,文档,测试,上线等。
- 能够协调系统各模块等研发进度,推动系统按时交付。
- 具备良好的业界技术视野,精通软件工程方法论,能对现有工作方法,所用系统和工具在流程,使用方法等层面提出建设性意见。
- 担任过大型项目的技术负责人,有完整从立项到上线项目经验。
- 能够带领团队完成复杂系统研发工作,包括需求调研,设计,开发,文档,测试,上线。
- 能够主导项目推进和交付。
架构能力
关键词:子系统设计能力,完整系统设计能力,横向大系统设计能力&前瞻性
标准:
- 能够完成多方需求收集,形成技术需求文档。
- 能够选择合理的架构完成中型以上项目的架构设计(多进程,多模块,多服务器)。
- 能够预估项目所用的所有资源及项目的工作量,并预估项目的瓶颈和风险,选择合理方案。
- 能够把项目分解的层次分明,具有清晰的接口定义,可实现,同时能够给出测试方案。
- 考虑合理的地域或机房分布,系统灾备能力,运维发布及扩展性。
- 能够充分的估算出系统可达的性能,能够设计出高性能,高并发,海量数据处理系统。
- 能够对公司内部系统的架构有一定深度的认识和了解。
- 掌握海量服务的思想和理念,能够权衡技术方案,研发节奏,产品体验,作出合理取舍。
- 能够对业界架构有深入了解,技术视野宽。
- 能够跟踪业务对架构对需求,能够前瞻性对改进架构。
- 能够完成完整对架构设计,能够在业界处于领先地位。
- 设计的系统有足够的可扩展性。
- 在架构方向达到行业领先水平,能够在架构设计上引领行业变化。
- 完成横向大系统架构设计,该产品为公司创造重大影响力和价值。
业务运维
关键词:主导系统容灾容错设计实施,业务可用性保障,多业务可用性保障及创新建设
标准:
- 能够根据系统架构,资源状况进行系统容错容灾设计并主导实施。
- 能够设计系统的柔性,有损和灰度机制,推动系统监控准确度,覆盖度和完善。
- 能够对问题进行快速定位,分析解决。
- 针对某业务领域,主导建立完整对可用性保障机制和相应流程。
- 能够主导业务架构设计,根据业务发现,资源条件进行架构演进设计。
- 面向公司级多业务领域,能够主导建立完整对可用性保障机制和相应对流程,并在此基础上进行创新性建设,在行业有一定影响力。
执行力
关键词:目标拆解,资源协调,确定目标,用于担当
标准:
- 能够承担有挑战性项目或工作任务,并按要求高质量完成。
- 针对给定的问题目标,能够全面分析抓住任务关键因素。
- 灵活应变及保证任务的执行,并能不断改进积极寻找办法提高工作效果或工作效率。
- 能协调多方资源确保完成。
- 用于承担难度大,有挑战性的工作任务,并能够直面问题敢于承担风险和责任。
- 针对某一领域,能够迅速抓住关键目标。
- 针对工作上的困难,能够协调各方采取有效办法解决技术或设计问题,推动工作计划按要求前进直到最终目标。