首先能够明确的是每一个技术都有必定的时间累积,那么在这时间的累积下面,不一样的人技术水平确定不同,那么对于大多数前端来讲前端技术能力究竟差在哪里呢?
下面对每一个程序员进行一个归类的总结
初级程序员
仅能完成简单模块和项目的开发工做,难以胜任复杂模块的开发。一般是入行不久, 1 年及如下工做经验的同窗。
能力要求
熟悉前端基础知识如 HTML、JS、CSS 。
.可以使用一门 MVVM 框架进行简单的业务开发。
.遇到复杂的组件和模块,会找现有的轮子使用。
.会使用百度、google 等检索工具搜索问题。
中级程序员(阿里 p5)
在必要的辅导或标准流程支持下,能独立负责一个子模块或者一个项目的具体任务,对及时性和准确性负责。一般是 2-3 年工做经验的同窗。
能力要求
除了前端基础知识外,熟悉计算机、网络等专业基础知识。
.熟练掌握工做中使用的技术栈开发业务。(除了 MVVM 框架外,还能了解 webpack 的配置)。
.能了解一个需求从开发-上线整个生命周期,并对各个环节负责。
.具有基本的逻辑分析、问题分解、概括总结等能力。
.了解基本的数据结构和算法,写代码较熟练。
.知道从靠谱的渠道去查找问题,在找不到合适轮子的时候,会造一些简单的轮子辅助业务开发。
高级程序员(阿里 p6)
具备独挡一面的能力,可以高质量完成工做,能把握一个系统/团队的总体实现,在推行过程当中能提炼新的方法或方案,或对现有方案提出改进建议并被证实有效。一般是 3 年+ 工做经验的同窗。
能力要求
具备独挡一面的能力,能高质量的完成模块级的工做。
.熟练掌握工做中使用的技术栈,并能了解它们的实现原理。
.可以在一个需求从开发-上线整个生命周期中找到痛点,并能使用技术的手段解决,提高效率。
.能在模块维度对问题或需求作出分析和拆解,并作出相对合理的实现方案。
.熟练掌握基础的数据结构和算法,代码符合规范,逻辑清晰。
.有较好的技术选型能力。
程序员的进化之路
初级 -> 中级
一般在初级这个阶段,是进步空间最大的阶段,这个阶段是不存在天花板的。
编码
编码是初级阶段最须要常常作的事情,古话说孰能生巧,写代码也是一样的道理。
写什么的样代码
在公司要多作业务,尝试不一样的业务,目标是让本身先成为一个熟练工。 下班后也能够折腾点小项目作,能够选择本身感兴趣的内容,尝试本身实现一遍。
如何写代码
学会模仿,参考大牛的编码风格,照葫芦画瓢。 若是公司有代码规范,跟随着公司的代码规范走,若是没有,参考业界规范,并用工具(如 eslint)约束本身。 遇到一些不会写的,哪怕找到能够参考的代码,跟着抄一遍也行。前端
学习
初级阶段是须要经过大量的学习来提高本身的能力。
1.明确本身的学习目标 学习是为了提高能力,能让你胜任更复杂和有挑战的工做。
2.应该学习什么内容 前端基础,JS、CSS、HTML 反复学习。 工做中用到的一门前端 MVVM 框架。 了解一些广度知识,好比 HTTP、正则表达式、Web安全、性能优化、设计模式,数据结构和算法。
3.找到合适的学习方式
看书+编码:购买经典的书籍阅读,并做为平时写码的参考工具,看书和编码是一个反复的过程,基本就是看书->编码->看书->编码循环个 3-4 次,这个过程就是在不断修炼内功。
视频:慕课网的入门实战视频,根据本身的需求购买,要充分学习本身购买的每个视频,认真的跟着老师学习一遍写一遍,遇到不懂的要积极提问,学习在于深刻而不在于多。视频比书籍的好处在于更贴合实践,也更贴合公司业务,另外,课程的升级和更新也更加灵活。
官网文档:学习每个新的技术栈,入门最好的方式是经过它的文档学习,能够系统的过一遍文档,手敲它每个示例。
4.花更多的学习时间 若是想比别人成长的快,就得花比别人更多的时间用来学习(这也是为何不鼓励平常加班),尤为是初级这个阶段,成长曲线是很是快的。
5.知识沉淀 俗话说好记性不如烂笔头,能够养成写博客的习惯,把学习的内容用文字的形式记录下来,整理成文,并按学习的技术方向作归类。
提问
在初级阶段,免不了常常遇到问题,会提问也是一门技术活,好的提问姿式能让你事半功倍。1.好的提问方式
首先你在提问以前,本身应该通过充分的思考,并学会把问题拆解,在拆解的过程当中就会把问题的复杂度下降。 其次要善用搜索引擎,把关键字提取出来去搜索引擎上去搜索,先尝试本身去解决问题。
若是仍然不能解决,能够将问题的相关上下文、截图及必要标识及本身的思考过程、查找到的相关资料,以及本身的分析发送给想要帮助你的人,并能提供最小化复现的问题。
最后,请将你的问题及解决方案从新整理,并告知帮助你的人问题已经解决,从新整理解决问题的过程会帮助你理清思路、从而对问题有着更深的理解。
中级 -> 高级
到了中级阶段,基本上意味着你能够在大公司缺人的时候进入大公司工做了,若是想成为大公司不可拒绝的人才, 那你还须要朝着高级阶段努力。
编码
没错,到了中级阶段,你想要提高最重要的途径仍是要编码。webpack
1.写什么的样代码
和初级不一样,除了作业务以外,你也参与开发作一些偏技术类型的项目,好比参与组内组件库的开发,一些通用 JSSDK 的开发,这些会对你的技术要求会更高。
有机会去参与平时使用到的一些开源技术栈的共建,好比想实现每一个 feature 但现有开源库不知足,实现难度不大的状况下能够去提一个 pull request。
2.如何写代码
学会模仿,除了参考大牛的编码风格,还要琢磨他们的编码思路,多思考他们为何这么作。
学会组件化、模块化的开发方式,学会复用和封装,减小 CV 的操做。
对本身的代码质量负责,能够常常组织 code review。
工做
想要进阶,须要在工做方面有些产出。
1.业务思考
要明白业务和公司的目标,参与到需求的早期阶段中,同时也要多思考业务,想着有没有经过技术手段来提高业务价值,好比移动端的白屏时间减小,能够带来很好的用户体验,提高用户的留存率。
2.技术思考
思考业务开发中的一些痛点,如何用技术手段去优化业务的开发流程,提高开发效率,好比为业务量身定制一款脚手架工具。
3.优化工做流程
不只要熟悉从需求-开发-联调-测试-上线的每一个工做环节,还要多思考每一个环节有没有能够提高的点,特别是上线过程,好比能不能作到自动化,能不能作到小流量上线,能不能及时回滚代码。
4.技术分享
把工做中遇到的一些问题的解决方案、学习的一些新技术,产出的一些技术项目总结下来,做为组内技术分享和输出,这样一是能够总结沉淀你的技术,二是可让你们能知道你作的东西,并活跃组内的技术氛围,三是锻炼本身的表述能力,这个能力在大公司的晋升述职中很是重要。
学习
中级阶段仍然须要经过大量的学习来提高本身的能力。
1.明确本身的学习目标
学习是为了提高本身的硬实力,不只仅可以提高工做效率,还能让本身更好的服务于业务,升职加薪。
2.应该学习什么内容
研究工做中所用到的工具链,不只仅是运行时的 MVVM 框架,还能够是编译时的 webpack,必要的时候去研究其中的源码实现。
深刻学习一些广度知识,好比 HTTP、正则表达式、Web安全、性能优化、设计模式,数据结构和算法,并把它们应用到你的工做中。
3.找到合适的学习方式
看书:找到所学习方向的经典书籍阅读,适当作一些学习笔记。
视频:如慕课网的进阶实战视频,根据本身的需求购买。
官网文档:能够尝试去看一下英文文档。
社区:StackOverflow、HackerNews,慕课网手记、掘金等,除了利用碎片化时间看一些高质量文章学习,也能够往上面发布一些优质文章。
GitHub:关注 trending,参与开源社区的共建,并尝试本身造一些轮子。
4.学习时间与深度
在中级阶段,你仍然须要花不少时间去学习,这个时候要注重本身学习的深度了。
5.知识沉淀
俗话说好记性不如烂笔头,能够养成写博客的习惯,把工做中深刻学习到的一些非敏感知识记录下来并发布,而不只仅去发布一些基础知识的学习了。
6.技术视野
除了本身工做中的使用的技术栈以外,也要了解同类其它优秀的开源技术栈,从多个维度(feature 完整性、文档、上手难度、维护力度、生态等)去作对比。
要保持对新技术的敏感的关注,并时刻思考这些技术可否为本身的业务带来价值,在须要的时候作合理的技术选型。
总结
所谓技术能力其实就是解决问题的能力和学习能力,因此不管你在哪一个阶段,甚至是更高的阶段,不断提高这两个能力都是你应该一直要作的事情。程序员