今天的推文内容来自于公众号后台一位小伙伴的留言。
这位小伙伴本科不是计算机专业,但未来想要从事计算机行业,对于具体要怎么去做产生了疑问,希望可以得到一些建议。
对此,小茴香整理了相关的经验,就非计算计专业的小伙伴,如果想要跨行从事计算机技术,该怎么去思考和规划。
希望这篇文章可以帮助你做好决定。
首先,计算机是一门系统性的学科,只有结合自己的现实情况,付出相当程度的努力,才能在这个行业找准自己的定位。
那要如何来分析自身的情况呢,一步步坚定自己的选择呢?
第一点:认识你自己
这一点听起来很虚,但也是最重要的前提。
因为一味随大流不可取,适合别人的不一定适合你,那要怎么知道适不适合自己,可以从如下几个方面来进行判断。
一,有没有较好的逻辑思维
计算机工程性和研究性的工作相对来讲是需要从业者天生具备较好的逻辑思维和抽象思维的能力。
在这个基础上经过大量的学习和训练从而可以适应当下职场需要。不过逻辑思维能力是可以训练的,问题不大。
其实做为一个学习者,有一个学习的氛围跟一个交流圈子特别重要这里我推荐一个C语言C++交流群1075673198,不管你是小白还是转行人士欢迎入驻,大家一起交流成长。
二,有没有最基本的兴趣
意思就是你不会排斥写代码这件事情,但不需要具备很大的兴趣。
主要原因在于:初期的兴趣其实根本不值一提。任何事情如果当成一个职业来做,就没有它表面的光鲜,所要处理的事物的纷繁复杂性足以磨灭你初期的兴趣。
有了基本的兴趣再加上自己的努力,就会越来越喜欢代码的。
三,是否愿意放弃本专业的一切从零开始
转行的机会成本也比较大,有些人会在试水衡量投入回报比和转行的未知性后,选择放弃。
这点也说明,男怕入错行,转行要趁早。
其实做为一个学习者,有一个学习的氛围跟一个交流圈子特别重要这里我推荐一个C语言C++交流群1075673198,不管你是小白还是转行人士欢迎入驻,大家一起交流成长。
四,是否愿意付出相当程度的努力
对于非计算机科班的人来讲,能否付出相当程度的努力是决定最终能否转行成功的关键。
这需要你有破釜沉舟的勇气,还要有十足的努力和意志力,才能迎来柳暗花明的时期。
以上四点如果你都持肯定的态度,那你可以具体再做下一步的分析。
五、评估自己当前的计算机水平的级别
包括计算机小白;有一定计算机基础;有较高计算机水平三个级别。
如果你是计算机小白,不建议纯靠自学。
计算机学科的许多不同科目很多时候是相互依存互相印证的,并非存在严格的拓扑排序关系。
许多小白也就是在学A发现需要学习B和C,转而去学B,C然后发现先学个D更好,然后学D的时候发现也有A的部分的环路中晕头转向最后放弃。
对于小白来讲,加入一个良好的学习和实践计算机的环境,不管是现实环境还是网络环境,大家一起学习,或者学会傍大腿,跟随身边的计算机牛人学习,效果远胜过自学。但如果你想自己先开始体验一下自学的科学步骤,科班学生的学习计划具有一定的参考价值。这也是接下来要说的第二点,解决了自己适不适合以后,又该怎么做?
第二点:非计算机专业学习路线
编程语言学习篇
C -> C++ -> Java -> Python
这一套学完就基本掌握了语言的精髓了。
本科难度一般指的是熟悉,而非精通。
算法与数据结构篇
离散数学 -> 算法与数据结构 -> 算法竞赛入门
这一套学完就不惧怕面试的算法题了。
对于求职,主要掌握线性/树/图/网络四种结构,以及贪心/DP/分治/搜索等基本算法即可。
计算机体系篇
汇编 -> 计算机组成原理 -> 数据库 -> 操作系统 -> 编译原理
这一套学完对计算机的理解会提高几个层次。
但一般的程序员很可能用不到太深的内容。
人工智能入门篇
计算机图像 -> 计算机图形 -> 大数据分析 -> 计算机视觉 -> 自然语言处理
这一套学完大概能理解AI的发展和应用。
这几门不能说有严格的递进关系,每门大概熟络后就可以进入下一门,对于有志于从事AI相关的,能精通一个方面就很难得了。
对应科目推荐的书籍清单如下
C:《C程序设计语言》
C++:《C++程序设计语言》
Java:《JAVA编程思想》
Python:《Python核心编程》
离散数学:《离散数学及其应用》
算法与数据结构:《算法导论》(前几章)
算法竞赛入门:《挑战程序设计竞赛》
汇编:《汇编语言程序设计》
计算机组成原理:《计算机组成原理》
数据库:《数据库系统概念》
操作系统:《现代操作系统》
编译原理:《编译原理》
计算机图像:《数字图像处理》
计算机图形:《OpenGL编程指南》
大数据分析:《统计学习方法》
计算机视觉:《计算机视觉》
自然语言处理:《Deep Learning in Natural Language Processing》