程序猿升级之路

14,953 阅读34分钟

一:专业影响力

  • 1、能全面指导低级别工程师,包括业绩、素质、领导力、技术能力等多方面的全面成长;
  • 2、通过内部实践,在本专业领域内沉淀出切实有效的方法论,并能在本通道内推广分享,为通道培训作出贡献。
  • 3、主动引导团队成员一起进行知识分享,营造主动学习、分享和共同进步的团队氛围。

二:专业技能(只是简略几点)

  • 1、熟练掌握各类设计模式,能够根据不同场景选择最优的设计方案
  • 2、熟练掌握常用缓存系统的设计原理,能够准确选择缓存方案
  • 3、熟练掌握MySQL使用,以及理解分库分表、主从同步等设计方法
  • 4、熟知各类常见框架中间件的优缺点、适用场景并能切实运用
  • 5、熟练掌握基于tcp/ip、http等协议的高性能网络编程知识和方法
  • 6、熟悉JVM的原理并能将其运用到日常的工作中如问题排查和性能调优

三:业务理解能力

  • 1、能对业务需求进行汇总,抽象,建模;精通业务需求的取舍及需求优先级的把握。
  • 2、熟悉产品的特性需求,针对性解决问题
  • 3、对个人负责业务的未来发展(包括产品、技术架构等)有一定了解,并能指导平时工作

四:相应工程能力

  • 1、系统设计和实现时能够考虑到系统的运维需要,提供完整的运维方案和上线回滚方案;
  • 2、对所负责的系统面临的安全风险和问题能够有清楚的认识,在做设计时能够提前考虑。在面临安全突发问题时,能够及时正确的给出解决方案;
  • 3、对公司内的服务和平台有较为充分的了解,能够正确的复用公司的公共服务和平台,不重复造轮子。
  • 4、主导或深入参与过一个成功的中型项目研发工作,或者在一个大型项目中成功研发其中的核心子项目,担任其中研发负责人;
  • 5、能够协同团队完成简单系统的研发工作,包括需求调研,设计,开发,文档,测试,上线等;能够协调系统各模块的研发进度,推动系统的按时交付。

五:沟通协作能力

  • 1、熟悉并掌握STAR模型、金字塔原理;能选择合适的沟通方式和工具进行有效沟通;
  • 2、能够积极主动思考并完成一定挑战的工作任务
  • 3、对负责项目能做中短期技术规划,能够给出切实的落地计划并推动执行。
  • 4、主持中型讨论(5人),能够综合协调意见,输出结论;
  • 5、能以清晰的书面语言表达技术或设计观点。

5.1 STAR模型

  • Situation(情境): 事情是在什么情况下发生。(在2007年初(这里有具体数字信息)公司发展到瓶颈期间,业务量每月降低1%)
  • Task(任务): 你是如何明确你的任务的。(为了找突破口,你需要找出解决这个问题的办法,并清楚需要从内部开始解决业务量降低的问题,然后逐步寻找突破口加大业务量)
  • Action(行为): 针对这样的情况分析,你采用了什么行动方式。(对于这种情况你开始着手把效率低下的业务砍掉或者优化,积极和外部沟通,并成功在年底业务量每月5%的上升)
  • Result(结果): 结果怎样,在这样的情况下你学习到了什么。(后面业绩都是向上增长,并得到了公司和市场的认可,并使自己知道这类情况或者相关情况的解决方法,自己有能力做好类似的事情)

5.2金字塔模型

提升表达效率和听众理解,ps: 打破程序员固有的技术思维

构建金字塔:提出主题思想->设想读者疑问->写序言->纵向分解→横向分解

序言(一个好的故事):

背景(好的背景有一个重要特征,即能够将你带入一个特定的时间或者空间)、

冲突(就是推动故事情节的发展,并引发读者提出疑问的因素)、

疑问(引导听众或者读者提出针对当前问题的疑问)、

回答(引出今天你要表达的内容)

举个栗子:

序言(到广场做一个亲子活动,推广我们的产品或者服务):

背景(我们想做一次线下的市场推广方案,我们可以这样开始,从上个月的经营报告看,我们上个月的业绩完成情况只有50%)、

冲突(而且我们这个月目前的销售情况也很不理想,按照这样的情况下去,我们这个月情况可能更糟)

疑问(接下来我们应该怎么做呢)

