目录
前言
这篇文章是我刚刚入职公司时开始写的,先说一下我的具体情况吧。本人于2020年6月毕业,二本学校的软件工程专业,算是专业对口吧,大三大四参加考研,没有实习。考研失败后决定找工作,因为自己大学期间贪玩,java学的很烂,害怕找工作(毕业生普遍心理),再加上疫情原因,一直呆在家里,所以报了个java的培训班。直到8月份学完后,要开始找工作时才发现,已经错过了秋招和春招(之前一直没考虑过工作的事情,满心想着培训机构会包就业)。8月后一直在找工作,培训班推荐的企业大多是外包,而且项目很老,少数比较好的企业也没面上,到11月中旬之前待了两家外包公司,都觉得不满意,果断退出,现在入职了一家非外包公司,这家公司招实习生,2020届的也可以,也就打算先入职看看情况,工资很低但勉强够生活。前期在公司要学很多东西,但是学不深,只到会用的地步,长期下去如果没有一份未来的规划,大概率会随波逐流,失去学习的热情,渐渐地变成一个只能增删改查的搬运师。写这篇文章也是告诫自己,保持本心,记住此时的学习热情,不断提升自己,不要懈怠,不停地学习下去,不断的提高自己。拿出当初考研时的心态,只要学不死就往死里学。也写这篇文章让自己谨记没有面试机会,没有offer时的忐忑,记住那份对于未来的迷茫,记住告诉家里人自己又没钱时的那份愧疚感。也希望这篇文章能给还没毕业的同学一些帮助。
1、职业规划
当前是java实习生,培训过,水平有限,但应该是勉强达到java初级开发工程师的水平,目标是一年后(2021年底)能达到中级java开发的水平,可以包装两年的工作经验(2020年初实习—>2021年底)。于2022年初去北上广深发展,跳槽到二线厂,到能接触到分布式项目的公司。具体根据当时的情况而定,每过半年轮流去大厂面试,最好于2024年左右能进入到一线的大厂。2024年具备了高级java开发的水平,对各种技术有清晰的认知了,如果能进入大厂,开始往架构师方向努力,出来后可以到一些初创或者有发展前景的项目组中。具体职业规划因为当前认知有限,实在是没办法做出。
2、2020年12月--->2021年12月学习计划
2.1、java技术栈
- java语言基础:集合、异常、I/O、并发(书籍:java多线程编程核心技术、java并发编程核心方法与框架)、JVM(书籍:深入理解java虚拟机、实战Java虚拟机:JVM故障诊断与性能优化)
- 框架:Spring(书籍:Spring源码深度解析)、SpringBoot(书籍:SpringBoot实战)、SpringCloud(书籍:深入理解SpringCloud与微服务框架)、MyBatis、MyBatis-plus
- 关系型数据库:MySql底层(书籍:高性能MySql)、Oracle
- 非关系型数据库:Redis(书籍:Redis开发与运维)、MongoDB、Memcached
- 搜索引擎:ElasticSearch
- 容器:Docker
- 消息技术:ActiveMQ、RabbitMQ、Kafka
- RPC框架:Dubbo
- 反向代理服务器:Ngnix
- 网络应用:Netty
- 操作系统:Linux
- 算法:数据结构、LEEDCode刷题
- 软件设计:UML、设计模式
- 架构:大型网站技术架构核心原理与案例分析
- 其他:英语、学习优秀的开源项目
工作剩余时间有限,先从工作中需要应用的内容学起。
2.2、学习要求
- 源码:理解集合源码、Spring 源码,MyBatis 源码,Netty源码
- 性能调优:JVM、MySql、Tomcat、Ngnix
2.3、学习时间
- 平时至少以996要求自己,加班则休息,每天晚上跑步回家。
- 星期五晚上必须和家里人联系。
- 周六早上 9 点 - 中午 11 点半,必须睡午觉,下午 2 点 - 下午五点半,晚上休息。
- 周日上午 9 点 - 中午 11 点半,必须睡午觉,下午,晚上休息。
- 每天坚持做算法题,一周至少深入学一种设计模式,一个月至少六种。
- 每个月对自己的学习做一次总结,当前进度,后续时间安排的总结报告,三个月根据当前进度做一次大总结,合理调整好后面的计划。
2.4、学习方式
- 技术方面先通过视频学习,达到能使用,能自己写代码的地步,之后买相关书籍深入学习,每本书至少看三遍。某项技术达到一定程度后经常活跃于社区中,积极与他人讨论。
- 数据结构和算法方面先通过书籍按模块学习,之后在LeedCode上刷题。
- 英语方面必须做到遇到不会的单词要去查,查准读音,至少做到专业。
- 坚持写博客,要善于总结,学完一个技术要通过写博客加深对其的理解。
2.5、最终达到的水平
- 熟练掌握多线程并发技术,并且能使用在项目中。
- 熟练应用常用数据库技术,容器技术。
- 理解 Spring、SpringBoot 设计原理。
- 熟练运用设计模式来设计自己代码。
- 理清楚一个完整项目的各种模块的技术。
- 搭建一个自己的开源项目。
总结
技术岗位是一个必须要不断前进的职业,停滞不前只会落后于行业。必须要不停地学习。