非计算机专业学生怎么走上计算机技术之路?

作者: 上学的小哥哥 分类: 学习方法 发布时间: 2020-03-25 15:09

若想转行做技术,考研、自学都可以,但你首先要有兴趣。
我以我的经历给题主一些建议,但是我的每条建议都是建立在「对计算机、互联网充满兴趣」这一前提上的。我本科读的是物流管理(经济管理类专业),现在大四。我在2015年秋天决定转行,在2016年夏天找到工作,如今在杭州一家医学互联网公司做后端开发。

一、转专业或转行的原动力,一定要是兴趣驱动,而不是利益驱动。(注意:这是判断你要不要转专业、转行的关键因素)

我是靠着兴趣自学,然后转行成功的,而且我对计算机、互联网的兴趣确实已经持续很多年头了。

所谓兴趣驱动,就是要求你对计算机或互联网有着充分的好奇心和足够支撑你学习的热情。
有些人,他们使用电脑上网就是聊聊天看看剧、查查资料打打游戏,如果还会P个图,那就已经很了不起了。
但有些人,他们就是很在意一个网页为什么可以排版得如此美观,在意一个有趣的小程序到底是怎么做出来的,在意为什么贴吧大神可以把照片中史泰龙的头搬到曾轶可的身体上。
后面这类人,很容易将好奇心转化为兴趣,然后将兴趣转化为能力,甚至内化为价值观。
而且兴趣的驱动有一种独到的好处,它会给予你十足的动手能力,以及动手后的成就感和欢欣。
「成就感」是个很了不起的东西,它如果和兴趣相辅相成、共同驱动,你的学习速度会提高一个量级。

所谓利益驱动,则是认为自己没什么可以拿出手的吃饭的本领,以为IT待遇高、门槛低,是一条好路子。现在市面上一大堆培训班出来的「程序员」找不到工作,叫苦不迭,说到底就是奔着这条高待遇的路子来的———其他的先不管,我先赚着钱再说。若你是这种想法,转专业、转行前一定三思。

毕竟兴趣才是最好的老师,换句话说,「你要有一颗Geek的心,而不是功利的心。

二、善于自学,杜绝一开始就想要拜师、培训的想法。

这一点我想首先说一个小故事。我之前是一名Beatbox口技表演者,总会有同学或者陌生人,在得知我拥有这个技能后,立刻就要认我做师父,恨不得我可以嘴对嘴,啊不,面对面地给他们讲课,他们希望我能够让他们速成。
实际上,Beatbox的基本技巧,网上的教学视频数不胜数,而且他们还讲得比我好,比我更专业。但是,我的「徒弟们」却鲜有人能够耐心地去搜搜教程、跟着视频认真得学一学。

同样,想学计算机技术,网易公开课、Coursera、慕课网、实验楼,这些都是自学的好地方,而且花销很小。何必要到技术社区苦苦地寻求一个师父呢?何必丢一笔钱给培训机构呢?
但是,自学一定要学得系统,要有一套自己的流程,而且一定要善于使用搜索引擎,这个我后面再讲。

三、善于使用搜索引擎,这是一个人非常优秀的特质。

非计算机专业学生怎么走上计算机技术之路?-2

倒不是说一定要用谷歌,也可以用百度(虽然黑百度是知乎的政治正确)。其实一定程度上来讲,Google、Baidu、Bing、搜狗都可以。当你善于使用搜索引擎查询自己的问题时,用哪个引擎根本不重要,因为一个引擎搜不到答案, 你就会换一个引擎,直到搜出自己想要的。======2016-11-24 更新=======

四、关于系统化学习、自学的流程。

