毕业三年,月薪30K,我想跟你聊聊!

大家好,我是冰河~~

很多读者私信问我,自己工作三年多了,随着工作年限的不断增长,感觉自己的技术水平与自己的工作年限严重不符。想跳槽出去换个新环境吧,又感觉自己的能力达不到心仪公司的标准,即使投了简历也没人来通知自己面试。就这样在原来的公司一天天的混日子,时间久了,感觉自己废了,就这么恶性循环着。

这可能是你职业生涯中最具含金量的一次点击,点击【项目实战】查看详情,与冰河一起研发基于大厂真正核心技术的硬核项目。

如何破局?

首先,如果你认为自己是一个天才程序员,那么你可以不按照我说的做,因为你是天才,你可以分分钟达到甚至超过30K。如果你认为自己只是一个普通人,那好,继续往下看,相信会对你有所帮助的。

我们该如何打破自己的技术水平和工作年限严重不符的这个僵局呢?

首先,最重要的还是心态 。为什么这么说,因为从事互联网开发工作,程序员的压力其实还是蛮大的,在高强度的日常工作中,就需要我们以良好的心态来面对自己的工作。其次,就是要学会释放压力,以正确的方式来释放或者缓解自己心中的压力。

其次,就是关键的一点,你要从心底问自己是否对现在的工作感兴趣。 其实,我们都知道,只要是做我们自己感兴趣的事情,就会事半功倍,如果是出于某种原因不得不去做某件事,这样往往会是投入了很大的精力,效果往往还不太好,这就是我们常说的事倍功半。

经常有小伙伴在微信上私信我:我是学Java呢?还是学Python呢?哪个吃香啊?哪个好找工作啊?学习大数据怎么样啊?大数据是不是已经饱和了啊?这一连串的问题,其实,我看到小伙伴们的这些问题,我都不知道如何回答。为什么呢?其实这些问题,小伙伴们心里应该都清楚:只要你足够认真的坚持学下去,学什么都能够找到一份好工作。

究其本质, 对于我们这些搞技术的人来说,年龄的增长其实没有外界说的那么可怕,真正可怕的是你的年龄和你所掌握的技术深度没有匹配。如果你的年龄与你的技术深度不匹配时,你是很难找到一个令自己满意的工作的。试想,如果你已经工作5、6年了,你所做的工作连1、2年工作经验甚至是应届毕业生都能做时,那公司为啥还要你来做呢?给你养老吗?公司是要盈利的,盈利就意味着要赚钱。怎么赚钱?节省成本就是一种赚钱的方式,那不好意思,你就会被淘汰掉。

所以,在技术这条道路上,你需要选择一个自己感兴趣的方向。比如:Java、Python、大数据、云计算、云原生等等。接下来,就是深入学习了。要知道:再牛逼的技术,也抵不过傻逼似的坚持。 只要坚持,就没有学不会的技术。

在学习的过程中,一定要明确自己学什么,切记不要三心二意。不要今天学习Java,明天又想学习Python了。一定要给自己制定一个目标,并将目标拆分为每天的学习计划。

学些什么?

调整好心态后,我们再来看看需要学习哪些内容。

夯实基础

首先,就是要夯实自己的基础。比如对集合类,并发包,IO/NIO,JVM,内存模型,泛型,异常,反射,等有深入了解,最好是看过源码了解底层的设计。

比如一般面试都会问 ConcurrentHashMap,CopyOnWrite,线程池,CAS,AQS,虚拟机优化等知识点,因为这些对互联网的企业是绝对重要的。而且一般人这关都过不了,还发牢骚说这些没什么用,为什么要面试。

这里,我给大家举一个我所经历的项目的真实案例。之前,我所在的公司,在做一个高并发电商项目时,一名开发同学在项目中,因为使用了默认的创建线程池的方式,导致线程池中使用了默认的无界队列,在远程服务异常情况下导致内层飙升。最终通过排查源码定位到问题,将其修改为有界队列,解决了问题。

