本人做java开发已有很长一段时间,回想起最早学习编程的时光,颇有感触,不吐不快,故书写此文,以飨读者。


本文仅代表个人观点,为非计算机方向,又希望从事编程工作的朋友作参考。如果你现在正在读大学,那么无论如何,请确保能顺利毕业,文凭还是很重要的。


1. 我的经历

本人原本的专业并非计算机方向,无奈毕业后找不到合适的工作,几番巧合之后,决定学习Java。


说是学Java,其实也就是自己在那瞎摸索罢了,因为对此完全没有概念,大学里面倒是学过一点c和c++,以及其他一些编程语言,如matlab,vhdl,还学过梯形图。


不过大学嘛,大概学学而已,老师也大概教教,我们就跟着大概听听。


本人是渣二本毕业,虽然感觉学了很多东西,考试也都取得了不错的分数,然而毕业后的现实让我深感无力。


几次面试失败后,我才深深地感受到,大学里所学的东西与社会的脱节竟然如此严重!


我在大学里非但没有混日子,反而非常努力。


大学里老师所授,我基本都能理解,甚至可以举一反三,可是,然并卵。社会中需要的技术,大学教不了我。


此时我依稀想起大学一个哥们,大二的时候就钻在实验室,然后选修课必逃,必修课选逃,考前背一下题,混个60分完事。


结果在大四校招的时候,他就被一个不错的单位选中,还未毕业就拿了高薪。


那段我们拿着书去阶梯教室蹭前排的日子,他要么在实验室,要么在宿舍看下载的技术视频。 —— 他早已看穿了一切。


是的,现实就是这样。


也许,一流大学的教育水准是我等无法揣测的,但是我大学四年下来的事实情况就是,我按照正常的学分制度修完了所有课程,也确实都掌握了老师所讲的东西 —— 然并卵,社会上用不到这些。(我特指理工科,文科我不清楚,不评价)


我最多就是会做几道应用题,会按照公式算出一个什么结果,会用单片机做一个数字闹钟,还会画画梯形图。


可是,这些东西并不能给我带来一份工作。不是说教的东西太浅,而是学校教的那些玩意儿都太理论化了。


我举一个例子:


当初中毕业的甲已经熟练地用编程技术,在企业干得风生水起的时候,正在读大学的乙还在那分析计算机的结构,被教着如何理解上个年代计算机的组成原理,还有X86啥的。


1. 甲因为很早就进入社会,知道自己没有学历,所以拼命地学习各种技术,虽然不懂计算机的组成原理,不过也能用编程技术赚钱养家。而且还不少。


2. 大学一直希望把乙培养成一个全才,最好要能自己造一个windows 20出来。然后超越微软,顺便实现中国梦。可是乙比较懒,辛辛苦苦拿到国家承认的本科文凭,和理工科学士学位之后,到 XX 售楼处去卖楼了。


我刚毕业那段时间确实有些失落,心里在想:“我去年买了个表,用不到的东西让我学四年?”


(**说得确实有点过了,但是目前的大学教育与社会严重脱节是事实,我们也真心希望大学的教育制度能尽快改革,从理论切换到实战,提升教师梯队的硬实力和责任感。**)


看着我当年的同学一个个转行,有去卖楼的,也有去卖保险的,大部分人做了销售,我心里实在不好受。


几番周折,我踏入了编程的世界。


2. 我经历的阶段


从各种自学到现在的工作,我大约经历了这些阶段。


**阶段1.**


学了Java的基础语法,还有数据库,不过只会最简单的。一看到控制台报错就不知所措。 **各种百度和问人,就是不敢自己去解决问题。**


**阶段2.**


控制台报错已经看得麻木了,不过没有了之前的紧张,敢于踏出第一步,去看看它到底报什么错。并且,能够解决一部分问题了。听说以后要用框架, 不知道框架是啥。


**阶段3.**


找资料,一步一步跟着搭框架,脑子里特别疑惑,也特别害怕。说穿了,不明白为什么要这样?网上找了很多资料,也有那种手把手的教程,可是我完全按照网上说的搭,就是TMD报错,然后心里火大,觉得网上那些人怎么回事啊,分明运行不了的东西干嘛发出来?


