最近经常在知乎收到类似『没基础,java 如何自学』、『怎么才能掌握编程』等等问题,再加上发现高中同学也在自学。有感而发,讲讲我的自学之路。

1.1. 大学

高考没正常发挥,考入一所二流的学校,当时分数也只高出录取分数线一两分,只能选择机械专业,当时分数如果高个两三分,或许可以上计算机专业,或许现在基础知识水平可能不一样,可是谁说的准那?

说回正题,大学前两年,跟大多数同学一样,基本在混,该打游戏打游戏,该逃课的逃课。但是期末的时候会去临时努力一把,最后也能取个好成绩。这里说一点,后来才发现有些同学原来期末的时候也不去准备一把,没办法这样也就只能挂科了。所以这里想说个观点,其实你只要稍微努力一点,其实就已经超过了很多人。

说说我们专业,跟计算机有关联可能就是『机』了吧。所幸,大一的时候还有一门 C 语言必修课。那时候其实对于编程存在懵懂的兴趣,曾想过学完 C 语言,然后成为一个黑客。可是学的时候才发现,才发现这门课是如此枯燥,而且你根本不知道学完你能干什么。书本只有练习题,老师也只是照本宣科。于是那时候也失去对这门课的兴趣。

1.2. 大三

大三那年对于我人生是有意义的一年。

那个学期,穷的没办法,出去兼职,赚到人生第一笔工资。并且用这部分钱,报考驾校。也是这笔钱,让我意识到原来赚钱是如此不容易。

大三那年,因为面临毕业的压力,不得不去思考将来从事什么。静下心来思考分析未来到底应该干什么。我想过从事本专业的工作,但是本专业无非就去工厂工作或者在研究院从事制图工作,我根本没兴趣。真的,我那时候真的十分厌恶 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 等。那时候基本上每天白天仔细看课程视频,然后晚上一行行去输入练习,尽量保证当天把课程都练习一遍,不拖到明天。但是有时候就是学完这个,又忘了上面或者说就是想不到这种解决办法。这时候我就会再看下之前课程,看下到底哪个点卡住,然后思考下为什么没想到。

1.3. 实习

大概在 11 月的时候,基本把课程学完了。学校里又没有什么课程了,呆着学校又没什么事,也就想着出看看能不能知道实习。

那时候由于刚自学完,对于自己的技能根本没有信心,也不知道企业开发到底需要掌握什么技能。这就导致了那时候我心想只要找到实习工作就好,能开给我一些工资,然后能让进入学习就好了。

兜兜转转,不断在 58 赶集上找工作,找了一圈最终找到了一家公司招聘 Java 开发。面试官问了几个简单 Java 的基础问题后,然后就发 offer 了。

进入公司之后,我才发现这个跟自己想象的完全不一样。全公司后台开发就我一个人,而面试我的面试官,不在这个公司,在另一个市的另一家公司,在这公司挂牌一个开发经理职位。

那时候也不知道需求,就扔给我一套表结构设计以及一套他们以前开发好的后台代码,就让我模仿这个改改就好了。还记得那套框架由 easyui,struts2,mybatis,mysql 构成。每天的工作就是照着这块改,不会的就找搜索引擎。旁边的同事,基本上都是其他岗位,没有一个可以请教问题的。那时候也没有什么需求文档,基本都是某某经理拍拍脑袋想出来。在那个公司呆了两三个月,基本上没有什么收获,就像公司辞了职。

那个时候已经到了三月份,还有三个月就毕业了。那时候也很慌张,自己学校招聘会也去逛了下,但是根本没有看到 Java 相关的工作。偶然间在网上看到恒生,网易的春招的机会,抱着试试的想法,就选择报名。报名之后,了解到其笔试内容,发现很多内容自己很多根本没学过,比如操作系统,linux 知识。可是没办法啊,只能疯狂在牛客网刷题,疯狂补充这些知识。最后,两家公司笔试还是都挂了。。。。