回答(为了解决这个月绩效不达标的问题,我们计划在月底组织一次线下的推广活动)

结论推理方法:

演绎推理(是一种线性的逻辑推理方式):出现的问题或者存在的现象->产生的问题的根源和原因->解决问题的方案

栗子:如上面讲的包括大前提、小前提和结论三个部分组成。比如关于营销预算,大前提是我们公司今年的营销预算是1个亿,小前提是目前已经使用了8千万,那么结论就是只有2千万的营销预算了。

归纳推理(将一组具有共同点的事实、思想和观点归类分组,并概况其共同点或者结论的一种推理方式):正确定义该组的思想,找到一个能够表示该组所有思想的共同名词;同时识别与该思想不相符的观点和思想。

栗子:安排一个下午4点的会议,李总在出差没办法今天参加会议,王总下午已经安排了其他会议,唐总也安排了其他会议。最后的结论是,今天下午4点不能安排会议,需要另外约时间

六:相应定位

level1level2level3level4
通用技能工程能力关键词熟悉基本的开发环境和工具。能够在指导下完成开发任务能够独立完成模块开发任务,熟练使用开发语言工具及环境组件,代码质量有一定保证能够主导系统级开发,模块拆解,并指导他人工作。能够主导产品级开发。有很好的业界技术视野,能够做部门级技术规划。
描述1、掌握Linux基本操作命令;了解简单shell/python/sql等脚本编程;2、掌握一门主流的开发语言,了解常用的测试工具使用及扎实的CS基础;熟悉并遵守公司的相关开发语言规范; 3、熟悉并遵循员工安全规范、安全开发规范;4、具备质量意识,对自己所开发和维护的代码模块能够做单元测试。5、能够在有经验同事指导下完成一般模块的代码开发工作,能够书写代码相关的文档。1、熟练掌握至少一门脚本编程,比如shell,python,sql等 2、模块设计考虑充分,接口清晰,性能预估合理;3、熟练掌握1~2门主流开发语言,具备良好的编码风格和代码注释;同时是一个合格的code reviewer;4、熟练掌握常用的测试、诊断调优工具;对自己所负责开发和维护的模块能够做高质量的单元测试;5、能够独立负责复杂模块的研发工作,规划模块的项目开发优先级1、系统设计和实现时能够考虑到系统的运维需要,提供完整的运维方案和上线回滚方案;2、对所负责的系统面临的安全风险和问题能够有清楚的认识,在做设计时能够提前考虑。在面临安全突发问题时,能够及时正确的给出解决方案;3、对公司内的服务和平台有较为充分的了解,能够正确的复用公司的公共服务和平台,不重复造轮子。4、主导或深入参与过一个成功的中型项目研发工作,或者在一个大型项目中成功研发其中的核心子项目,担任其中研发负责人;5、能够协同团队完成简单系统的研发工作,包括需求调研,设计,开发,文档,测试,上线等;能够协调系统各模块的研发进度,推动系统的按时交付。1、系统设计和实现时充分考虑未来的测试和运维需求,最终实现的系统具备良好的可测性以及可运维性;2、具备良好的业界技术视野;担任过一个成功的大型项目的技术负责人,有完整的从立项到上线的项目经验;3、能够带领团队完成复杂系统的研发工作,包括需求调研,设计,开发,文档,测试,上线等;能够主导项目的进度和交付。
业务理解关键词能够主动了解产品,以及应用场景。理解业务需求及定义优先级熟悉产品特性,熟悉所涉及功能。能够对业务进行抽象,协助产品作出取舍。能够提炼本质需求以优化业务开发流程。能够理解技术方案和产品体验之间的差异。关注竞品。能够从全局进行业务思考以指导技术规划。对业界保持关注,和产品团队一起推动产品发展。
描述1、主动了解所做模块在产品功能中的体现形式,体验参与研发的产品提供的服务和典型业务流程及触发场景。2、准确理解业务,设计适应实际需要的系统;能识别并排列需求优先级。1、能对业务需求进行汇总,抽象,建模;精通业务需求的取舍及需求优先级的把握。2、熟悉产品的特性需求,针对性解决问题 3、对个人负责业务的未来发展(包括产品、技术架构等)有一定了解,并能指导平时工作1、能提炼本质需求,优化业务流程;2、能预期到需求的走向和趋势,设计具备相当的延展性同时避免过度设计;3、能根据市场和环境变化敏捷调整优先级排列。4、深入理解产品核心体验上,在技术方案和产品体验上,能和产品团队一起进行trade off。5、根据业务逻辑设定技术规划,对竞品有所关注。1、全局业务规划能力和系统性思维能力;2、结合自己对业务的理解,用技术驱动产品战略的变革,驱动流程变革。3、对业界相关产品保持关注,对业界相关多个行业方向有深入了解,在整体上可以和产品团队一起沟通并推动产品持续正向发展
沟通协作关键词主动沟通问题和进展熟悉一些效率开发和沟通协作工具。能够支持讨论,能够积累技术文档良好的表达和沟通能力,能够在团队内起到组织作用,团队间沟通作用。善于理解和抓取沟通重点,能够在跨团队沟通中起主导作用。
描述1、有主动沟通的意识,主动沟通解决工作问题;2、及时反馈与沟通,对遇到的技术难题能够寻求有效的帮助3、较好的语言表达能力;4、熟练使用大象,wiki、task、email、calendar等沟通工具。能够严格按要求及预定计划完成所接手的工作任务。1、熟悉并掌握STAR模型、金字塔原理;能选择合适的沟通方式和工具进行有效沟通;2、能够积极主动思考并完成一定挑战的工作任务3、对负责项目能做中短期技术规划,能够给出切实的落地计划并推动执行。4、主持中型讨论(10人),能够综合协调意见,输出结论;5、能以清晰的书面语言表达技术或设计观点。1、良好的表达能力:能够将自己对技术和业务的理解,设计思路清晰地转达给他人;2、规范的项目文档能力:能够输出完整规范的设计、技术类文档。3、优秀的协调能力:能够和业务方进行有效顺畅沟通业务需求;能够和技术合作方一起有效地推动整个项目进展4、优秀的组织能力:能够将项目模块进行有效的分解,保证团队有效的协作;5、能做在跨团队合作项目中给出中长期的技术规划,并推动相关团队配合的规划的落地1、善于抓住重点,能快速有效的沟通和解决问题,对于复杂的协作问题能够抓住本质解决,同时方式、方法得到相关合作同事的普遍认可;2、能够在跨团队层面有效促进各个业务层面和技术方向的协作;3、掌握谈判技巧,能够妥善处理整个工作流程中的合作问题;具备良好的演讲和感染力。4、能够站在公司的高度为公司发展积极建言并贡献力量
专业影响力关键词能够很好的自我总结进行有效组内分享能够很好的总结某领域某方面的经验和技巧,能够有效分享,并能够指导他人参与通道分享,在组内具有技术影响力能够总结本领域各个方向的经验,形成系统课程参与公司内分享,在通道内具有技术影响力提升公司技术形象参与公司外分享,在公司内具有技术影响力
描述1、能够定期进行个人工作总结,不断优化工作;2、能在部门内部进行经验与知识的分享与交流;3、能够指导或帮助新同事完成工作任务;4、积极参加组内或部门内工作相关的交流和研讨,并进行经验与知识的分享及学习1、能全面指导低级别工程师,包括业绩、素质、领导力、技术能力等多方面的全面成长;2、通过内部实践,在本专业领域内沉淀出切实有效的方法论,并能在本通道内推广分享,为通道培训作出贡献。3、主动引导团队成员一起进行知识分享,营造主动学习、分享和共同进步的团队氛围。1、能够将个人技术经验进行总结和输出成课件,进行相关技术方向的知识传播和讨论;2、主导通道级课程,参与公司级课程开发,积极参与专利申报;3、资深导师,能够结合人员的不同特质和经历,采取不同的辅导策略,在指导过程中注重传授思维理念和工作技巧1、能够对公司外进行分享,能够对公司外进行技术影响力输出2、能够在公司的技术品牌上作出贡献;3、领导并培养出技术专家,发展技术专家团队;4、能够建立创新与合作氛围,激励成员的工作热情;建立团队培训体系或学习制度;
专业技能算法方向:算法能力关键词掌握基本概念原理,掌握基本工具熟悉相关方向算法原理、优缺点以及适用场景。能够独立完成算法优化任务。精通领域内算法,熟悉业界最新成功。能够跟进最新成功并尝试在业务中适用。有显著的算法优化成果。熟悉多个领域问题的解决方案,能够很好的结合实际情况灵活设计并实现算法。能够设计平台级算法优化问题解决方案。
描述1、掌握机器学习/数据挖掘/NLP/图像/组合优化等至少一个领域的基本概念和基础算法;2、在指导下,能完成算法的实现并解决一个具体问题了解大数据收集和处理的系统和工具,如hadoop、hive、spark、storm、flume、kafka等1、熟悉领域内算法原理,能讲出这些算法特点、优缺点以及适用场景,灵活应用算法以解决实际问题;2、能独立完成算法的实现以解决一个业务问题,熟悉算法解决问题的流程,如样本生成及采样、特征提取、特征归一、特征过滤、特征选择、模型选择、模型调参以及后处理;3、能够在指导下实现数据采集流程,使用大数据系统和工具清洗、格式化所需数据1、精通领域内算法,熟悉工业界和学术界的最新研究成果,并能恰当的引入新算方法以解决业务问题;2、精通问题分析、线下调研、算法实现、线上应用等各环节,能够对待解决问题设计解决方案,进行分析和拆解,能够针对问题,对算法解决问题的流程中各环节进行调整,并能够成功解决问题,取得显著成果;3、能够独立完成大数据处理的核心功能,了解业务需求和特点,能够独立实现数据采集流程,能够熟练使用大数据系统和工具清洗、格式化所需数据1、具备用算法解决一个复杂业务中各种问题的经验和知识,具备设计整套算法解决方案、不断迭代完善的经验。2、掌握解决两个以上领域问题的知识,能够快速给出有效解决思路或解决方案;3、能够根据业务需求,设计整个数据采集、处理流程,并能协同团队实现整个流程;4、掌握各数据收集和处理系统的优缺点,根据业务需要,协同基础技术部门完善相应系统的建设。
数据开发:数据开发关键词能够掌握建模设计思想,理解不同模型类型。能够有效组织数据模型,能够根据数据需求综合考虑设计方案。能够结合业务建立合理的评估体系。能够结合业务进展,不断优化仓库模型及性能。能够做到公司级的模型设计,通用的数据开发解决方案。
描述1.掌握维度建模的设计思想,理解常用模型类型,如雪花,星型,并且能根据业务特点选择适当的模型;2.有模型分层概念,如数据源,基础数据层,主题数据层,数据应用层,理解数据分层的意义;3.把具体的数据应用需求转化成模型设计思路,根据对需求的理解优化和完善模型1.能够根据BI分析框架和分析方法论,有效组织应用层数据模型;2.能够根据数据应用需求,利用维度建模、3NF等建模方法设计应用所需的基础层模型,综合考虑效率、时效性、存储等因素对数据合理分层;3.有模型效果量化的意识,对模型设计方法有一定总结和自己的独到理解1、结合业务实际进展,灵活运用常见设计方法,独立完成BG层面基础数据层的模型设计并适应业务发展节奏;2、能够建立数据模型合理性的评估体系,并能够根据量化指标客观地优化数据仓库模型并达成优化效果;3、能够根据数据仓库的应用场景,对通用的数据开发模式(开发模板、UDF等)进行抽象,在部门或公司内得到应用,降低重复开发的成本1、深刻理解数据建模本质,从BG或公司整体数据架构出发,组织企业级的数据视图,形成企业级数据模型;2、模型的设计能够考虑公司内数据的共享,并能够推动公司内数据生态的建设;3、对公司内解决数据开发效率和质量的开发体系(工具、方法、规范、流程等)形成系统的落地,结合云服务对外提供数据开发能力,形成行业内的数据开发解决方案
后台开发:后台开发知识关键词应用编程语言,计算机网络,应用线程设计模式,技术方案,中间件选型,网络编程,应用缓存,应用数据库性能优化,系统扩展,系统设计,高并发,中间件设计原理,定制开发,高可用、自动化海量数据访问架构设计,业内优秀的做法经验,达到领先水平
描述1、掌握 C / C++ / Java / PHP / Go编程,熟悉开发语言SDK和API;2、了解TCP/IP、HTTP协议,了解网络编程知识,了解常见的数据序列化方案;3、掌握进程及线程开发模式,能够清晰判断进程线程的使用场景1、熟练掌握各类设计模式,能够根据不同场景选择最优的设计方案;2、熟练掌握常用缓存系统的设计原理,能够准确选择缓存方案;3、熟练掌握MySQL使用,以及理解分库分表、主从同步等设计方法;4、熟知各类常见框架中间件的优缺点、适用场景并能切实运用;5、熟练掌握基于tcp/ip、http等协议的高性能网络编程知识和方法;6、熟悉JVM的原理并能将其运用到日常的工作中如问题排查和性能调优1、深刻理解系统服务在实际运行过程中所经过各环节的相关知识、原理,清楚各个部分对实际系统服务的影响,对性能优化和系统扩展有清晰的思路;2、深刻理解高并发高可用系统设计方法理论,并且能够在实际场景中灵活运用;3、熟练掌握IO、多线程、网络协议、数据存储、分布式相关框架中间件的设计原理,并且能够根据业务场景做定制开发;4、对保障线上系统高可用掌握一定的方法,并且在负责的系统上有实践;5、在负责的系统上能够进行自动化;6、对负责的系统指标有长期的关注、监控和持续优化改善1、熟练掌握柔性可用、过载保护、灰度升级等各类海量数据访问的架构设计方法和适用场景;2、掌握业内在高并发高可用高性能方面的优秀做法和经验,并能根据部门业务实际特点和需求采取积极措施,达到行业领先水平;3、在通道内能够形成自动化方法论并进行推广落地;4、能够对通道内/公司内/业内的对标系统的指标有清晰的认识、关注和采取对应的积极措施
运维技术关键词理解业务,技术和运维技能独立操作,规范不出错;模块级别方案设计;定位问题,解决问题高效操作,自动化;系统级别方案设计,并实施;定位解决问题,并提炼方案技术/架构/组件选型,低风险高性能高效率;大型项目方案设计,高质量推动实施;定位问题,反推到机制层面解决
描述熟悉该细分领域常见设备、工具、软件等的日常操作,操作符合规范,不出错。操作可以在指导下完成;了解自己所运维项目的技术架构;理解业务需求和现有的方案,并配合方案实施;大致理解所负责的模块的技术逻辑和系统的风险点,能够判断出故障产生的大致位置、系统影响。基本无需指导,能独立按照需求完成配置和操作,符合规范,不出错;执行部门内模块级项目的运维方案设计,能独立进行模块级的运维方案设计并考虑可用性;能独立运用排错工具针对简单故障问题提出修复方案;准确执行故障修复或降级预案,针对故障提出合理的短期解决方案能根据自身对业务需求、系统特点、运营情况、技术了解的情况下,高效实现配置和操作,达到并优化系统的目的。具备将常见操作脚本化和自动化的能力。能独立进行子系统级的运维方案设计并考虑可运维性、可用性;能主动独立的驱动子系统级的运维方案实施,能熟练使用排错工具,日志、监控数据、系统命令等进行故障定位和分析,并提出中长期解决方案作为运维系统中某个领域的专家,能根据使用场合选择最优运维组件、技术或架构,并寻求最佳配置或操作,降低风险,提高性能,效率最大化。并具备研究新配置并评测其风险和收益的能力,具备主导大中型独立项目(或多个子系统)的设计能力,充分理解方案的缺陷和风险,并合理采取控制措施,透彻理解对所负责系统及周边系统关联关系。能够打造和善用排错工具,及时并准确定位复杂难题的症结,就如何从机制上减少或者预防错误发生,提出可行的见解。
测试技能关键词掌握计算机基础和测试相关基础知识;具备用例设计和测试执行能力熟练掌握软件测试流程以及常见测试方法;独立承担业务测试,熟悉业务关键过程指标和质量指标;有专项测试、自动化和持续集成测试经验;有质量运营的意识和思路建立关键过程指标和质量指标体系;复杂系统可测性改造;主导测试架构和复杂专项测试方案设计并指导团队落地和推广;制定团队测试策略和中长期技术规划业界领先、方法论沉淀和变革性工具的开发;具备方向前瞻性和长期技术规划能力
描述了解常见功能测试设计方法(过程分析法、判定表、因果图、等价类划分、边界值分析法、输入输出分析法等),在指导下完成测试用例设计和执行。了解常见的自动化测试和持续集成框架,能在指导下完成一般难度的自动化测试开发和持续集成配置熟练掌握常见功能测试设计方法(过程分析法、判定表、因果图、等价类划分、边界值分析法、输入输出分析法等),能独立完成测试计划、测试用例设计和执行。能制定所负责业务模块/系统的测试策略,熟练运用不同测试方法暴露质量问题。熟练掌握常见的自动化测试和持续集成框架,能独立完成一般和中等难度的自动化测试开发和持续集成配置。熟悉常见专项测试方法,能根据业务需要设计小至中型专项测试工具,并独立完成专项测试,如;兼容性测试、配置测试、安装测试、升级测试、性能测试、压力测试和安全测试等。熟悉所负责模块或应用的关键过程指标和质量指标,能独立借助工具或编写简单程序提取关键指标,并对关键指标进行观察和分析。能独立对所负责模块或应用的研发过程和测试结果做分析总结,暴露质量风险和过程问题,并挖掘根因,和产品研发团队一起找到从上游环节避免类似问题一再发生的有效措施。能制定所负责业务(线)多个应用的测试策略,指导团队运用不同测试方法暴露质量问题。精通常见的自动化测试和持续集成框架,能独立完成复杂的自动化测试开发和持续集成配置,并指导团队完成相关工作。针对业务(线)内部和外部需求,能够通过可测性改造,分析可测性问题,给出建议推动开发优化实现方案,使其得以改善,并构建较复杂测试工具有效地解决业务测试的痛点。精通常见专项测试方法,能根据业务需要设计复杂或大型专项测试工具,能独立完成复杂专项测试,也能指导团队完成专项测试。能结合所负责业务(线)应用在研发过程中暴露出的问题,建立关键过程指标和质量指标体系,指导团队通过持续运营、挖掘根因,和产品、研发团队一起找到从上游环节避免类似问题一再发生的有效措施,使影响交付质量和效率的关键问题能得以改善。结合公司内不同类型应用的落地情况,在测试策略、测试计划、用例设计方面有独到思考,能提炼出针对不同类型应用制定测试策略、测试计划、设计用例的方法论。能结合各种自动化测试框架的特点、使用难易度、维护成本等,确立所负责业务线的自动化测试体系。并能对实际使用情况做清晰的量化结果分析。对公司内多种复杂应用及对不同技术栈应用的可测性改造有独到思考,能建立相关方法论并推广到测试方向。对公司内多种复杂应用的专项测试落地有一手经验,并对不同类型专项测试的适用情况有独到思考,能建立复杂专项测试方法与改善效果之间的量化分析方法。对公司内多个应用研发过程中的质量和效率问题分析和运营及上线后的质量问题分析有丰富实践和深入思考。能为业务线/公司建立分析、运营框架,推动各团队积极挖掘原因、推动上游改进,使上游团队的生产质量和效率得以提升。
前端技术关键词网络基础知识、前端基本开发能力熟悉开发语言及运行原理、分析定位问题、识别运用常见交互模式、关注前端监控运维确定技术方案、监控、优化网络通信性能、设计模式、系统架构、中期技术规划方法论、业界领先、技术视野及长期技术规划
描述1、基本掌握各方向主流开发语言,基本了解对应平台的运行机制;FE:html、css、javascript以及web页面在浏览器上的生命周期;客户端:了解和掌握客户端开发语言(如: java 、Objective-C)了解客户端开发平台提供的开发组件和常见API,比如组件的生命周期;熟悉项目使用的技术架构和工具集,比如shark长链接、mock抓包;能进行日常的特性开发,利用IDE对项目代码进行编译、测试、调试定位问题。以及了解app运行机制和原理(仅客户端)。2、了解HTTP、DNS、SMTP、TCP、UDP、IP等业界高度规约化的应用、传输、网络层通信协议栈,cookie的使用,session的原理,能定位常见的http级的故障;3、了解常见的桌面、移动浏览器,和公司/业界知名的桌面、移动应用程序对网络通信协议的应用方式以及客户端/服务端对协议的实现覆盖度4、了解交互设计在产品体验定义中的作用,了解交互设计在生产生命周期中的位置;5、对所参与的项目的行业和业务逻辑有一定的了解,了解各种技术运营数据和背后的含义;6、了解系统常见的性能瓶颈并能在日常开发中规避和优化1.能够主动学习对应领域内开发语言以及平台、网络等知识,对语言的特性能够有一定的理解和把握并能在日常开发中进行实践。FE:熟悉js的各种语言特性,对异步、回调。事件、DOM、面向对象等知识有比较深入的学习和理解。对浏览器(包括各种webview)下的渲染和资源加载知识有很好的掌握。2.对前端开发中遇到的问题能够举一反三,提出合理的解决方案,并能够抽象成组件库供团队使用;对常见的领域建模工具有一定的了解,如时序图、E-R图、类图等;3、能在较为稳定的问题环境定位常见的网络故障原因和运行瓶颈所在;了解nginx、cdn等前端相关的server知识;能够深入理解前后端通信流程,对前端业务所涉及的缓存,流量分发等机制有一定的了解;4、能熟练简单手绘出主要用户平台的常见交互;对主流桌面和移动平台的交互guideline有理解,能够挑战明显不符合交互原则的产品设计;5.熟练使用各种调试工具,熟练进行各种环境的调试开发;FE:如chrome developer,charles;客户端:熟练使用平台组件,对平台高级特性有理解与运用;能够编写简洁、高性能、高可读性的代码;主动关注性能数据,对于常见的性能问题和优化方案有认知和基本实践;对于客户端性能监控方案有了解,比如:冷启动时间、网络延迟、FPS、APP大小、UI绘制优化,内存泄漏排查等;熟悉项目中使用的开发框架原理,了解业界主流开发框架,如热修复、 shark长链、RxJava等;了解常见的跨平台开发框架,如RN,Weex等;了解一般客户端安全漏洞的修复方案,如运行平台漏洞,Webview漏洞等。1、在项目中熟练应用各种网络协议(包括基于此的自创协议,如桥协议),并能主导相关的技术选型(如thrift,对协作的后端团队产生影响);2、熟悉常见的前端交互模式的实现手段,并能针对具体场景进行适当选型;通过良好的前端数据反馈体系研究交互路径,找到用户体验最佳方向,帮助产品策划团队进行适当减法;3.能够主动对网络情况的数据进行采集和分析,设计针对性的优化方案。使得在各种网络环境下(弱网、2G、3G、4G等)的用户尽可能达到比较好的用户体验;制定监控标准,建立部门乃至公司级别的监控规范,来实现一些针对性的监控(e.g.客户端中端对端成功率、流量劫持等);4.熟悉项目的发布运维流程,对相应的平台有深入的研究,不断优化整个流程,提高效率,降低风险。FE: 对代码的打包、发布以及静态资源的托管等工作有过深入的研究,能够发现其中存在的问题,找到适合自身项目的发布流程。关注服务上线、回滚等各种机制,降低风险。掌握典型的业务网络模型,如MGW、L5、SLB等,e.g.Node中利用业务私有数据协议实现数据并行获取,减少浏览器端连接数,bigpipe等技术;客户端:熟悉项目编译过程,能够在编译打包阶段编写相关插件高效解决问题;熟悉平台的运行时环境,如JVM、JIT和Runtime等;深入了解业界性能优化措施,对展现速度、流量消耗、cpu使用、内存占用、帧速等问题有过针对性的优化实践与推广;对持续集成、自动化测试等有较为深入的理解。如 Jenkins;主动关注客户端安全,了解常见的安全性问题与解决方案;5.对各种架构设计(MVVM、MVC、MVP、MVI等)有一定的认知和理解,能够根据项目、团队等进行合理的选择。1、能进行网络情况的数据采集和分析,了解充分的用户样本数据,发现业务级别甚至更大范围内的通信系能和功能瓶颈,一举解决;能够提出网络协议层面的优化,突破原有网络协议的限制,进行创新的技术实践,获得可举证的突破性的优化成果;2、能够从前端技术的角度提出对交互体验的建议和改进,帮助提升用户体验,降低运营成本,提升性能和执行效率;3、对产品(系统)进行了一年以上的持续监控和优化,并突破了业界主流认为的极限,使优化成果达到了业界领先水平。或者针对项目进行的优化措施,提出领先的架构设计,使得能够不断挑战性能极限并能跨团队组织实施相关的优化技术方案;4.指导自动化测试、自动监控、告警系统、通用调试和问题定位工具等的开发设计;系统设计和实现时充分考虑未来的测试和运维需求。最终实现的系统具备良好的可测性以及可运维性;