**阶段4.**


偶然发现原来有编程视频这样的东西,网上有好多免费的,于是各种下载。看着视频,跟着一步一步学,虽然很慢,但是我开始有所收获。学了Spring,Structs2,Hibernate。(SSH)


**阶段5.**


慢慢地发现,之前网上查找的资料还是有用的,只是因为当时自己实在太菜,看不懂而已。


**阶段6.**


学了一点js,感觉好奇怪,和Java不太一样。之后找到了第一份工作,这才发现,框架都是有现成的,自己照猫画虎就得了。而且公司现在基本都用SpringMVC,看着controller,service,dao各种不理解。虽然看不懂,可是照着写也差不多了。


**阶段7.**


 因为js基础实在太差,不知道 {} 是什么意思,json又是啥?公司的js框架用easyui,好多地方看不懂。


**阶段8.**


看不懂,就写,一直写。虽然很吃力,不过渐渐习惯了。


**阶段9.**


开始疑惑,自己每天在写的东西到底是啥?工作中发现,js的代码量丝毫不必Java少。


**阶段10.**


下载了很多js的视频来学,慢慢开始理解js的面向对象,json,function到底是什么。


**阶段11.**


每天晚上都学到很晚,不懂的地方就反复敲代码。终于在之后的某一天写出了自己的第一个js组件——弹窗。


**阶段12.**

学习js的时候,发现自己css功底实在太差,网上找的资料又实在没耐心去看。没办法,拼命写,拼命看。


**阶段13.**


js学得越来越深入,也越来越发觉js的有趣,当自己写出来各种特效和案例的时候,心中的喜悦是难以用语言来描述的。这个时候,突然发现之前看不懂的代码开始慢慢明白了。而且发觉,代码与代码之间很多东西都非常相似。


**阶段14.**


 回过头来看Java,我吃惊地发现,js学深入了之后,回过来看之前的Java代码感觉so easy。


**阶段15.**


我开始消除学习的畏惧心理,并且比较java和js的异同点。


**阶段16.**


开始用js写很多很多的demo,结合Java后台开始做一些自己的小项目。


**阶段17.**


发现博客园的存在,里面好多人在深夜还更文,深深被他们的精神所打动,我开始思考,自己在项目中遇到的很多问题就是通过百度解决的,那么我是不是也应该写一点东西来帮助需要的人呢?


**阶段18.**


发现简书,开始写作。


###3. 给初学者的一些建议


最后,给出一点实质性的建议。


学编程如果你遇到了阻碍,就多看,看不懂就写,写一遍不懂就写两遍。


我就是这样做的,而且至今认为这是正确的方式。


听的再多,看再多的文章和视频,那还是别人的技术。我之前就是因为畏惧,害怕报错,害怕弄不出来,于是不敢去尝试。


我曾经在这个阶段停留了很久,直到有一天我悟出来这样一句话:


我缺的哪里是方法,而是行动!


不去写,会的还是会,不会的还是不会。


当你的练习量达到一定程度后,你会有一种感觉的。


这种感觉是什么,其实就是自信,一个新技术,可能你以前也不会,但现在的你,最起码敢于去尝试了。


踏出这第一步,已经成功了一大半。


然后,你自然会对某些东西产生自己的**理解载体** 和 **概念群**。


这是一种无法用语言说出来的感受,但你又清清楚楚地明白自己已经懂了。



然后你会产生一些问题,很好,带着这些问题去百度,去找相关的视频来看。


这个时候之前网上那些看不懂的资料会变得栩栩如生起来,当你发现这些资料印证了你的观点时,你就会非常喜悦。


即便与你所想有偏差,你又会觉得,网上说的不一定是对的,然后去反驳。


如果你最终真的发现是自己考虑错了,那更好了,这使得你对这个知识点记忆犹新,牢牢地掌握了。因为你知道,你和网上的大咖已经有了一番过招。


**不要轻易地相信网上的各种博客,先自己去验证看看。**


通过不断地尝试,不断地练习,就好像经脉被打通一样,总有一天,你会有这种感觉的,自信的感觉。