试想,你要是连线程池都不清楚,你怎么去玩?再举一例,由于对 ThreadLocal 理解出错,使用它做线程安全的控制,导致没能实现真的线程安全。此时,你会怎么解决这个问题?

所以,基础很重要,一定要把基础学扎实。万丈高楼平地起,只有把基础搞扎实了,上层建筑才会更加牢固。

深入互联网技术知识

关于这一点,我们需要从底层说起,你起码得深入了解 MySQL,Redis,MongoDB,Nginx,Tomcat,RPC,JMS、Dubbo、SpringCloud、SpringCloud Alibaba、性能调优、Netty、服务注册发现、服务治理、各种中间件、互联网工程、并发编程、分布式、微服务等等方面的知识。

你要问需要了解到什么程度,这里,我可以给你举几个例子:首先对于 MySQL,你要知道常见的参数设置,存储引擎怎么去选择,还需要了解常见的索引引擎,知道怎么去选择。知道怎么去设计表,怎么优化 SQL,怎么根据执行计划去调优。掌握如何去做分库分表的设计和优化,一般互联网企业的数据库都是读写分离,还会垂直与水平拆分,所以这些也需要你多多少少掌握。

然后 Redis,Mongodb 都是需要了解原理,需要会调整参数的。

而 Nginx 和 Tomcat 几乎都是 JAVA 互联网开发必配的Web服务器,这点,可能跟阿里的技术栈选择有点关系。

至于RPC相关的就比较多了,必须了解各种网络协议,序列化技术,SOA 等等,你要有一个深入的理解。现在应用比较广的 RPC 框架,在国内就是 dubbo 了,小伙伴们可以到Dubbo的官网进行学习,也可以到github下载源码进行学习。

至于其他的嘛,就需要小伙伴们自己去研究了。总之,掌握它们,对你没坏处。

培养硬核能力

我这里说的硬核能力,指的就是:编程能力,编程思想,算法能力,架构能力。

这里,我就简单的说下,除了基础部分和互联网技术需要掌握的技能外,还有几个是必须要掌握的,那就是:编程能力、编程思想、算法能力、架构能力。

编程能力这个我觉得不好去评价,但是拿一个 2000W + 用户根据姓名年龄排序这种题目也能信手拈来。问你个 AOP 和 IOC 你起码要清清楚楚,设计模式不说每种都用过,但也能了解个几种吧。对于算法来说,你需要掌握基本的算法知识吧。其实,开发一个系统时,很多地方都需要考虑使用算法来实现。有些小伙伴认为自己是做业务开发的,用不到算法,不需要学习算法啊,其实这种思想就是错误的!!

最后就是架构能力,这种不是说要你设计个多牛逼多高并发的系统,起码让你做一个秒杀系统,防重请求的设计能快速搞定而没有坑吧。

最后的最后,记住一句话:再牛逼的技术,也抵不过傻逼似的坚持。 只要坚持,就没有学不会的技术。

好了,今天就到这儿吧,我是冰河,我们下期见~~

相关推荐
用户21411832636027 分钟前
dify案例分享-零代码搞定 DIFY 插件开发:小白也能上手的文生图插件实战
后端
计算机程序员小杨18 分钟前
计算机专业的你懂的:大数据毕设就选贵州茅台股票分析系统准没错|计算机毕业设计|数据可视化|数据分析
java·大数据
y1y1z22 分钟前
EasyExcel篇
java·excel
DokiDoki之父41 分钟前
多线程—飞机大战排行榜功能(2.0版本)
android·java·开发语言
高山上有一只小老虎1 小时前
走方格的方案数
java·算法
whatever who cares1 小时前
Java 中表示数据集的常用集合类
java·开发语言
石小石Orz1 小时前
效率提升一倍!谈谈我的高效开发工具链
前端·后端·trae
JavaArchJourney1 小时前
TreeMap 源码分析
java
孟永峰_Java1 小时前
凌晨线上崩盘:NoClassDefFoundError血案纪实!日志里这行「小字」才是救世主
后端·代码规范
whitepure2 小时前
万字详解Java中的IO及序列化
java·后端