在平平淡淡的工作中,突然要准备一个直播分享,犹如平地一声雷。预知雷声大不大,请看下文&视频完整版: B站回播地址、 牛客网录播地址。
本次分享由腾讯犀牛鸟「云开发」校园技术布道师养成计划邀请,为年轻程序员解答,如何进入学习提升自己、如何找到最适合自己的技术路线以及如何才能在毕业后进入大厂等问题。
本文从两个模块展开,首先分享从小白时期成长为高级工程师的成长历程,然后探讨程序员应该从哪些方面着手,提升自身的技术实力。
一、成长历程分享
我的成长历程大致分为 3 个阶段,重构开发阶段、前端开发阶段,然后到全栈开发。
重构开发
2015 年处于重构开发阶段。
当时作为一个硬件转软件的大三实习生,实习工作前只学习了一个月前端相关的知识,基础薄弱,一开始每天的工作就是 HTML + CSS 写静态页面,或者就是直接扒网站,改改样式和文案。在项目前后端分离后,才开始做动画和交互的开发工作。
前端开发
2016 - 2018 处于前端开发阶段。
2016 年是特别好找工作的一年,投简历有大把的面试,会 HTML + CSS + jQuery + 有项目经验就可以当一个初级的前端开发。在日常工作之余,每周会定一些任务看哪本书,看哪个技术的文档,也开始写技术博客。在工作中,参与开发公司的官网系统,在这个项目的参与过程中,前端构建工具 fis3、css 预编译工具 Sass,当时很流行的 CSS / HTML 框架 Bootstrap,模板引擎 ejs,这些技术都有了实战经验。后来又参与开发员工管理系统,在这个系统中开始用 Angular 搭建项目,有了这些积累,2017 年终于成为了中级前端开发。
初级和中级的不同,更多的差异是在于责任心的比重,初级一般只负责单一模块的开发,中级除了模块的开发,还需要更多承担起项目某一条业务线的管理职责。
技术发展得非常快,前端框架方面,Vue、React 对比 Angular 有更好的性能,Angular 也出到更高的版本,前端构建工具方面,Webpack 对比 fis3,开发更加便捷,扩展性强,在技术新趋势方面,还有小程序业务也越来越多,我也跟着继续学习新技术,根据项目场景进行运用。
题图引用自 利用NLP分析三大前端框架的GitHub Issue
全栈开发
2019 - 2020 处于全栈开发阶段。
在前端开发的过程中,我也一直想往全栈的方向走,学习 Python、Nodejs、MongoDB、Nginx,有了这些积累,我开始负责全栈项目,在职级上成为了高级前端开发工程师。
在这个过程中,我也从一开始的仅仅为了就业,到喜欢上这份工作,发现编程其实没有我想象中那么难和枯燥,相反,在编程的过程中,解决问题和实现需求都是非常有成就感的一件事情。
和大多数初学者一样,刚开始的时候我非常迷茫,没有做好职业规划就匆匆开始了实习。但是,我的建议是如果你没有想好自己要干什么,一定要先把眼前的事情做好。
二、如何提升技术实力
如何提升技术实力,建议先做好这3点:注重基础、实践练习、在过程中多多思考。
基础
首先,就我个人经历而言,我认为初学者应该特别注意这个点,要注重基础,应该不能急于求成,欲速则不达,要想快速提高,必须要以慢打快,才能更快。因为对于初学者而言,基础知识,编程语言必须要夯实,只有真正的懂了基础,才能够举一反三。
那么如何学习好基础呢?
1. 视频教程
网上有很多,我在初学阶段也是看的视频教程进行学习,但是但是这种学习方式效率比较低,一个 30 分钟的视频教程讲解的内容,如果是直接看书的话至少可以节省一半时间。不过初学阶段是可以看视频的,有老师讲解会比单看书看文档更加有趣。建议直接在网上搜上一套完整的教学视频,系统的去学。
2. 入门博客
在各大论坛网站上去找或者直接百度搜,前端的同学推荐阮一峰大神的博客、知乎专栏、凹凸官网,看博客对学习也是非常有帮助的。
3. 权威书籍
如果想要把基础学扎实,还是推荐看书,尤其是权威书籍,因为书里不会遗漏重点,能提高对技术认知的深度,比如看入门博客,其实这是接受博主的二次传播,博主讲的是他对书对技术的理解,他的理解肯定没有写书的人的理解深,说不定还会遗漏一些重点。所以还不如直接看书。
比如前端的话就一定要去看 JavaScript 高级程序设计、或者 JavaScript 权威指南,这两本书都是学习前端的基石。JavaScript 高级程序设计我就看了很多遍,每一遍都会有新的收获,建议你们也把权威书籍多看几遍,看多了就知道原理了,而不是单单知道怎么敲代码实现。
4. 官方文档
一定要学会怎么去看文档,开发的过程中肯定会遇到很多的问题,学会了看文档就可以提高自己解决问题的能力,也可以提高学习新技术的能力。
实践
在学习基础知识的同时,也要实践练习。可以从下面 3 个方面着手。
1. 局部练习
首先我们要做一些局部练习,比如小型实战、环境搭建、学习时遇到的例子,可以挑一个去实际做一下运行,因为有些东西你可能看的很模糊,这时候你必须得敲一点代码,实际的运行,看看效果,才能真正的理解,并且在实战中才能遇到问题,在解决问题的过程中才是真正的掌握这门技术,实战的过程中要及时记录遇到的问题和如何解决的,长远来看对自己的成长是非常有帮助的。
2. 上手实际项目
做了一些小型实战之后,就是上手实际的项目,在实际项目中,可以真正的运用学到的知识,也可以找到自己不足的地方,有很多人不知道自己不知道哪些,做做项目就都知道了。很多在校的学生在学习过程中没有实际项目,没有关系,我们也可以从开源项目着手,从开源项目的源码的学习,是一种最高级的学习方式,也是最高效最能学到东西的,这种开源的学习方式。有个前提,就是前面基础要打牢固,包括计算机网络和数据结构的知识,这都是有能力去玩一个开源项目的基本素质。
3. 造轮子、撸源码
学习到更深一层的时候,可以造轮子、出一些源码阅读的文章,或者视频,还可以把东西分享给别人,写一些深度的博客。让大家来参考。这一步是确实比较难达到,我自己也在不断的摸索中。
思考
在这里还要再强调一遍学习最关键的一步,就是思考。
1. 学会记录
学习的时候,要学会记录总结。在学习的过程中,老师讲的 demo,总结的知识点,自己记录到技术博客中,编程知识点太多,烂熟于心是不可能的,那就不如写博客记录下来。写在博客中,既能分享,又能方便自己查找,还能巩固自己的知识点。而且在博客积累的过程中,也能够为你累积流量,建立自己的 IP,这对找工作也是非常有帮助的。
2. 找到你的导师
对于初学者来说还有一点非常重要,那就是给自己找一个老师,每个人都需要一个职场的导师,他可以是你第一份工作的导师,也可以是你认识的其他的前辈。你们需要维系一个非常长期的关系,不止于一家公司,最好贯穿你的整个职业生涯。每当你遇到疑惑的时候,都可以询求他的建议,这将是你最宝贵的一笔人脉财富。我在入行不久也遇到了这样一个老师,他会问我学得怎么样,给我目标,而且还给我开过一对一的课,当然他开课也是因为他自己想往教育这个方向去发展,但是不得不说对我的帮助非常大,我非常感激他。他也和我说过,他的导师对他的影响也很大。
每个人都明白人脉的重要性,但实际做起来却不容易。建议参加一些线下的活动,比如各个开发者大会或者沙龙,这可能是最直接的扩展人脉的方式之一。
三、总结
本文分享了程序员的个人成长历程以及如何提升技术实力,程序员的成长之路并不孤单,我们是一个爱分享的群体,也有非常多的社区,看到这里的你,想必已经进入我们这个大社区了,希望本文能给你收获,在技术之路一起成长!
欢迎关注凹凸实验室博客:aotu.io
或者关注凹凸实验室公众号(AOTULabs),不定时推送文章: