如果你对自己的理科能力或者学习能力没信心,就不要继续了。
-
如果看英文对你来说是灾难,那也不要继续了。
-
如果有信心,又不害怕英文,又在国内环境,又想有发展,又是刚开始,那尽快转到后端,最好是Java技术+数据库,顺带学习shell python golang技术栈,再有精力的话,学习一下C++。
-
如果还是继续前端的话,最好选择To B类的公司,to B方向的前端是非常重的,业务复杂度足够高,前端项目会足够大,往往会大于后端。天花板较高,在公司的受重视程度会较高,薪水也较高。不过那种给自己公司做内部系统的,那个不算To B业务,除非是大型顶级的公司,可以考虑一下,毕竟可能性会比较多。
-
技术方面最好是先从数据结构与算法、网络方面打基础,了解操作系统原理(内存管理、文件系统、线程进程。。。),尤其是线程进程部分可以详细了解,编译原理能了解一下那就更好了,这些是所有方向都需要打的基础,你所用的语言越底层就越需要了解这些。顺便也可以学习一下数据库技术,熟悉一下常用数据库、SQL语言。
-
然后才是学习Javascript CSS HTML...,Javascript高级程序设计看三遍,了解各种标准,ECMAScript、HTML5、CSS3、WHATWG、W3C、TCP/IP、HTTP、各种浏览器的个性、浏览器的原理(这个也比较重要)、重点了解域名技术和Cookie技术、网络安全、后端服务的通常运作方式。
-
了解各种编程思想,面向对象编程、函数式编程、各种常见设计模式、模块化、解偶、各种最佳实践,开始写代码、看代码、熟悉各种编程工具:各种IDE、编辑器、VIM。
-
学习类Unix系统(GNU Linux、FreeBSD系列、Debian系列。。。),从了解如何使用开始,了解ssh、了解类Unix的文件系统、学习shell语法、各种常用命令行工具。这部分其实还挺重要的,建议深入学习,因为前端其实不只是浏览器那点东西,也会有后端服务,其实后端中涉及UI逻辑的那部分都是前端的一部分,前后端分离后,UI逻辑的后端部分也是有一些东西的。而当今后端服务绝大部分都是类Unix系统,重大的技术问题往往会出在这部分上,毕竟前端页面再有bug,大部分时候都抵不上整个服务都停止来得严重。
-
各种场景化的Web技术,单页应用、单页应用的服务端渲染、静态化、各种性能优化、缓存技术、移动端Web技术、布局自适应技术、兼容性
-
然后可以开始了解开源世界,Git、Node.js技术栈、JQUERY、VUEJS、REACTJS、AngularJS。。。各种新库会层出不穷,都学是不可能学得过来的,需要有你自己的判断力。 Git是必须学习的。了解他们的思想理念,如果有足够能力可以去研究他们的源码。这些就非常偏应用了,你可以选一个方向深入下去。
-
另外就是各种给Web赋能的边缘技术,WebGL、WASM、WebRTC、Websocket、LocalStorage。。。
-
监控、自动化测试技术、埋点、广告营销活动类技术绝对是你的加分项。
-
有时间学点图像处理技术。
-
关注和学习项目管理、沟通、团队合作、危机处理能力(例如线上事故)的技巧与方法论。这些其实和技术能力同样重要,要想做Team Leader这些必须行。提一句,最优秀的危机处理能力就是,把一次严重的事故最后演化成一次你表现自我的机会,最后让你的客户不仅没有因为事故而对你减分,返回会给你加分。因危机而加分,危中有机。
-
与后端合作的心态要积极,不要推诿,可以争取接口定义的权利或者和后端一起定接口,但绝对不能不管。
-
学会快速区分问题是来自于前端还是后端。可以对后端接口和前端报错(例如用Sentry工具)进行监控。这里往往需要充分熟悉Http协议、调试工具(尤其是谷歌浏览器的调试工具、抓包工具等)。大部分技术问题最终都会在前端显现出来,如果你的技术能力不完整,你很容易吃哑巴亏,会因为别人的错误而占用你大量的时间,你总是会在风口浪尖上。
-
学习不止、终身学习。做好40岁失业的准备,和被新人超越的心里准备。