我的读者里面有绝大部分都是在校学生,有本科的,也有专科的,我在微信里收到很多读者的提问,大部分问题都跟如何学习编程有关,有换专业自学的、有迷茫不知道如何学习的、有报培训班没啥效果的等等,我能感受到他们的诚意和焦虑,所以我觉得我很有必要写下这篇文章。

1. 本科的脚踏实地

高考之后填志愿,那时候其实我也不懂,就觉得电子信息工程好像还不错,于是就填了。在大学四年,除了学校学了C语言之外,我没有学习任何第二门编程语言,而且C语言也只是初级的水平。我在大学都干了啥?

我在大一,就决定读研,所以我一直在努力学习,高等数学、线性代数、概率论、大学物理、还有一些数电、模电、信号与系统、通信原理等等专业课。老实说,我非常认真,一部分是因为自己的学习习惯,另一部分也是因为自己要读研,所以我每一步都走的很踏实。在我的同龄人里,执行力和毅力能跟我比的,没几个,这点我不吹牛逼。

大学没少拿奖学金,最起码可以抵消我四年的学费,单片机也玩了不少,51、52到后面的ARM9都玩过,当时还买了好几块板子,写程序跑,那时候对嵌入式还蛮感兴趣的。

但是毕业后,我有点后悔。为什么呢?我没怎么学编程啊!除了会写一些简单的C代码,其他编程技能为零。

2. 研究生的觉悟

考入同济之后,我的专业是电子与通信工程。从研一开始,我很明确我自己想要什么,研究生也是要上课的,基础课、专业课等等。研究生也有课题,需要看各种论文,需要写论文,其实还是蛮忙的。

我研究生对自己的唯一要求就是提升自己的编程技能。一开始我在看C++,语法看完了之后,看了一点基于C++的数据结构和算法。我真正开始决定学Java是在研一下学期,当时在eBay跟一些大佬们聊了蛮多,倒不是学到了什么牛逼的技术,而是开拓了自己的视野,开始有了自己的一些想法。

后来我在实验室里闷头苦学了一年左右,从Java语法基础开始,到集合框架源码(那时候还是基于JDK1.7的)、到网络编程(基础)、到数据结构和算法,学完了这些基础知识后,开始学习Servlet/jsp(现在已经不直接用了)、再到Spring、Struts2、Hibernate(SSH框架,现在企业里用的也不多了)、再到Spring、SpringMVC、Mybatis(SSM框架,这个现在还在用)、再到Java并发基础、再到一些中间件等等,再到后面我开始学习微服务相关的东东,学习Spring Boot,Spring Cloud等等。这期间,我做了4个项目实战。我是如何自学的?

3. 我是如何自学Java的?

如果要说自学Java,我觉得我有资格说上几句。我一开始看了一个星期左右的书,然后我把书扔在了一边,看不进去啊!我自认为自己的脑袋瓜还算可以,但是我看不进去。这也是初学者的通病,有好多读者也跟我说:武哥,我书也看了,可是感觉还是不会。我TM也是这么过来的,哈哈。

所以我当时看了视频,我看的是毕向东的Java视频,现在已经有更加新的视频了。找一个好视频,从头到尾认认真真跟着学一遍,做好笔记,那也是我开始写博客的开始。

人都有个尿性,如果你做一件事情,一直看不到明显的效果,你就会慢慢懈怠,慢慢怀疑自己到底对不对,适不适合。编程也一样,为什么我不建议初学者上来就抱着别人跟你推荐的所谓的经典书籍去啃?什么《Thinking in Java》、《Effective Java》等等,你啃的了吗?你啃不了是对的,否则你就是神了。你啃不了,你就会放弃。我就很讨厌那些贴吧论坛里一上来就给一些初学者推荐很多经典书籍的人,显得自己很博学很牛逼的样子,其实没啥卵用。

包括Java并发、SSH、SSM框架、组件等等,我全部看的视频。当然,一些源码我是自己啃的。当你有了基础,上路了,你再去看书,不仅仅就是看懂看不懂的问题了,那是真正的提升。

但是这些还不够,你学了这些东西不能派上用场。必须要项目实战,网上有很多免费的实战视频,但是我觉得不好,因为那时候我已经有基础了,我知道如何去选择我的学习资源了,我在这还是要强调一点,不要吝啬给自己投资,我当时也买了好几个项目实战视频跟着学习,提升很多实战经验。

