毕业 3 年,Java 程序员年薪拿到 20 万,是怎么做到的?

我 15 年专科毕业,到今已有 3 个年头。期间入职过两家公司。

很多次学习技术,都是走到临门一脚,然后就没有往下了。我和大牛之间的差距就是,别人看完了源码,而我只是会用。

这是我 20170412 做的一次笔记, 最后记住就是有多少种设计模式

系统的了解一下, 是这样的。

然后这样的

有幸阅读了《刻意练习》这本书,收获的 3 大技巧

第一步:走出舒适区

第二步:寻找导师

第三步:刻意练习

Java 程序员学习要求:

分布式、Spring MVC、Spring Boot、Spring Cloud、ZooKeeper、Kafaka、Redis、MQ。

基本就是两招:

1. 用到哪块学通哪块,要学精还是有难度的,第一二次上够用就行,任何知识都架不住多用啊,第三次之后逐一吃透即可。(不要急,也不要求多,这就是我的心态)

2. 多买一些基础书籍,我一般喜欢多看数目录,选择其中看不懂的反复读。

现在最主要的是吸收 JAVA 的思想和深度理解 JAVA 企业开发的优势和弊端。

临渊羡鱼,不如退而结网

第一家是为 "用友" 集团做 ERP 外包的软件公司。那时候,对于大部分专科生来说,毕业不失业,那就算走上正轨了。

这样从事 ERP 开发的公司,已经有了一套自己成熟的大型软件框架系统。自己在校了解学习的 spring,hibernate 等框架并没有得到实践的机会。反而因为数据库 SQL 的通用性,被安排了一份根据报表需求,专门写 SQL 的工作,就这样入职培训 1 个月后,顺利上岗。

那会儿自己只会 "select * from emp",能用到分组查询 "group by" ,就感觉很深入了。可是,甲方的需求不可能这么简单,各种复杂查询 "啪啪啪" 得打脸。没有人带,没有人问,面对项目负责人每天的怒骂,只能自己上网搜资料。磕磕绊绊,解决了连表查询,多字段排序,去重,合并等,感觉自己能力增长了不少,有点小膨胀,开始想 "我要打十个!!"。甲方没有辜负我的内心想法,顺利完成前几个任务后,工作量开始陡然变大。之后的 2 个月,每天联系甲方的经理,了解业务;询问老同事,查询数据字典,了解字段含义,就这样,完成了人生工作里第一个项目。

回想这段工作经历,我觉得我最大的收获就是:学会了自己尝试解决问题的能力,而不是面对问题,变得不知所措。虽然效率不理想,但迈出了第一步。如果再深入总结一下,不足之处还有很多。比如:当自己的技能不能胜任工作需求,除了第一时间,学习关键技能 (可以向人请教,上网查找),完成工作需求。还应该在课后系统的回顾一下知识点。比如买本书,把基础示例上机敲一遍,我相信,对已经会的内容,你会有新的认识。而不会的,将加入你的技能树中。

之后团队(10 来个人)领导内部斗争,拉帮结伙,每天上班并没有很多的工作。我对比一起出来的小伙伴的情况,认为自己的能力和薪资都不会有提高,在入职 6 个月时,提出了离职。

第二家公司是一家创业小公司(12 个人左右),但是公司偏硬件(嵌入式开发:电路板设计,生产,配套驱动等全做),为之服务的软件也是以.NET 为主。他们招我进去的职位是 java 开发工程师,算是填补了 web 开发方面的空白,在这家公司一直任职到现在。

入职后,先是接手了一个小型 Java SE 就能做的 server 项目,同时使用的数据库也从上一家的 Oracle 变成了 MySQL。该项目技术点有基本 io, 线程,jdbc,JNA(连接硬件 c++ 库),WebService(与 C# 端做 RPC 通信)。这个项目同样,没有人交流询问,因为他们也不懂。查询资料期间了解到了 CSDN,博客园,开源中国等知名网站。经过一个半月,第一个小版本联调成功,当时成就感满满,跑了大半年几乎没问题。

接下来一直做的都是 WEB 开发的项目,从简单的前端页面到后台应用服务,都由自己完成。因为业务原因,都是类似的 "XXX 管理系统"。几个项目上线后根据客户需求,一直在维护。接连几个项目上线,并没有发生什么问题,让我在公司也得到了一份肯定。而我那段时间也安于现状,每天过着 "三点一线" 式的生活。今年年初,我渐渐意识到了问题。

由于公司业务和当下流行的互联网技术(高并发处理,分布式处理等)完全不搭,且 "XXX 管理系统" 这样的软件同时使用的人数不多,并发访问这种问题几乎没有。一方面,自己平时会浏览 CSDN 这样的网站,“高并发”,“虚拟化”,"XX 解决方案" 这样高大上的文章点进去,发现自己看不懂的,有些关键词都不了解。一方面,自己回顾自己掌握的技术,也仅仅是 SSM 和数据库的使用。对 linux,虚拟机,版本控制,工程化管理,nosql,集群等根本没有很多深入的认识,再次放大了危机感。

我认真思考了所面临的问题,决定静下心,放下那种 "着急" 的感觉,从头开始学习。从《Java 技术核心 - 基础知识》开始查漏补缺,结束以后开始看 Java Collection 框架,自己翻源码,使用 uml 工具画继承图。从最简单的 ArrayList 开始,带着网上的结论 "ArrayList 内部维护的是数组" 的结论,看每一个方法的实现原理。看着自己明白了以前不曾去想的实现原理,也拾起了信心。接下来通过学习 tomcat 的实现过程,对 servlet 有了进一步的认识。

一次偶然的机会,在网上看见了小马哥的《理解 Java 内省机制》。内省?是什么?当时的我一脸懵逼,难道之前的 java 白学了?点进去一看,哇,原来除了反射,java 还有这种机制!也正是这次,小马哥那种三言两语就能将复杂原理说清楚的能力,让我再次认识了 java!期间从 NIO,到手写 IOC。虽然自己会使用,但每一次都有新的收获!

那如何学习才能快速入门并精通呢?

当真正开始学习的时候难免不知道从哪入手,导致效率低下影响继续学习的信心。

但最重要的是不知道哪些技术需要重点掌握,学习时频繁踩坑,最终浪费大量时间,所以有一套实用的视频课程用来跟着学习是非常有必要的。

为了让学习变得轻松、高效,今天给大家免费分享一套阿里架构师传授的一套教学资源。帮助大家在成为架构师的道路上披荆斩棘。

这套视频课程详细讲解了(Spring,MyBatis,Netty 源码分析,高并发、高性能、分布式、微服务架构的原理,JVM 性能优化、分布式架构)等成为架构师必备的内容!

欢迎工作一到五年的 Java 的工程师朋友们加入的 Java 架构开发:685–16—767-2

本群提供免费的学习指导架构资料以及免费的解答

不懂得问题都可以在本群提出来之后还会有职业生涯规划以及面试指导