其实这是一个老生长谈的问题,就像毕业了去大公司还是小公司好一样。虽然这个问题已经被问烂了,但是不同的人有不同的看法,每个过来人的学习路径不一样,有的效率高,有的效率低,总结出的学习经验学习方法也不一样。

为什么学习编程
我觉得每个人学习编程先问一下自己这个问题,到底是自己喜欢编程,还是看到互联网公司的高薪资,不得不说表面上程序猿的薪资比其他行业是高的多的。我毕业4年,真正开始编程6年了,自己编写的第一个软件是淘宝店铺商品管理小工具。 我是非科班出身,本科是牛批的生物技术,其实报考生物专业也纯属偶然,这个以后矫情的时候会跟大家唠唠。下面来说说看薪资的编程和兴趣使然的编程有什么不同。

看钱类
这类童鞋学习编程纯粹的是为了一份工作,想获得更高的收入才转行学习编程。又或者是一些刚毕业的学生听说编程行业就业不错工资高,去培训学习编程,然后进入互联网企业, 上面说的是最常见的为了工资进入编程行业的两类。其实这类童鞋很多来自农村或者一般家庭(我也是来自农村还是贫困县,渣二本毕业)。对他们来说编程是获得高收入的最直接途径,也是在城市立足的最有效的一种保证。

兴趣类
这类人大部分科班出身,或者即使不是科班出身也比较爱折腾,在学生阶段就开始学习编程。他们对编程有着浓厚的兴趣,一旦入门之后,基本出现什么新技术他们都爱去折腾,不断的汲取新知识,自主学习能力较强。当然也有很多人是进入编程行业之后突然有了兴趣的,这个另说。

应不应该报培训班
不管是兴趣类的还是看钱类的,刚入门的新人,毕业找工作的第一件事情就是,我要不要报个培训班,培训一下去找工作。尤其是在当前大环境下,动不动爆出个裁员消息的情况下,很多人精神紧张,甚至很多工作两三年的人去报什么进阶班,大神班。

报不报班完全看个人情况,如果你是新人,非科班,对计算机概念比较陌生,无头绪,那么可以看自己经济能力报班。经济能力如果不允许可以去找一些系统的教程,找一些知名的培训机构的实际教学录制教程。从头看到尾,也能入门。甚至学完后找到一份不错的工作,这个完全靠自觉来学习了。(哪些机构比较好,这里不方便说,可以私信我,有问必答)

还有一些同学是快毕业了,又要找计算机的工作,或者已经毕业能力不达标,想去培训一下,也是可以的。

既然标题都说了,如何自学编程,我给的建议是能自学尽量自学。完全可以靠自学入门,无非是自己入门难,自己一头雾水,总是在学习方向上很迷惘。要学习哪些东西,先学什么后学什么,觉得这也要学那也要学。然后自己也刷了很多题,也接触了很多方面,既知道前端又知道后端。但是什么都不精,过来人告诉你这种状态很危险。去小公司同事会觉得你牛批,全能小王子。但是去大公司面试基本上问深一点就挂了。知识的深度决定你的高度。

那么自学应该怎么学呢,篇幅有限这里不可能给你列出所有的详细的计划来。只能大体上给点规划建议。

1). 第一点:别乱加群
别乱加群,什么前端群,后端群,什么node群,php群。注意说的是不乱加群,不是不加群,别杠精一会跑来找我理论。 如果你加了群,你会发现80%的群是没用的,要么是培训机构的群,动不动什么两小时学习百度阿里的亿级流量架构,2小时教你剖析linux内核,好的机构还好,让你知道个概念,差的机构让你更迷茫浪费时间。又或者是一群扯淡群,大家在群里闲聊,斗图斗的不亦乐乎。这一天下来神清气爽,总是对着屏幕偷偷乐。几个月过去了,毛都没学到。

加群要学会甄别,真正有营养的群很少,多动脑思考下辨别一下。

2). 第二点:要有计划
一定要有计划,并付诸行动,一个阶段一个阶段去学习,不要每天既学java,又学前端。有计划才能让自己有深度。如果你现在在学习java web那么就制定好完整的学习计划,列出要学的知识点的思维导图。可能刚开始的思维导图枝枝叶叶很多,但是排好优先级,各个攻破绝对是一种成就。可以尝试下百度脑图,列出所学的知识点,标注好优先级,各个击破。

3). 第三点:专一专注
如果你是做web的后端工程师,那么你要先专注把后端做好,后端做精了,你可以横向发展拓展自己的知识面,前端可以偶尔了解一下,菜吃腻了也要换换口味,但是了解归了解,不要忘本。扩展自己的知识面可以完整的清楚一个项目是怎么运行的,怎么构建在服务器上的,linux,nginx等等周边也可以深入了解一下。尤其是在前后端分离盛行的今天,有些前端不知道后端是什么样的,有些后端对js,ajax等一窍不通,在现成的框架上实现个api就是日常工作,一旦脱离不知道从哪下手。

横向发展也要专注自己所在的领域,比如web领域。这样知识面广了,如果自己的本行比如后端java又比较精通,那么很有潜力往架构师之类的方向发展。

4). 第四点:多写多改
要有动力去改自己的代码,多看优秀开源软件,学着去用,一些好的代码编写方式尝试用到自己项目中,别怕出bug被人骂,出bug可以改,只要不是恶意为之没关系。 bug出了,自己能力也到手了,编程能力和经验,就是解bug和制造bug的能力。bug解多了,在新手面前可以装比。老哥我这里出现了bug,我改了哪里哪里…。不等他说完,你眼一撇,是不是判断写反了,这时候绝对对你佩服的五体投地。

多改多写,对自己写的不好的代码优化,其实是一种能力的锻炼,也是对项目负责,短期bug变多了,改坏了,长期是有好处的。工作都是为了钱,除非家里有矿。锻炼自己的能力最重要,个人成长才是真的成长。别上个班上升到什么民族大义了,效益不好,老板该让你滚蛋你还是得滚蛋。

打铁还需自身硬。

5). 第五点:多面试
说这一点,我感觉要被人打,其实面试是最快的短期提升自己的方式。面试一些自己不想去的公司,可以知道自己距离企业的要求有多远,可以知道自己哪些不足,针对性的调整弥补。其实面试你会发现也就问那些知识点,只是深度不一样,一些企业问偏题,甚至翻遍所有资料都找不到记录的,这种的就当什么没听见好了,反正你也不会去。

我一个朋友之前面试过几家公司,作为真正跳槽前的准备,就起到了很好的效果。特别一些公司爱引导面试者回答问题,由浅及深更佳。

希望勿喷,实际就是这样。