根据现象分析Java程序员三十岁这个问题究竟要如何看待

简介:

时间过得真快,转眼30岁了。准备离开公司那段时间开始整理简历、回顾自己这些年的经历,发现这些年走的太慢了,圈子太小了,远远赶不上深圳这座城市的变化,更要命的是:突然意识到已经到了一个相当尴尬的年纪,那段时间我陷入了深深的焦虑之中,不知道下一步该怎么走,再次感到深深的迷茫了。辞了职,我一个人背着包走了两个月,去了很多城市,一个人去随心所欲的旅行,是我30岁以前必须去完成的一件事情,我怕以后没时间。

 每次跳槽都意识到了生涯上的问题,然后必然是焦虑、迷茫、挫败,好在我是一个喜欢思考总结的人,最近发现这个习惯越来越重要。最后我发现30岁问题其实是能力问题、视野问题、心态问题,既然选择了这个行业,就应该正确的面对这个问题。

 30岁问题是早晚都要面临的一个问题,只是我比一起出来的同学不得不早几年的时间面对这个问题。有人问过我如何看待程序员的30岁问题?我的回答是:持续学习的人不会老,没有学习热情的人早已老去。

网上关于30程序员的问题文章很多,无一例外的都很悲观,这算一种正常现象。就个人观点从两个方面分析下这种现象的原因:

一、程序员个人能力。

之所以说程序员是吃青春饭,其实这里面有深层次的原因。程序员的第一个素养就是:学习,这是程序员处于不败之地的根本,这个行业就是逆水行舟,不进则退。事实上有很多程序员出来工作两年就已经丧失了学习热情,如果没有了持续学习的热情:无论你是30岁还是20岁,都已经”老了“,所以随着时间的推移能把学习热情维持到30岁以后的很少了。

二、企业

再来说企业,使用最低的成本搞出最高产出,这是企业生存的重要哲学。80%的岗位是没有太多能力上的要求的,能把事情做出来就好,所以招人的时候一定会以最低成本去招,两年工作经验就能搞定的凭什么要花三倍的薪水去招30岁的老鸟。很多人都是80%中的一员,被用最低的成本招进去了,开始日常工作,份内工作基本能搞定,如果平台对技术创新无要求,基本也就这样慢慢的重复你的日常工作了,少部分聪明的人开始觉醒(这部分一定是那些主动最求、主动学习的人),他们或者不断的充电、学习试着把所学应用到工作中尝试改变一下团队、或者跳槽寻找更好的平台。如果你不是那少部分人,慢慢的被时间淘汰了,一波一波的应届生的涌入,到30岁边缘还不知道如何提高自己那就等着被行业淘汰吧。

所以30岁似乎成了一个标签:30岁的程序员工作效率低,30岁的程序员学习能力差…这是一个时间段的现象,就像几年前社会对90后的看法一样:90后脑残,但是事实还是有很多很优秀的90后开始展露头脚。经历过几家公司,遇到过比较菜的大龄程序员,确实是那种效率低,拒绝新事物的老油条,但也遇到好些牛逼的前辈,心态开放、有视野、技术牛逼、乐于分享。所以任何一种现象都因该辩证来看待,30岁现象正说明了30岁达到30岁该有的能力的程序员不多,这不正是你该继续努力前进动力么,30岁现象能区分真正专业和不学无术的人。

所以如果你是一个持续学习的人,年近30该具有什么样的习惯和职业素养?

1 学习热情。

   这个词在本篇文章中反复出现,觉得非常重要,学习是程序员安身立命之本,如果连这个习惯都没有,我觉得还是趁早改行吧。

2 思考总结

  既然是工作,那么很多时候我还是避免不了重复一些日常事务,一旦局限在某个环境,一旦重复某个动作,我们的思想就很容易进入一个慵懒的状态,很多时候自己都无法察觉,刚毕业那两年,我总是在跳槽的时候才会去做深入的总结和思考,后来我发现那两年浪费了些时间,有些不足早就应该调整了。所以最好养成定期思考总结的习惯,你总能发现一些问题,然后改价。

3 视野 

   随着你不断的学习,视野不断的开阔了,不在会再有语言偏见,对新技术自觉不自觉的敏感。新技术框架层出不穷,你总能花很少的时间看到它后面的技术本质。

4 影响力

  你已经有些积累沉淀了,有自己的一套知识体系,自己的一套方法,开始去影响身边的人,通过博客或其他方式分享于他人。

最后:

分享一套我整理收集来的Java架构知识体系,以及一些Java架构资料免费分享(包含Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术)资料获取点击这里加入(878249276)即可。名额有限先到先得。

Java架构体系

1.高性能架构

2.开源框架解析

3.架构师筑基

4.微服务架构

5.团队协作开发

6.B2C商城项目实战

设计模式

数据结构与算法

01 链表(上):轻松写出正确的链表算法,并实现LRU缓存淘汰算法

02 链表(下):ArrayList与LinkedList源码解析及应用场景