前面有位答主提到过,自学最好不要按照科班的课程设置来,他说得很对。
我们要选择「兴趣+成就感双驱动」这种学习方法,就要在一开始最大程度地避免能浇灭自己信心的东西,基础原理可以在入门以后再进行学习。
科班的计算机课程都是从「计算机组成原理、数据结构、算法导论、C语言、计算机通信原理」开始的,这些基础课程有一个共性,课程中的概念大多都很晦涩、抽象,因为它们接近底层原理,十分容易让人一头雾水,这对自学者来说极为不利。
那什么样的自学流程才是适合自学者的?
我认为是「系统学习一门编程语言 -> 自己给自己提需求 -> 动手折腾 -> 遇到问题 -> 逐一解决 -> 理解原理」,我就遵从的这条路线。
先说说这条路线的好处。很多人在入门了一门编程语言后就变得手足无措,他们根本不知道自己到底能做什么。而自己给自己提需求,就可以驱使自己迈开步子、动起手来。
我举个例子:大学里的班长有时候需要收集班级同学的信息,比如寒假几号离校。通常班长的做法就是,班级QQ群里或微信群里吼一声:「麻烦同学们把离校时间私聊给我!」。最后自己手动整理成表格。
假如我是一个刚学会PHP的班长,我可以想到,利用PHP+数据库做出一个表单网页,去收集班级同学的信息,然后马上动手去实现。动手的过程中我可以慢慢掌握前台如何正确的将数据传输到后端、后端如何将数据储存到数据库中。我还会想着将数据库的信息如何导出为Excel表格,于是我打开搜索引擎搜索自己的疑问,从而了解到一个叫做PHPExcel的PHP库,简单学习一下官方提供的使用方法,就可以将数据库中每人的离校时间数据转为Excel表格。
做完这个网页,不光自己省心省力,而且如果有同学说一句「班长还会写网页啊?」就更能够让自己心里美滋滋,这就是「成就感」。
接下来不断循环「提需求 -> 动手做 -> 遇到问题 -> 解决问题 」这个过程,刚入门的自己也就慢慢成长起来了,起码不再手足无措了。

那么如何系统地学习一门编程语言呢?
首先,你必须要知道编程是严谨的,要本着一颗严谨的心去学习。
你最好按照这个顺序来,大部分的教学视频也是这样来的:

  • 了解这门编程语言的基本语法。
  • 了解这门语言的基本数据结构(整数、浮点数、布尔、字符串、数组、列表、字典等)
  • 如何定义变量及其数据类型(有的语言不需要定义数据类型),如何给变量赋值。
  • 如何正确使用这门语言的逻辑语句(If、For、While)
  • 如何运用这门语言的常用函数。
  • 如何自己写一个自定义函数,如何给自己的函数设置参数。

至此,你已经可以自己做点东西了。然后:

  • 理解面向对象,运用面向对象。
  • 学会Debug,学会查错排错。
  • 学会使用各种已有的类库。(前辈栽的树、造的轮子)
  • 学习一门框架。
  • ……

上面提到的这些,网络上的教学视频基本都会讲到。我强烈建议你在听课的时候,打开搜索引擎放在一边,时刻准备着搜索自己不理解的问题。同时准备一个编辑器,老师敲什么代码你就敲什么代码。
学习的过程中不要好高骛远,不要刚学会基本语法就想着上手框架。这样会走很多弯路,这就不算是「系统学习」了。
若你在学习的同时,想要给自己提一些小需求,那么你可以尽管提、尽管做。
首先捋清楚思路,至少动手的方向不要错。然后脑中构思实现过程,逐一去实现。途中若遇到基本功的问题就回去温习基本功,遇到超纲的问题就去求助搜索引擎。直至你完成了自己的需求,「成就感」和欢欣就会让你更加坚定这条道路。

五、关于方向的选择。

其实我在准备写这一条建议的时候我就后悔了,实在是夸下了海口。因为我只是一个刚转行成功、刚踏入职场的新人,而且现在只在做开发岗,运维、测试等岗位都还没尝试过,所以对于方向选择这个问题上我实在不敢给出什么人生经验。
先了解一下目前市面流行的编程语言吧!搞清楚每门语言的适用方向(像Python这种有多种方向的要都了解下),是Web开发还是移动APP开发或者桌面程序开发?然后到招聘网站看各自适用岗位的岗位职责,了解具体的工作内容。
多结识一些行业前辈,他们会给你很多有用的建议。我是因为7年前就开始写自己的独立博客,所以会认识一些互联网行业的朋友,在转行过程中他们帮了我很多,感谢他们。
多到技术社区逛一逛,最后决定选好什么语言。
一定不要犹豫太久(我很后悔大三才做转行的决定)。

本答案还会不定期更新。
最后祝各位都能转行成功,共勉。

作者:大袋鼠
来源:知乎

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!