引言
相信很多程序员在自己的技术成长之路上,总会遇到许许多多的难关,有些难关咬咬牙就过去了,而有点难关则需要有一定的能力,才能克服。因此,本文主要围绕“技术成长” 话题,为何会选择技术方向,如何有效学习,以及技术方向需要掌握哪些技能,供大家学习参考。
一. 为什么喜欢技术
在学生时代,当我第一次接触到编程的时候,我发现自己对编程总是满足浓厚的兴趣,以至于在课外时间,我都会去研究如何写代码,一直到现在。技术对我而言,到底是什么,为什么会喜欢技术?
相信每位程序员对这个问题,都有自己的回答。而我的回答主要有以下几点:
- 做技术是一件充满兴趣的事情
- 做技术是一件有意义的事情
- 做技术是一件充满未来的事情
1. 做技术是一件充满兴趣的事情
不同人对不同的事情有自己独特的天赋,有的人从小就喜欢音乐,长大后成为了歌手。有的人从小喜欢体育,长大后成为了运动员。读书时期学校分班,分理科和文科,当时对我来说,文科就好比天书,无论是理解还是背诵都显得很刻板生硬,但在面对数学,物理这样的学科时,我却可以很容易地记住各类公式,仅需要有一定的理科思维,就可以在考试中取得较好的成绩。因此在技术这件事情上,我对它的看法就类比为理科,编程语言和各类框架的常用语法函数,就如同公式一样,再结合自己的理科思维,就可以轻松驾驭。因此对我而言,做技术就是为我这类有一点天赋的人"量身定做",自然而然就让我充满兴趣。
2. 做技术是一件有意义的事情
做技术对我的影响很大,首先是自己的兴趣方向之一,做起来会愿意投入时间去做,去研究其中的原理。其次做技术给我带来了一份程序员的工作,让我可以在充满竞争的时代找到自己的一份稳定。最后,做技术可以帮助别人,在工作中总有一些技术难题,当其他人都无法解决的时候,如果你能提供一些技术思路,甚至可以带领团队去解决它们,那么无疑会给你的公司和同事带来帮助。
3. 做技术是一件充满未来的事情
目前的时代是最好的时代,第三次工业革命即将来袭。无论从过去,现在,未来来看,目前都是科技人员最好的时代,投身到技术之中,也是时代对我们最好的安排。永远保持极客精神,永远保持好奇探索之心,永远保持乐观之心,未来会属于我们。
二. 有效的学习方式
既然选择了技术路线,在面对缤纷众多的各类技术栈时,相信很多程序员都会犯了难。到底应该如何学习,才能达到自己的标准呢?
1. 优先级
以开发技术栈为例,基础大于应用,原理大于框架。上层的技术应用都要以计算机作为载体,因此先学习基础,对于后续的应用学习会有很大帮助。同时在框架的学习上,如果先学习框架原理,则可以实现举一反三,往往一个原理就可以衍生出各类框架,掌握了原理,就相当于掌握了渔,而学习某个框架,只相当于抓了一套鱼。
2. 保持高效
高效学习是一种重要的学习方法,下面分享几点思路,供大家参考。首先是保持专注,找一个安静的地方,把自己今日要做的事情梳理出来,按照从易到难,从重要到一般的顺序,逐项完成。同时允许间歇性休息,保证学习时体力和精神充沛。最后是学会输出学习成果,一段总结,或者一份脑图。例如下面是我曾经总结过的某个知识点(脑图形式),通过这种形式来记录学习效果。
3. 挑战自己
人如果一直呆在自己的舒适圈里,就算你天天都在做事情,也不会有成长和收获。很多人不是不努力,只是很容易陷入到一种自我感动式的努力中。重复机械性的工作,往往都比不过花半小时学习所带来的收获。例如尝试从每天一道算法题开始,每天学习一种不同的解题方法,相信很快你便能感受到自己的变化。
三. 技术方向
在技术成长之路上,我们会了解到大量的技术技能。在这个信息爆炸,技术爆炸,技术频繁更新的时代,我们每天都会面对各种各样的技术栈。虽然我们可以在工作中学习项目涉及的技术及业务内容,但通过这种方式仅仅只能接触到有效的技术内容。也就是说,大部分的技术栈往往都需要我们独立学习。因此,我们需要明确自身的技术方向及需要学习的主线内容。以下提供一些技术方向和技术资源,供大家参考学习。
1. 学习路线
<1> 基础
想学好技术,基础先打好。技术基础有很多,从大家最先接触的计算机开始,就需要先了解计算机的运行原理(计算机的体系架构,硬件软件设计),了解计算机之间如何进行通信(计算机网络)。
其次,编程语言本质是一门机器语言,它可以让我们与计算机进行有效沟通,但是仅仅只是掌握它是不够的。在工作中的某些业务场景,往往包含复杂业务逻辑和业务数据结构,需要具备一定的数据结构知识和设计模式,才能完成此类需求。
同时,学好数据库也很有必要,数据库作为企业的数据命脉,往往开发人员编写的一句不经意sql,一不小心就可能导致数据损坏或丢失,从而造成严重的生产事故。
最后,学会编程语言与技术框架后,还需要学会在项目开发中融入团队,协同合作,以满足大型迭代周期的开发需求,甚至起到事半功倍的效果。
- 计算机基础:体系结构,操作系统,计算机网络
- 数据结构:基础数据结构,基础算法
- 设计模式:业务设计能力,代码设计能力
- 编程语言:C,Java,Python等编程语言基础
- 数据库:关系型与非关系型,主流与冷门型,各应用场景型
- 应用框架:技术框架,业务框架
- 团队协作能力:多模块协同,多成员协同,跨应用协同
<2> 应用能力
在企业中,业务项目是企业的生命线,而技术在其中往往扮演实现的角色。假设你是一位出色的架构师,你需要具备项目设计架构选型能力,业务需求设计能力,当项目中遇到一些充满挑战的技术难点时,你需要提供技术解决方案,以帮助技术团队顺利实现项目上线。
- 技术架构:分布式,微服务,devops
- 业务需求设计:核心业务场景设计
- 技术难点方案:亿级流量网站设计,分布式事务,分布式id,缓存血崩等
2. 技术资源(网站资源)
下面提供一些技术学习的常用网站,供大家自取(定期更新),主要包括技术基础和应用能力,希望对大家的技术成长有所帮助。
- 力扣:力扣 (LeetCode) 全球极客挚爱的技术成长平台
-
洛谷:https://www.luogu.com.cn
-
牛客网:牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网
-
慕课网:慕课网-程序员的梦工厂
-
中国大学MOOC:中国大学MOOC_优质在线课程学习平台
-
极客时间:极客时间-轻松学习,高效学习-极客邦
-
stackoverflow:Stack Overflow - Where Developers Learn, Share, & Build Careers
-
github代码托管库(国外):GitHub: Let’s build from here · GitHub
-
gitee代码托管库(国内):Gitee - 基于 Git 的代码托管和研发协作平台
- 传智播客(培训机构):传智教育【官网】-好口碑IT职业教育,好口碑IT培训机构,一样的教育,不一样的品质
-
黑马程序员(培训机构):黑马程序员官网-IT培训机构|java培训|前端培训|python培训|大数据培训|鸿蒙开发培训
四. 总结
学习从来都不是一蹴而就的,而是日积月累长此以往。作家格拉德威尔曾提出,要在某个领域成为专家或达到世界级水平,需投入大约10000小时的练习。种一棵树,最好是十年前,其次是现在,所以,努力请趁早。最后,也祝大家都能在自己的技术方向上取得想要的成长!