等网易笔试完,已经到了四月。本地工作岗位,也已经基本找了遍,不是不要实习生,就是基本工资太低,低到什么程度那,有家公司实习每月就给 800 工资。

后来曾有个大公司来学校宣讲,听到最后意外得知他们还招聘 Java 开发,马上报名参加。接下来的笔试与面试都是跑到那个公司所在城市,最后拿到了这家公司的 offer。不过最后没有选择去,一是因为其毕业之后开的工资真的太低,才 3500,二是因为他们公司所在地方实在太偏僻了。

本地没办法找到工作之后,不得不去杭州找找机会。在拉勾了搜了一圈工作机会,终于找到几家公司还在招收实习生,广投简历,收到几家公司的面试机会。那一天去面试的时候,正好也是网易春招面试,看到一个个坐着网易大巴去面试,真的十分羡慕。那一天,面了两家公司,最后一家公司发了实习 offer。说说那时候实习工资吧,一天 160,那时候真觉得好高,真觉得应该早点来杭州。

进入公司之后,分配了个师兄带我。这个师兄虽然话很少,但是在他身上学习到了很多,第一次感觉到那种技术开发的范围。在公司实习大概一个多月,基本上用到也是之前学习到东西,可以说复习巩固以前学的知识。5 月份就回学校报到,然后毕业答辩,顺利就毕业。后来在这家公司也顺利入职,真正进入开发这一行。

1.4. 总结与想法

看到这里想必你们也看完我的自学之路,下面也谈谈我这一路的想法。

  1. 看到很多朋友问,我现在学编程来的及吗?我想说的是,你什么时候学编程都来的及,但是你自己需要评估你自己到底能不能静下心来花下时间来学习
  2. 学习编程需要什么基础?学习编程最好是理工科,但是你如果不是,也没关系,只要你能坚持下来,也能学好。我认识好几位同事,也是文科专业转行过来,有一些大牛,甚至高中没毕业。但是你如果对这个没兴趣,最好尽早放弃。兴趣是很好的导师。
  3. 学习编程,需不需要去去培训班?如果你自己没有自制力,或者想快点出师,可以选择培训班。因为在培训班,你会感受到这种学习的范围,培训班最后也会叫你一些面试技巧什么的。但是建议你报班之前,之前尝试先把 Java 基础学完。如果 Java 基础都学不下去,那你最后报班学习效果也不好。但是不要片面看了培训班的广告,或者被一些销售以毕业后高薪洗脑后,就糊里糊涂就报班了。自己千万要考虑好没,再去选择报班
  4. 现在我应该学习 Java 后台,安卓,Python ?其实到底该学习那个真的不好给建议。但是我可以教你们一个方法,从事情的价值出发,列一分优缺清单。把安卓,Java后台开发,Python 这几个优缺点列一个表格,然后 -10 到 10 打一个分数,最后把每一列相加,得出一个最终分,选择那个分数最高的。
  5. 学完结束之后,找工作一定要去一线城市,北上广深杭。为什么这些城市那?因为这些大城市,机会多,薪资也较高。虽然相对而言,生活压力也大一点。但是相信我,在一线城市你生活工作几年,你的视野格局会提高很多。但是如果你前几天在一些二线城市,然后由于薪资水平,再想去一线城市,这样就难很多。
  6. 对那些还在校正在自学同学们讲讲,你们在校如果时间很好多,一定不要只学 Java 相关知识,算法数据结构等也不能丢,这个真的很重要。
  7. 如果你现在已经自学好,正在要找工作。请充满信心,不要妄自菲薄。一次两次失败并不代表什么,总结前几次的失败,这也能更好认识自己。

天下每天白吃的午餐,同理也没有速成的大法。希望在学的各位同学,静下心来,好好练习代码~

