首先自我介绍一下,本人是一个web后端开发工程师,主用语言是Python。同时在一家培训机构的网校做兼职的导师(一对一辅导学员、判作业、考核学员),为了避嫌就不说学校名字了,至今为止接客也接了几十位了。
很多人现在都在学Python,原因很多:不是程序员的想转行、是程序员的追流行、学生想要找个好工作还有一小部分人因为个人爱好。
学习方式也是五花八门的:看书、看视频、看博客、报班学习等等。学习时长也各不相同,有的人两三天干完Python基础(这种普遍是有开发经验的);有的人两三周干完Python基础;有的人纯小白,学了一个多月连个函数都不会写;更有甚者“学了半年”,连个简单的while循环都写不出来。
说三个我的学员(为了保护学员隐私,不说姓名,但拿头担保绝对真实):
(1)我第一个学员是纯小白那种,做过销售,开过饭馆儿,0基础。每天在家坚持学4个小时,所有的作业都是提前交付。考核的时候除了第一次不了解考核形式挂了以外,其他考试都是一次通过。学了6个月,毕业的时候把学校安排的课程做完了,还把我给他看的一个我在做的小项目给重做了一遍。学完以后在天津拿到6K/月,不要看不起这个工资,可以看看天津0工作经验的程序员能拿到多少钱。
(2)一个马上30的C语言开发工程师,已经是一个项目组的组长了。每天比较忙,基本上前面基础部分就是一周一模块,三周学完面向对象,两个月把网络编程和基础的并发编程看了。数据库都不用说,本来就会;前端看了一个月。之后就是“神出鬼没”的,也没有进度,也不回消息,截止到期进度就到前端。
(3)一个做推广的小姐姐,25了,想学Python能自己做个推广软件。因为公司用的一个web版的推广工具,每年6000(那东西我看过,有微信的API、头条的API基本上有个一个月就能做,前端真的丑……)学了很久,是基本啥都不会……我跟她打电话带她梳理知识点,第二天晚上一问还是答非所问的。
还有很多:30岁的快递小哥,6个月学完函数;在校生(计算机专业),6个月学了个导论;刚工作的大学生,6个月毕业,胜任初级后端开发……
我有时候晚上给学员考完试以后也在想,为什么有的人就能学的又快又好,有的人就是“朽木不可雕也”。思考很多我觉得原因如下:
a.逻辑能力和学历
b.个人起点
c.学习态度
接下来我会对每一条做出具体的解释。
首先声明,学历低不代表不能从事IT行业。但是学历是进入这个行业的一个门槛。现在打开招聘网站可以查一查开发岗位的招聘需求,基本都要求全日制本科学历,大专都要的比较少。当然,这并不是绝对的,我也有很多朋友高中学历,但是依然有着很强的技术水平。但是实事求是的说,这样的人太少了。而且在不简历造假的情况下,基本上大专学历以下的是基本上约不到面试的。虽然这话很不中听,但是确实是现在的现状。
为什么很多公司对学历要求这么严格呢?很简单,毕竟学历从某些方面代表了一个人的学习能力和这个人对于自己的态度。现在的社会现状就是这样,如果你自己都不能为自己的将来负责,那么凭什么要公司为你过去的玩乐时光买单呢?所以,如果你相信我。那么如果低于大专学历,那么就要做好学完也找不到工作的准备(不要听很多销售跟你扯包装学历,这是很严重的诚信问题)。
说完学历就是逻辑能力,逻辑是一个从事开发人员的必备素质。开发本质上就是对数据的处理。这些数据的处理要根据业务和需求进行复杂的逻辑处理。而且程序的控制本身就是用你的代码去描述清楚一个事件。如果你不能用语言把一个事情的来龙去脉说清楚,那么我不认为能够用代码把这个现实中的逻辑阐述明白。这个也是联系代码的一个很有用的方法,就是把一些现实中的事情用代码来描述出来。在刚开始学习编程的时候我经常用代码写一些脑筋急转弯。这个对逻辑能力和代码能力提示很大。
有一个很有意思的现象:很多有编程基础的人来报课最后没有学完。而很多0基础的小白却学的非常到位。
个人的起点真的还是有一些决定因素的。基本分成三种情况:大牛,小白,半瓶醋。大牛学习新的知识的时候往往会从深入浅,结合着自己以前的经验去学习,往往事半功倍。小白则是心存敬畏,知道自己和别人差距很大,反而更加努力。而有很多人则是学过一点点,但是又不是很明白,觉得自己比小白强很多。这个起点的人学习起来太可怕了……往往不能够踏下心来去从头开始,基础的部分一代而过,直接开始后面的学习,直接学习框架去写需求。不说结果一定不好,但是往往学习效果差强人意。所以往往许多小白到最后反而学的要比之前懂一点的要好很多。
(1)**对待技术要有敬畏之心。**很多人学python都是因为python简单,但是真的是这样吗?python的语法确实简单,而且包很多,可以不用开发人员自己去造轮子。但是真的要理解这个语言的精髓,以及语言内部的一些原理要走的路还是挺长的。我经常能听到很多程序员关于语言之争的言论,更可笑的是还有很多子媒体扇风点火。语言不过是一个工具,不是谁的工具牛逼谁就厉害的。真正厉害的是造工具的人和拿工具开发出厉害产品的人。扫地僧级别的人从不说哪个武功好,都是去其糟粕取其精髓。玩儿C的看不起玩儿java的,玩儿java的瞧不起玩儿python的,大家好像都不太瞧得起玩儿ruby的。但是仔细看每一个语言都有其优点。所以永远不要因为别人说python简单就轻视它,想把它玩儿好,还差得远。
(2)学会提问。《提问的智慧》我给很多人推荐过,真的是太有用了。提问不要总是问怎么办,这个是毫无意义的提问。我的学员中经常会有人在一开始问我python怎么安装,pycharm怎么安装,怎么使用工具。我嘞个天啊!明明百度上一搜,第一个就是答案,就是得问我(虽然是花钱来上课的吧)。但是真的,一个人没有营养的问题问多了是会傻的……提问的时候永远不要单纯抛出问题,一定有过自己的思考和求证不通之后再提出问题。你把代码甩给人家说有bug和你告诉人家bug定位在哪里得到的帮助是不一样的。
(3)**戒焦戒燥!**有的人拿着本书,一天时间从头看到尾。第二天起床打开代码:我X,这是个啥子呦!这种真的不可取!学习,不论学什么,一定踏踏实实来,不要想着一口吃成个胖子。步子大了不是什么好事。上过大学的都知道,考试前一天晚上刷夜的复习。考试过了也不是真会,考完了就全都就着饭吃了。
说了上面这些,准备学习或者已经在学的好好想一想自己中了几条。如果中了,那么凭什么你能学的会,凭什么你能学的比别人好。如果不能,那你和咸鱼有什么区别,如果目标不是最好,那还有什么学的必要?
上面说了这么多,接下来说一下怎么学好。
开始的时候很多人喜欢搞一堆资料来看,书三四本,视频三四套。错误。一定要选择一套评价高的,只看这一本。因为不同书虽然所讲知识是一样的,但是体系不同,风格不同。选择了一个就要从一而终,这样不会被不同体系的资料搞蒙。
上面说了,要从一而终,但是也不要太老实。单一的资料虽然确保了体系的纯净,但是也带来了局限性。所以在很多时候要能够自主的根据书上介绍不全或者是自己不理解的东西去网上找找其他资料作为知识扩充。
过去有句话,什么十万代码成就百万年新。略微夸张,但是话糙理不糙。你博览群书,看尽天下武学你也就是个王语嫣,遇见流氓都打不过。但是勤学苦练才能变虚竹。代码这玩意儿看会不是会,能写才是真。所以你就老老实实啪啪啪啪敲代码吧。
光说不练假把式,光练不说傻把式。会写得会说。做好笔记,日后忘记的时候还能回过头来看两眼。不要特别详细,但是必须自己能知道自己曾经的疑惑点
这个时候的你已经不算是小白了,你有了一定的代码能力。这时候一味的闭门造车只能耽误自己。要多看看技术文章,多和别人交流。只有学习别人,看看自己和别人的差距才能正确的估计自己。而且当你能回答那些小白的一些问题的时候那种内心的满足感能让你有更大的动力学习。
到这个时候你已经完成了基础的学习,剩下的就是进阶学习了。不可追求全面发展,可以都看一点,但是一定要知道自己想做什么,想做爬虫看爬虫,想做web看web,想学机器学习就看机器学习。不要一味追求广度,深度才是你比别人强的地方。但是其他的也不要一点不懂,多少还是要了解一下。
这个阶段已经不是最一开始的时候那种基础问题了,已经是很多教程中没有的东西了。这个时候有条大腿绝对是超级捷径,就像是虚竹得了无崖子功力一样。
名是出山,实际上就是出了新手村,看完了指导教程,做了圈任务。出去以后会发现世界这么大,你就是个弟弟。别灰心也别自傲,一座座山的爬过去。走着走着就发现眼前都是坦途。