非计算机专业学生怎么走上计算机技术之路？
若想转行做技术，考研、自学都可以，但你首先要有兴趣。 我以我的经历给题主一些建议，但是我的每条建议都是建立在「对计算机、互联网充满兴趣」这一前提上的。我本科读的是物流管理(经济管理类专业)，现在大四。我在2015年秋天决定转行，在2016年夏天找到工作，如今在杭州一家医学互联网公司做后端开发。 一、转专业或转行的原动力，一定要是兴趣驱动，而不是利益驱动。(注意：这是判断你要不要转专业、转行的关键因素) 我是靠着兴趣自学，然后转行成功的，而且我对计算机、互联网的兴趣确实已经持续很多年头了。 所谓兴趣驱动，就是要求你对计算机或互联网有着充分的好奇心和足够支撑你学习的热情。 有些人，他们使用电脑上网就是聊聊天看看剧、查查资料打打游戏，如果还会P个图，那就已经很了不起了。 但有些人，他们就是很在意一个网页为什么可以排版得如此美观，在意一个有趣的小程序到底是怎么做出来的，在意为什么贴吧大神可以把照片中史泰龙的头搬到曾轶可的身体上。 后面这类人，很容易将好奇心转化为兴趣，然后将兴趣转化为能力，甚至内化为价值观。 而且兴趣的驱动有一种独到的好处，它会给予你十足的动手能力，以及动手后的成就感和欢欣。 「成就感」是个很了不起的东西，它如果和兴趣相辅相成、共同驱动，你的学习速度会提高一个量级。 所谓利益驱动，则是认为自己没什么可以拿出手的吃饭的本领，以为IT待遇高、门槛低，是一条好路子。现在市面上一大堆培训班出来的「程序员」找不到工作，叫苦不迭，说到底就是奔着这条高待遇的路子来的———其他的先不管，我先赚着钱再说。若你是这种想法，转专业、转行前一定三思。 毕竟兴趣才是最好的老师，换句话说，「你要有一颗Geek的心，而不是功利的心。」 二、善于自学，杜绝一开始就想要拜师、培训的想法。 这一点我想首先说一个小故事。我之前是一名Beatbox口技表演者，总会有同学或者陌生人，在得知我拥有这个技能后，立刻就要认我做师父，恨不得我可以嘴对嘴，啊不，面对面地给他们讲课，他们希望我能够让他们速成。 实际上，Beatbox的基本技巧，网上的教学视频数不胜数，而且他们还讲得比我好，比我更专业。但是，我的「徒弟们」却鲜有人能够耐心地去搜搜教程、跟着视频认真得学一学。 同样，想学计算机技术，网易公开课、Coursera、慕课网、实验楼，这些都是自学的好地方，而且花销很小。何必要到技术社区苦苦地寻求一个师父呢？何必丢一笔钱给培训机构呢？ 但是，自学一定要学得系统，要有一套自己的流程，而且一定要善于使用搜索引擎，这个我后面再讲。 三、善于使用搜索引擎，这是一个人非常优秀的特质。  倒不是说一定要用谷歌，也可以用百度。其实一定程度上来讲，Google、Baidu、Bing、搜狗都可以。当你善于使用搜索引擎查询自己的问题时，用哪个引擎根本不重要，因为一个引擎搜不到答案， 你就会换一个引擎，直到搜出自己想要的。 ======2016-11-24 更新======= 四、关于系统化学习、自学的流程。 前面有位答主提到过，自学最好不要按照科班的课程设置来，他说得很对。 我们要选择「兴趣+成就感双驱动」这种学习方法，就要在一开始最大程度地避免能浇灭自己信心的东西，基础原理可以在入门以后再进行学习。 科班的计算机课程都是从「计算机组成原理、数据结构、算法导论、C语言、计算机通信原理」开始的，这些基础课程有一个共性，课程中的概念大多都很晦涩、抽象，因为它们接近底层原理，十分容易让人一头雾水，这对自学者来说极为不利。 那什么样的自学流程才是适合自学者的？ 我认为是「系统学习一门编程语言 -> 自己给自己提需求 -> 动手折腾 -> 遇到问题 -> 逐一解决 -> 理解原理」，我就遵从的这条路线。 先说说这条路线的好处。很多人在入门了一门编程语言后就变得手足无措，他们根本不知道自己到底能做什么。而自己给自己提需求，就可以驱使自己迈开步子、动起手来。 我举个例子：大学里的班长有时候需要收集班级同学的信息，比如寒假几号离校。通常班长的做法就是，班级QQ群里或微信群里吼一声：「麻烦同学们把离校时间私聊给我！」。最后自己手动整理成表格。 假如我是一个刚学会PHP的班长，我可以想到，利用PHP+数据库做出一个表单网页，去收集班级同学的信息，然后马上动手去实现。动手的过程中我可以慢慢掌握前台如何正确的将数据传输到后端、后端如何将数据储存到数据库中。我还会想着将数据库的信息如何导出为Excel表格，于是我打开搜索引擎搜索自己的疑问，从而了解到一个叫做PHPExcel的PHP库，简单学习一下官方提供的使用方法，就可以将数据库中每人的离校时间数据转为Excel表格。 做完这个网页，不光自己省心省力，而且如果有同学说一句「班长还会写网页啊？」就更能够让自己心里美滋滋，这就是「成就感」。 接下来不断循环「提需求 -> 动手做 -> 遇到问题 -> 解决问题 」这个过程，刚入门的自己也就慢慢成长起来了，起码不再手足无措了。 那么如何系统地学习一门编程语言呢？ 首先，你必须要知道编程是严谨的，要本着一颗严谨的心去学习。 你最好按照这个顺序来，大部分的教学视频也是这样来的： 至此，你已经可以自己做点东西了。然后： 上面提到的这些，网络上的教学视频基本都会讲到。我强烈建议你在听课的时候，打开搜索引擎放在一边，时刻准备着搜索自己不理解的问题。同时准备一个编辑器，老师敲什么代码你就敲什么代码。 学习的过程中不要好高骛远，不要刚学会基本语法就想着上手框架。这样会走很多弯路，这就不算是「系统学习」了。 若你在学习的同时，想要给自己提一些小需求，那么你可以尽管提、尽管做。 首先捋清楚思路，至少动手的方向不要错。然后脑中构思实现过程，逐一去实现。途中若遇到基本功的问题就回去温习基本功，遇到超纲的问题就去求助搜索引擎。直至你完成了自己的需求，「成就感」和欢欣就会让你更加坚定这条道路。 五、无任何编程基础的新手该如何入门？ 很多技术社区有个经典理念：「看技术文档是最快的学习方法」，其实这一条经验适用于「具有一定编程经验的程序员」，并不适用于并未入门的新手。 上文中提到，我对新手的建议是直接看网上的教学视频，但如果你是一个彻头彻尾的编程新手——这里的「编程新手」指的是不理解什么是变量、什么是赋值、什么是条件控制…的伙伴。那么，上面的学习方法可能对于你来说也过于笼统，转行的难度也会高很多。别灰心，你现在的主要任务是快速搞明白一些基础的编程概念。 如今网上很多编程在线学习应用，它们会傻瓜式、渐进式地引导你去理解一些基础的编程的概念和一门语言的基础语法。这些编程在线学习应用五花八门，你可能不知该如何选择。这么说吧，基础的编程概念教育和入门级的编程语言教育，各家做得都挺不错。 对于新手，首先应该挑选一门简单易理解的编程语言，方便自己快速理解和入门编程。可能你之前也听说过，Python 语言因为其简单易上手的特性，如今在少儿编程和入门培训中很火热。我挑选了百词斩旗下的「夜曲编程」举例，讲一讲他们的 Python 入门课程是怎么让零基础小白一步步理解编程的。 「夜曲编程」的Python入门课一共30节，学完后你最起码可以理解编程的一些基本概念，还有Python这门编程语言的一些基础用法。课程设计是每天打卡，30天学完。其实我觉得用不上30天，就算是纯新手，每天抽时间学个3~4节不成问题。 课程设置一共分为六大块：数据与运算、条件判断、数据结构、循环、函数和类、编程实践，循序渐进。不要被这些名词吓到，这门课会把这些名词都给你解释清楚。 课程会先向你介绍名词概念，随后再出一道基础的图文并茂的选择题，这非常像我们读书时期的学习模式，但比读书时期做题更有意思，一是因为你对它感兴趣，本身就具备学习动力，二是因为课程中内容好多都是漫画形式，学习起来不会显得枯燥。 举个例子，课程中告诉你，「变量」就是像箱子一样的容器，用来存放叫「值」的东西，赋值的意思就是把东西放进容器里，把「值」放进「变量」里。随后，给你一道选择题如下： 上图可以看出，A的「眼镜」作为值放进了「眼镜盒」这个变量中。C的「牛奶」作为值放进了「咖啡杯」这个变量中。D的「衬衫」作为值放进了「旅行箱」这个变量中。而B是一堆杂物，显然没有「赋值」这个过程。是不是很快就理解了？ 「夜曲编程」还有贴心的记忆卡片的功能。随着你对课程循序渐进的学习，你会解锁一张又一张的记忆卡片。这些卡片是常见的编程概念和Python语言语法，你随时可以将他们翻出来，回顾这些概念和语法，加强理解或者避免遗忘，这有点像读书时期的笔记。 概念卡片中也都是图文并茂的形式，基本上看一眼漫画，马上就能领悟到这个概念的意思。「判断语句」就像分岔路，如果「我」要「回家」，就走左边这条路；如果「我」要「出城」，选右边这条路。这种编程概念和现实世界联系起来的感觉，让人记忆深刻。 作为一个编程老鸟，在体验这门课时经常会感觉课程过于基础了。但我转念一想，零基础的新手也许需要这么一门课，不笼统不生涩，能够有趣地、有序地完成编程的入门，在尝到一些编程的乐趣后，能够向更广阔的编程领域进行深入地探索。 感兴趣的同学可以关注公众号【夜曲编程】发送【免费教程】先体验一下。 请记住，零基础的人，需要的不是海量的学习资料，而是充足的学习动力、循序渐进的引导、合理的学习方法。 六、关于方向的选择。 其实我在准备写这一条建议的时候我就后悔了，实在是夸下了海口。因为我只是一个刚转行成功、刚踏入职场的新人，而且现在只在做开发岗，运维、测试等岗位都还没尝试过，所以对于方向选择这个问题上我实在不敢给出什么人生经验。 先了解一下目前市面流行的编程语言吧！搞清楚每门语言的适用方向(像Python这种有多种方向的要都了解下)，是Web开发还是移动APP开发或者桌面程序开发？然后到招聘网站看各自适用岗位的岗位职责，了解具体的工作内容。 多结识一些行业前辈，他们会给你很多有用的建议。我是因为7年前就开始写自己的独立博客，所以会认识一些互联网行业的朋友，在转行过程中他们帮了我很多，感谢他们。 多到技术社区逛一逛，最后决定选好什么语言。 一定不要犹豫太久(我很后悔大三才做转行的决定)。  最后祝各位都能转行成功，共勉。