互联网行业是一个充满挑战且内卷比较严重的行业,程序员如何让自己在行业内一直保持竞争力,其实就是需要通过不断的学习提升自己,那么对于一个刚刚入门的新手,如何快速的提升自己呢?本文就和大家交流下入门级程序员想要快速进步需要掌握哪些技能并且如何快速提升这些能力。
一 必备技能
作为新手程序员,以下是一些必备的技能和知识:
1.1编程语言
掌握至少一种常用的编程语言,如Python、Java、C 等。了解该语言的基本语法、数据类型、控制流程和面向对象编程等概念。也就是要对一门编程语言很熟悉,之前经常碰到那种啥都会,啥都不精的人。C做不了、Java开发也做不了、移动端也做不了,但是这几个语言他还都会一点...
1.2数据结构和算法
熟悉常见的数据结构,如数组、链表、栈、队列、树等,并了解它们的特点和应用场景。掌握常用算法,如排序、查找、递归等,能够分析和优化算法的时间复杂度和空间复杂度。
1.3前端/后端开发技术
前端:掌握HTML、CSS和JavaScript等前端开发技术,了解网页布局、样式设计和交互效果的实现。
后端:熟悉后端开发技术,如数据库操作、服务器端编程和API设计等。掌握至少一种后端框架,如Django、Node.js、Spring等。
这部分稍微细分了一下,就是前后端择其一即可。
1.4版本控制工具
学习使用版本控制工具,如Git、svn等,以便跟踪和管理代码的变更,并与团队进行协作开发。
1.5问题解决能力
培养解决问题的能力,包括通过查阅文档、搜索引擎、调试和提问来寻找解决方案。
1.6持续学习
程序员是一个不断学习的职业,要保持对新技术和趋势的敏感,并主动学习和掌握新的编程语言、框架和工具。
除了以上技能,良好的团队协作能力、沟通能力和问题分析能力也非常重要。通过实际项目的经验和不断的实践,可以进一步提升自己的编程技能和水平。
二 学习方法
2.1明确目标及范围
互联网这个行业不同于其他行业,知识体系实在是过于庞大,知识更新非常快。作为一个普通人,无法全部学完,所以我们在提升技术的时候,首先需要明确一个目标,然后制定好完整的计划,同时找到好的学习方法,这样才能更快的提升自己。
举例:我是做Android开发的,我不会今天去看看C ,明天去学学Python。我首先会选择提升Android开发能力,优先学习Android开发相关内容,本领域学习掌握到一定深度,再去拓宽其他知识面。学习自己领域内知识我会优先汇总整理本专业范围内的知识体系图谱,类似这种:
这样可以清楚明确自己需要学习知识的范围,明确范围后,然后制定一个完整可行的计划,按计划逐步学习,每天学习消化一点,按这种思路学习完你的知识才成体系。
2.2学习方式
内容明确了,计划制定好了,接下来就是如何去学习了,学习的方法有很多种,现在获取知识的途径太多了,但是我们的时间是有限的,如果能规划利用好自己的时间,选对适合自己的学习方法,是提高学习效率的前提条件。这里我简单列举几种方式,对比一下几种方式的优缺点,详细内容我就不一一阐述了。
2.2.1看书
优点:书最大的特点我觉得是知识全面 、严谨
缺点:有些枯燥,一本书可能很多内容都对自己帮助不大,可能对我有有用的就一两个章节
2.2.2看视频
优点:视频容易入门,可以看到操作及演示
缺点:不成体系,一般都是讲重点,忽略细节,很多系列的视频后面的都是收费的
2.2.3逛技术类网站
优点:获取新技术、可以看到同行们都学哪些,不至于掉队
缺点:内容庞杂,水平参差不齐,没有鉴别能力容易被误导
2.2.4报培训班
优点:完整、成体系
缺点:时间要求高、学习成本高
2.2.5有领导或者同事在工作中指导你
优点:我认为这样学习的方法是最快的
缺点:愿意真正帮你的人很少,需要运气
三 编程提高
为什么上面要啰啰嗦嗦的说一大堆学习方法,因为我认为编程技能水平提高也是有前置条件的,就是首先你得有一个好的基础,不然谈不上提高,想要提高,基础必须很牢固,所以你得先打好基础。
举个例子:我2012年刚开始学Java编程时候,那会开发都是用Eclipse手写Bean实体类,后来随着开发工具改为IDEA,再后来转移动开发用Android Studio知道有插件可以直接生成Bean实体类,不用手动写了,直接把后台的JSON字符串拿过来拷贝到工具中一键生成,生成好就可以直接用了。但是如果你没有手写过,直接就用工具生成,那么生成出来的代码有多少方法、每个方法的作用,可能你都不清楚,所以这就是基础的重要性。
那么我们打好基础后,如何能快速提高我们的水平呢?
3.1练习编码
不断进行编程练习是提升编程技能的有效方法。解决各种算法问题、参与开源项目或者自己构思并实现小型项目,都可以帮助你熟悉语言特性和锻炼编码能力。
举个例子:我当时刚入行学java编程,我的培训老师讲到空指针知识点的时候就说:如果将来你们从事编程行业,这个问题会一直陪伴你们!其实当时我听到这句话,内心想的是:这么简单的东西,还会出问题?
后来我想不用我多说,只要真正写过代码的人,99%的人都应该碰到过这个问题。所以别人教你各种方法,和你说再多都不如你真正写一次让你记忆深刻。
编程技巧的提高我理解没有什么捷径可走,一定是做的项目多了,踩的坑多了积累出的经验。
3.2阅读优秀源码
阅读优秀的开源项目或他其他程序员的设计思路和实践经验,学习他们的编码风格以及高效的算法和数据结构应用方式。
3.3学习框架和工具
选择一个流行的开发框架,并深入学习它的使用方法。掌握常用的开发工具,如调试器、IDE、版本控制工具等,可以提高开发效率和代码质量。
3.4 参与开源项目
向开源社区贡献自己的力量,可以通过参与开源项目来扩展自己的技能。阅读、理解并改进已有的开源代码,提交自己的代码修复漏洞或增加新功能。
3.5持续学习
互联网行业技术的发展日新月异,新技术层出不穷,程序员需要不断学习新知识和技术,保持对新技术和趋势的敏感。阅读相关书籍、技术博客、参加技术交流会议和线上课程等都是不错的学习途径。
3.6解决实际问题
找到一个实际的项目或者问题,并尽可能地独立完成。在解决实际问题的过程中,会遇到各种挑战和困难,但通过实践和解决问题,你的技能将得到很大的提升。
3.7寻求反馈与指导
与他人交流,向经验丰富的程序员请教问题,参与技术社区、论坛或开发者社群,积极寻找反馈和指导,可以帮助你及时发现问题、纠正错误并快速成长。因为在聊天的时候可能会不经意就知道了一些新的知识点,学到了新的技能,我以前是做Android开发的,不瞒大家说,我当时都做到部门经理了,还没用过ADB无线调试,以前习惯了插根线去真机上调试,有次和部门新来的一个开发聊天时,从他那里学到的无线调试方法。方便了很多,有的时候线坏了也不担心了,类似的这种场景还有很多。所以平时多和周围的人沟通一下、聊聊技术是一个很不错的方式。
3.8复盘总结
每天的工作和学习其实是很枯燥的,需要坚持,最好的办法就是自己回忆每天学到的内容,然后把他写下来。写博客是一个很好的方式,可以帮你加深记忆,同时提高对这个知识点的理解。很多人不敢开始,怕自己写的内容太简单被别人笑话,其实大可不必,只要是自己思考过的内容都可以记录下来,我们需要做的是给自己做积累,不用在意其他人眼光。
我在刚开始创作的时候就是记录基础的知识点,后来慢慢写一些解决具体问题的文章,再到后面就写归纳总结类的文章。现在转管理慢慢会写一些行业类和管理类的文章,总之就是一直在写。这个过程坚持下来会帮助你加深对知识的理解,另外后面碰到同类问题还是看下之前是如何解决的,我经常碰到同样的问题,但是还是忘记自己当时是如何解决的,后来就去自己的博客看一下当时如何解决的,还是那句老话:好记性不如烂笔头,不断复盘总结是非常重要的。
三 经验分享
开发做了这么多年,积累了一些小的经验,这里和大家分享下:
1.做项目,先问清楚需求,然后自己用思维导图工具,把各种可能性都罗列出来,都想清楚后再去建项目,写代码。有一句非常经典的话:Think more, Code less!
2.碰到没接触过的功能直接去github上面搜、搜的时候找star比较多的下载下来跑一下试试,学会用关键字检索,关键字一定要精简,这样你搜出来的内容匹配度才高,比如你搜一个开源视频功能组件,可以这样写:视频播放器,然后选择Most stars ,一般前几个都是主流的。
3.写代码一定要保持良好编码习惯,最好按照一套固定的编码规范来写,编码规范很多大厂都有发过。比如 函数、变量需要定义的有意义,让别人要能一眼就看懂,这部分建议多看源码提高,定义的变量可能还需要避开一些三方库函数或者变量名。
4.写代码的时候对于一些关键的函数和逻辑要写注释,加上必要说明,解释基本逻辑。但是千万别到处都是注释,如果是那样,一定是你的代码写的比较差,不易理解。
5.写代码不是越复杂越好,反而是越简单越好,函数一定要定义的简单,如果太复杂就定义多个函数。比如:for循环一定要减少层级,层级太多一定要想办法优化处理。
6.定义变量一定要注意初始化,定义数组一定要防止下标越界。
7.一些好的函数或者功能一定要单独记录保存,我建议整理一个自己的工具库,把好用的功能或者工具类都保存下来。
8.养成一个随时ctrl s 保存的习惯,这个不必多说,吃过一次亏就记住了。
9.尽量复用对象、多定义使用局部变量、避免随意使用静态变量
10.养成加TODO的习惯,比如一些自己不太理解的点、一些需要后续优化的点、一些没有处理好的逻辑等等加上TODO后续查找起来非常方便。
11.删除不必要的代码,保持整体的整洁,留着以备不时之需可以通过git版本控制等来解决。
12.重构有利于提高代码维护的效率,对于当时因为时间等原因写出来的一些比较乱的代码需要花时间去重构,一定是对自己有帮助。
13.把自己常用的技术网站、工具网站、资源网站都做好分类收藏为页签,可以方便查找,提高效率。
上面是个人的一些经验分享,如有错误希望大家批评指出,后续想到其他内容也会随时补充,写代码需要考虑正确性、可读性、可测试性、可扩展性、可移植性、性能等等一系列问题,所以需要抱着一个严谨的态度对待,做这行有一个好的心态是非常重要的。
总结
希望所有刚入行的小伙伴们都能保持积极的学习态度和对编程的热情。编程是一个不断探索和学习的过程,随着经验的积累和不断的实践,你们都会逐渐成长为一名优秀的程序员。