当然了,我这边也有很多优质的视频资源,也许已经大家够用了,不用像我当初那样去花钱了,我那时候自学,就没有遇到像我这样懂得分享的人。所以缺视频资源的读者,可以找我要,我就是单纯的分享,为了帮助更多的朋友。

但是有很多人坚持不下来。我在文章的开头也说了,在同龄人里,执行力和毅力能和我比的没几个,我也是从小白一步步过来的,花了整整一年左右的时间去自学。我做了好几个项目,我敢说我在学校这一年学到的东西,不比别人在外面工作两年的能力差。所以有很多人觉得工作年限长就牛逼,见识多,但是在我看来,这不一定。

我曾经好几个月直接睡实验室里,每天除了看论文,完成导师的任务,其他时间全部用来学习,晚上搞到十一二点,否则一年时间不可能学那么多东西,而且我大部分还写成了博客,要知道,写博客是很花时间的。如果你能像我这样坚持,这样严格要求自己,我不相信学不会一个东西。你就算今天学不会,你一个月之后呢?一个月不行,你一年总行了吧?就像马云爸爸说的:今天很残酷,明天更残酷,后天很美好。但是很多人都坚持不过明天,他永远看不到美好。就像我考研一样,没有坚持付出,哪来的结果?

4. 遇到选择,我如何取舍?

我当初研究生刚毕业,是去了华为,我的岗位就是Java软件开发,结果进去之后做通信了。我就纳闷,我研究生读的是通信,我特地自己自学Java,结果又回到做通信,这就很尴尬了。

所以后来我还是走了,有些读者问我,你为何放弃华为的高薪?我说自己的兴趣不在通信,我有自己的打算,决定从华为离开的,肯定不是为了钱。最起码,我现在过的比在华为好,我相信以后也会。

职场遇到选择的时候,我个人觉得还是要结合自己的兴趣,人生最重要的几年可能就是刚毕业那几年,那几年也在绝大程度上决定我们以后从事的行业,所以在做选择的时候,需要结合自己的兴趣,综合各方面因素权衡好。

5. 总结一下

自学一门技术,首先要会用,要先建立兴趣,再想着去提升,去内化,否则,你坚持不下去。

自学一门技术,要有规划,最起码要知道你接下来要学哪些东西,不能走一步看一步。有了规划就得有计划,有了计划,就得有执行。

学习的过程中,永远不要吝啬投资自己,该花钱就花钱,现在是知识付费时代,像CSDN GitChat达人课、极客时间等,里面一些课程还是挺不错的,还有些培训机构的视频也不错。花钱提升自己,本来就没毛病。

做任何事,离开了坚持二字,那都是扯淡。如果随随便便就能成功的,就能做好的事情,是个人都可以的话,那你也没有什么竞争力。有句话说的好:小聪明不如傻坚持。

不懂就要多问,不管我们是什么样的人,不管问谁,不管别人比自己牛逼或者弱,都得放低自己的姿态,虚心一点。如果哪天我们有点影响力了,那么尽量以一个低姿态去多帮助那些初学者,帮助更多的人,因为我们也是那样过来的,比自己牛逼的人,满大街都是。人,不要膨胀,要懂得韬光养晦。

希望这篇文章能够给那些初学者,或者有自学困惑的人带来一点帮助,也希望我的读者能从我这里获得一些正能量。