03 队列:线程池中有限资源请求队列排队功能的实现原理

04 栈:用户界面的前进跳转及回退机制如何实现

05 Hash表(上):HashMap 的实现原理精讲

06 Hash表(下):Hash思想在ThreadLocal与数据库索引中的应用

07 Java容器结构总结

08 树(上):树和二叉树的基本概念,以及huffman编码的手写实现

09 树(中):二叉排序树及二叉平衡树原理及手写实现

10 树(下):红黑树旋转理论及其应用

BATJ企业面试总结

01 怎样封装让BATJ企业面试官眼前一亮的简历

02 HashMap底层执行原理

03 hashtable和ConcurrentHashMap如何实现线程安全?

04 jvm的内存布局,垃圾回收机制

05 类加载机制里的,双亲委派模型

06 阐述事务的隔离级别和传播属性

07 高并发下,如何做到安全的修改同一行数据?

08 A服务调用B服务多接口,响应时间最短方案

09 A系统给B系统转100块钱,如何实现?

10 动态代理的几种实现方式及优缺点

互联网在中国发展也就不过十来年的时间,超过30岁的程序员本来就很少,以后肯定会越来越多,30岁悲观论只会影响技术的延续性,对技术发展很不利。程序员应该维护好职业的尊严,从捍卫每一行代码开始。

相关文章
|
2月前
|
Java 程序员
JAVA程序员的进阶之路:掌握URL与URLConnection,轻松玩转网络资源!
在Java编程中,网络资源的获取与处理至关重要。本文介绍了如何使用URL与URLConnection高效、准确地获取网络资源。首先,通过`java.net.URL`类定位网络资源;其次,利用`URLConnection`类实现资源的读取与写入。文章还提供了最佳实践,包括异常处理、连接池、超时设置和请求头与响应头的合理配置,帮助Java程序员提升技能,应对复杂网络编程场景。
69 9
|
3月前
|
存储 Java
【编程基础知识】 分析学生成绩:用Java二维数组存储与输出
本文介绍如何使用Java二维数组存储和处理多个学生的各科成绩,包括成绩的输入、存储及格式化输出,适合初学者实践Java基础知识。
96 1
|
10天前
|
缓存 算法 搜索推荐
Java中的算法优化与复杂度分析
在Java开发中,理解和优化算法的时间复杂度和空间复杂度是提升程序性能的关键。通过合理选择数据结构、避免重复计算、应用分治法等策略,可以显著提高算法效率。在实际开发中,应该根据具体需求和场景,选择合适的优化方法,从而编写出高效、可靠的代码。
25 6
|
2月前
|
监控 算法 Java
jvm-48-java 变更导致压测应用性能下降,如何分析定位原因?
【11月更文挑战第17天】当JVM相关变更导致压测应用性能下降时,可通过检查变更内容(如JVM参数、Java版本、代码变更)、收集性能监控数据(使用JVM监控工具、应用性能监控工具、系统资源监控)、分析垃圾回收情况(GC日志分析、内存泄漏检查)、分析线程和锁(线程状态分析、锁竞争分析)及分析代码执行路径(使用代码性能分析工具、代码审查)等步骤来定位和解决问题。
|
2月前
|
SQL 存储 Java
面向 Java 程序员的 SQLite 替代品
SQLite 是轻量级数据库,适用于小微型应用,但其对外部数据源支持较弱、无存储过程等问题影响了开发效率。esProc SPL 是一个纯 Java 开发的免费开源工具,支持标准 JDBC 接口,提供丰富的数据源访问、强大的流程控制和高效的数据处理能力,尤其适合 Java 和安卓开发。SPL 代码简洁易懂,支持热切换,可大幅提高开发效率。
|
2月前
|
SQL Java 程序员
倍增 Java 程序员的开发效率
应用计算困境:Java 作为主流开发语言,在数据处理方面存在复杂度高的问题,而 SQL 虽然简洁但受限于数据库架构。SPL(Structured Process Language)是一种纯 Java 开发的数据处理语言,结合了 Java 的架构灵活性和 SQL 的简洁性。SPL 提供简洁的语法、完善的计算能力、高效的 IDE、大数据支持、与 Java 应用无缝集成以及开放性和热切换特性,能够大幅提升开发效率和性能。
|
2月前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
72 2
|
2月前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
45 2
|
3月前
|
IDE Java 程序员
C++ 程序员的 Java 指南
一个 C++ 程序员自己总结的 Java 学习中应该注意的点。
27 5
|
3月前
|
Java
让星星⭐月亮告诉你,Java synchronized(*.class) synchronized 方法 synchronized(this)分析
本文通过Java代码示例,介绍了`synchronized`关键字在类和实例方法上的使用。总结了三种情况:1) 类级别的锁,多个实例对象在同一时刻只能有一个获取锁;2) 实例方法级别的锁,多个实例对象可以同时执行;3) 同一实例对象的多个线程,同一时刻只能有一个线程执行同步方法。
23 1