聊聊我的 Java 自学之路的更多相关文章

  1. 【转】JAVA自学之路

    JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向 ...

  2. 【转】Java自学之路——by马士兵

    作者:马士兵老师 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟 ...

  3. Java自学之路(新手一定要看)

    Java自学之路(新手一定要看) 转自尚学堂 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游 ...

  4. [感悟]马士兵Java自学之路——(精华版)

    JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向 ...

  5. 我的Java自学之路

    其实在转正之后我就想抽个时间好好的梳理一下我的 Java 上车之路 ,但是一直拖到现在 ,因为有学弟问到 ,所以也就给了我动力 .毕竟答应了人家的事要做到 . 首先要有相应的背景介绍 ,不然说个毛线啊 ...

  6. java自学之路-开篇

    开篇 想写一些java自学文章的心思起好久了,也在心里规划了一段时间,今天终于开始正式付于纸上.接下来要写的内容从java基础开始,一步步到正式工作用到的技术,整个体系适合java初学者自学.内容可能 ...

  7. Java自学之路(小白向)

    首先学习一门语言无非就受教与自学两种方式,本博文针对自学(穷逼没钱报班,大学又不是计算机专业,只能自学啊) 开个玩笑,其实有很多人是适合自学的,下面介绍. 一.要充满自信我自己就可以学好(够面试用的入 ...

  8. Java自学之路---DotCom

    引言 我从接触编程以来,一直是一个C/C++程序猿,因为我喜欢编程时,那种接地气的感觉,认为只有自己管理内存的使用,心理才踏实.但随着工作中不断增加的见闻,不断的从博客和源码中获得新的见解,我发现这个 ...

  9. Java自学成长路线(转载)

    JAVA自学之路 一:学会选择  决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等.  JAVA是一种平台,也是一种程序设计语言,如何学好程序设计不仅 ...

随机推荐

  1. react-native 组件整理

    好早之前整理的部分组件,不全 怕丢

  2. ndk编译ffmpeg

    #!/bin/bash NDK=/opt/android-ndk-r9d SYSROOT=$NDK/platforms/android-9/arch-arm/ TOOLCHAIN=$NDK/toolc ...

  3. hadoop基础操作

    通过hadoop上的hive完成WordCount 启动hadoop Hdfs上创建文件夹 上传文件至hdfs 启动Hive 创建原始文档表 导入文件内容到表docs并查看 用HQL进行词频统计,结果 ...

  4. Java互联网架构-直播互动平台高并发分布式架构应用设计

    概述 网页HTML 静态化: 其实大家都知道网页静态化,效率最高,消耗最小的就是纯静态化的 html 页面,所以我们尽可能使我们的网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的方法, ...

  5. Trie树(字典树)的介绍及Java实现

    简介 Trie树,又称为前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串.与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定.一个节点的所有子孙都有相同的前缀,也 ...

  6. FFmpeg开发实战(三):FFmpeg 打印音视频Meta信息

    在之前使用FFmpeg命令行的时候,我们经常看到FFmpeg命令行在输出音视频文件的会打印一下文件的Meta信息,类似如图: 那么我们如何通过代码的方式输出这些Meta信息呢? FFmpeg提供了一个 ...

  7. [Swift]LeetCode952. 按公因数计算最大组件大小 | Largest Component Size by Common Factor

    Given a non-empty array of unique positive integers A, consider the following graph: There are A.len ...

  8. 在admui中怎样上传本地文件?

    1.首先需要引入一些插件 css: <link rel="stylesheet" href="/vendor/blueimp-file-upload/jquery. ...

  9. spark System memory must be at least

    运行 ScalaSpark 程序的时候出现错误: System memory * must be at least *.Please increase heap size using the --dr ...

  10. qt cef嵌入web(二)

    在qt cef嵌入web文章中已经讲述了怎么把cef页面嵌入到qt程序中,但是这样并不完美,因为如果需要在多个窗口上创建cef浏览器部件的话,在 消息监听部分没有办法做区分多个浏览器事件,在这篇文章中 ...