我是如何从通信转到Java软件开发工程师的?的更多相关文章

  1. 成为JAVA软件开发工程师要学哪些东西

    2010-04-22 15:34 提问者采纳 Java EE(旧称j2ee)   第一阶段:Java基础,包括java语法,面向对象特征,常见API,集合框架: *第二阶段:java界面编程,包括AW ...

  2. java 软件开发面试宝典

    一. Java 基础部分........................................................................................ ...

  3. 上海洋码头(www.ymatou.com)急招技术人才(职位:互联网软件开发工程师,.NET网站架构师,Web前端开发工程师,高级测试工程师,产品经理)

    对公司招聘职位有兴趣的童鞋可以把简历发送到zhangzhiqiang@ymatou.com,我们HR会快速给你答复. 互联网软件开发工程师 岗位职责: 1.参与洋码头各个平台(www.ymatou.c ...

  4. Java高级开发工程师面试笔记

    最近在复习面试相关的知识点,然后做笔记,后期(大概在2018.02.01)会分享给大家,尽自己最大的努力做到最好,还希望到时候大家能给予建议和补充 ----------------2018.03.05 ...

  5. Java后端开发工程师是否该转大数据开发?

    撰写我对java后端开发工程师选择方向的想法,写给在java后端选择转方向的人 背景 看到一些java开发工程师,对java后端薪酬太悲观了.认为换去大数据领域就会高工资.觉得java后端没有前途.我 ...

  6. springboot java web开发工程师效率

    基础好工具 idea iterm2 和 oh-my-zsh git 热加载 java web项目每次重启时间成本太大. 编程有一个过程很重要, 就是试验, 在一次次试验中探索, 积累素材优化调整程序模 ...

  7. TCL校园招聘——软件开发工程师(java) 只招5个。。。

    简介 TCL集团股份有限公司创立于1981年,是全球性规模经营的消费类电子企业集团之一,广州2010年亚运会合作伙伴,总部位于广东省惠州市仲恺高新区TCL科技大厦.旗下拥有TCL集团.TCL多媒体科技 ...

  8. Java软件开发中迭代的含义

    软件开发中,各个开发阶段不是顺序执行的,而各个阶段都进行迭代并行执行的,然后在进入下一个阶段的开发. 这样对于开发中的需求变化,及人员变动都能得到更好的适应. 软件开发过程汇总迭代模型如下图所示:

  9. Java中级开发工程师知识点归纳

    (一)Java 1.接口和抽象类的区别 ①抽象类里可以有构造方法,而接口内不能有构造方法. ②抽象类中可以有普通成员变量,而接口中不能有普通成员变量. ③抽象类中可以包含非抽象的普通方法,而接口中所有 ...

随机推荐

  1. Java中文件上传路径与路径修改相关问题(tomcat8.0+eclipse)

    1.普通文件上传的路径: 通过getRealPath获取相关路径 String photoFolder =request.getServletContext().getRealPath("u ...

  2. proteus pro 8.9 安装及汉化教程

    最近由于网上上课老师要求我们自己安装proteus这款仿真软件,所以笔者也安装了最新款版的proteus pro 8.9,分享给大家安装心得,也包含汉化过程,希望大家能用软件好好学习. 备注:感谢博主 ...

  3. angular的开始历程

    开始写angular了,抑制不住的开心,比react差点开心,vue开始太虐 喜欢一个人要不要表个白?其实也没啥资格喜欢~!!考虑一段时间吧 9.29表白了,嗯,被拒绝的干脆利落 为他写了一首小诗歌, ...

  4. 基于FPGA的三段式状态机

    状态机分类: 通常, 状态机的状态数量有限, 称为有限状态机(FSM) .由于状态机所有触发器的时钟由同一脉冲边沿触发, 故也称之为同步状态机. 根据状态机的输出信号是否与电路的输入有关分为 Meal ...

  5. Redis系列一 - 入门篇

    问:项目中为何要选用Redis? 答:传统的关系型数据库(如MySQL)已经不适用所有的场景了,比如美云销抢单活动的库存扣减,APP首页的访问流量高峰等等,都容易把数据库打崩,所以引入了缓存中间件,目 ...

  6. 机器学习实战:意大利Covid-19病毒感染数学模型及预测

    作者:Gianluca Malato deephub翻译组:刘欣然 当今世界正在与一个新的敌人作斗争,那就是Covid-19病毒. 该病毒自首次在中国出现以来,在世界范围内迅速传播.不幸的是,意大利的 ...

  7. TCP数据报结构以及三次握手(图解)

    简要介绍 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的.可靠的.基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接.客户端在收发 ...

  8. go源码分析(三) 使用go http包开发web时遇到的坑之卸载插件,重启插件管理,仍然可以访问已经卸载的插件

    问题描述: web页面下发重启指令后,对卸载插件的处理不完整(虽然列表已经没有插件描述,但是在HandleFunc的路由列表中依然存在) 我们需要清空路由列表map 路由列表结构见代码: net/ht ...

  9. 左侧带三角的Card css支持hover阴影

    <div class="inputReportIndex"> <div class="inner"> <div class=&qu ...

  10. C#基础--迭代器初识

    foreach语句是枚举器(enumerator)的消费者,而迭代器(iterator)是枚举器的产生者. 迭代器模式能提供一种顺序访问一个集合内部的元素,而又不会暴露其内部的方法.当然其缺点就是用f ...