最近经常在知乎收到类似『没基础,java 如何自学』、『怎么才能掌握编程』等等问题,再加上发现高中同学也在自学。有感而发,讲讲我的自学之路。
大一、大二
高考没正常发挥,考入一所二流的学校,当时分数也只高出录取分数线一两分,只能选择机械专业,当时分数如果高个两三分,或许可以上计算机专业,或许现在基础知识水平可能不一样,可是谁说的准那?
说回正题,大学前两年,跟大多数同学一样,基本在混,该打游戏打游戏,该逃课的逃课。但是期末的时候会去临时努力一把,最后也能取个好成绩。这里说一点,后来才发现有些同学原来期末的时候也不去准备一把,没办法这样也就只能挂科了。所以这里想说个观点,其实你只要稍微努力一点,其实就已经超过了很多人。
说说我们专业,跟计算机有关联可能就是『机』了吧。所幸,大一的时候还有一门 C 语言必修课。那时候其实对于编程存在懵懂的兴趣,曾想过学完 C 语言,然后成为一个***。可是学的时候才发现,才发现这门课是如此枯燥,而且你根本不知道学完你能干什么。书本只有练习题,老师也只是照本宣科。于是那时候也失去对这门课的兴趣。
大三
大三那年对于我人生是有意义的一年。
那个学期,穷的没办法,出去兼职,赚到人生第一笔工资。并且用这部分钱,报考驾校。也是这笔钱,让我意识到原来赚钱是如此不容易。
大三那年,因为面临毕业的压力,不得不去思考将来从事什么。静下心来思考分析未来到底应该干什么。我想过从事本专业的工作,但是本专业无非就去工厂工作或者在研究院从事制图工作,我根本没兴趣。真的,我那时候真的十分厌恶 CAD 制图。
这里真的感谢我女朋友,是她给我提了个思路,让我去尝试学习下 Java。哈哈,感谢某度,搜索 Java 的时候弹出满屏广告,一点进去就看了 XXX 在某培训班毕业,成功进入大公司,拿到很高工资。的确,这个真的很有吸引力。于是踏上自学之路。还记得是大三寒假的时候,在家敲下第一行代码。
public static void main(String[] args) { System.out.println("Hello world"); }
说说那时候怎么自学的。我在某自学网站上找到 Java 基础的视频课程,真的很老的课程,录制于 2012 年。给你们看看当时的课程目录。
接下去每天的生活基本上就很枯燥,除了上课,就是学习,偶尔还出去兼职一下。那时候基本就在学校图书馆学习,没事就往我们学校四楼去借 Java 相关的书籍。那时候也不知道那些 Java 书籍比较经典,所以就根据标题挑书,于是就挑了『Java 入门到精通』,『21天带你学会 Java』这类书。当时看到这类书就觉得标题十分吸引人,那时候就觉得看完这些书就能速成 Java。但是现在回想,这些书真的十分坑爹,基本上就是网上资源抄抄改改,误人子弟。各位读者如果想买书的话,千万别买这类书籍。
时间来到大三那个暑假,基本上学完了 Java 基础,最后还跟着视频教程完成一个贪吃蛇的小游戏,那时候真的感觉很有成就感。
学完 Java 基础,接下去就面临着学那个方向的问题。那时候其实也没多考虑,就直接选择 Web 后台开发这个方向。在淘宝上买了一套某培训班的培训课程后,就跟着其进度学习。这个阶段,已经感觉到不像 Java 基础那时候简单了。学的东西不仅难,而且多,基本上各个方面都需要学会。还记得这个课程,刚开始先教 Html、CSS、JavaScript,后来就开始教 SQL 语法,最后开始 Java 的 Servlet 等。那时候基本上每天白天仔细看课程视频,然后晚上一行行去输入练习,尽量保证当天把课程都练习一遍,不拖到明天。但是有时候就是学完这个,又忘了上面或者说就是想不到这种解决办法。这时候我就会再看下之前课程,看下到底哪个点卡住,然后思考下为什么没想到。
实习
大概在 11 月的时候,基本把课程学完了。学校里又没有什么课程了,呆着学校又没什么事,也就想着出看看能不能知道实习。
那时候由于刚自学完,对于自己的技能根本没有信心,也不知道企业开发到底需要掌握什么技能。这就导致了那时候我心想只要找到实习工作就好,能开给我一些工资,然后能让进入学习就好了。
兜兜转转,不断在 58 赶集上找工作,找了一圈最终找到了一家公司招聘 Java 开发。面试官问了几个简单 Java 的基础问题后,然后就发 offer 了。
进入公司之后,我才发现这个跟自己想象的完全不一样。全公司后台开发就我一个人,而面试我的面试官,不在这个公司,在另一个市的另一家公司,在这公司挂牌一个开发经理职位。
那时候也不知道需求,就扔给我一套表结构设计以及一套他们以前开发好的后台代码,就让我模仿这个改改就好了。还记得那套框架由 easyui,struts2,mybatis,mysql 构成。每天的工作就是照着这块改,不会的就找搜索引擎。旁边的同事,基本上都是其他岗位,没有一个可以请教问题的。那时候也没有什么需求文档,基本都是某某经理拍拍脑袋想出来。在那个公司呆了两三个月,基本上没有什么收获,就向公司辞了职。
那个时候已经到了三月份,还有三个月就毕业了。那时候也很慌张,自己学校招聘会也去逛了下,但是根本没有看到 Java 相关的工作。偶然间在网上看到恒生,网易的春招的机会,抱着试试的想法,就选择报名。报名之后,了解到其笔试内容,发现很多内容自己很多根本没学过,比如操作系统,linux 知识。可是没办法啊,只能疯狂在牛客网刷题,疯狂补充这些知识。最后,两家公司笔试还是都挂了。。。。
等网易笔试完,已经到了四月。本地工作岗位,也已经基本找了遍,不是不要实习生,就是基本工资太低,低到什么程度那,有家公司实习每月就给 800 工资。
后来曾有个大公司来学校宣讲,听到最后意外得知他们还招聘 Java 开发,马上报名参加。接下来的笔试与面试都是跑到那个公司所在城市,最后拿到了这家公司的 offer。不过最后没有选择去,一是因为其毕业之后开的工资真的太低,才 3500,二是因为他们公司所在地方实在太偏僻了。
本地没办法找到工作之后,不得不去杭州找找机会。在拉勾了搜了一圈工作机会,终于找到几家公司还在招收实习生,广投简历,收到几家公司的面试机会。那一天去面试的时候,正好也是网易春招面试,看到一个个坐着网易大巴去面试,真的十分羡慕。那一天,面了两家公司,最后一家公司发了实习 offer。说说那时候实习工资吧,一天 160,那时候真觉得好高,真觉得应该早点来杭州。
进入公司之后,分配了个师兄带我。这个师兄虽然话很少,但是在他身上学习到了很多,第一次感觉到那种技术开发的氛围。在公司实习大概一个多月,基本上用到也是之前学习到东西,可以说复习巩固以前学的知识。5 月份就回学校报到,然后毕业答辩,顺利就毕业。后来在这家公司也顺利入职,真正进入开发这一行。
总结与想法
看到这里想必你们也看完我的自学之路,下面也谈谈我这一路的想法。
- 看到很多朋友问,我现在学编程来的及吗?我想说的是,你什么时候学编程都来的及,但是你自己需要评估你自己到底能不能静下心来花下时间来学习。
- 学习编程需要什么基础?学习编程最好是理工科,但是你如果不是,也没关系,只要你能坚持下来,也能学好。我认识好几位同事,也是文科专业转行过来,有一些大牛,甚至高中没毕业。但是你如果对这个没兴趣,最好尽早放弃。兴趣是很好的导师。
- 学习编程,需不需要去去培训班?如果你自己没有自制力,或者想快点出师,可以选择培训班。因为在培训班,你会感受到这种学习的范围,培训班最后也会叫你一些面试技巧什么的。但是建议你报班之前,之前尝试先把 Java 基础学完。如果 Java 基础都学不下去,那你最后报班学习效果也不好。但是不要片面看了培训班的广告,或者被一些销售以毕业后高薪洗脑后,就糊里糊涂就报班了。自己千万要考虑好 ,再去选择报班。
- 现在我应该学习 Java 后台,安卓,Python ?其实到底该学习那个真的不好给建议。但是我可以教你们一个方法,从事情的价值出发,列一分优缺清单。把安卓,Java后台开发,Python 这几个优缺点列一个表格,然后 -10 到 10 打一个分数,最后把每一列相加,得出一个最终分,选择那个分数最高的。
- 学完结束之后,找工作一定要去一线城市,北上广深杭。为什么这些城市那?因为这些大城市,机会多,薪资也较高。虽然相对而言,生活压力也大一点。但是相信我,在一线城市你生活工作几年,你的视野格局会提高很多。但是如果你前几天在一些二线城市,然后由于薪资水平,再想去一线城市,这样就难很多。
- 对那些还在校正在自学同学们讲讲,你们在校如果时间很好多,一定不要只学 Java 相关知识,算法数据结构等也不能丢,这个真的很重要。
- 如果你现在已经自学好,正在要找工作。请充满信心,不要妄自菲薄。一次两次失败并不代表什么,总结前几次的失败,这也能更好认识自己。
天下没有白吃的午餐,同理也没有速成的大法。希望在学的各位同学,静下心来,好好练习代码~