一个五年Java程序员的从业总结,献给还在迷茫中的你

简介: 你愿意做码农吗?恍然间,发现自己在这个行业里已经摸爬滚打了五年了,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作的过程中却遭到了重大的挫折。

你愿意做码农吗?

恍然间,发现自己在这个行业里已经摸爬滚打了五年了,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作的过程中却遭到了重大的挫折。详细过程我就不再叙述,在此,只想给大家说一说被拒绝的原因,看看大家有没有相似的经历,和类似的感悟。

面试官对我的答复大致是这样的,我们不需要熟练工,我们需要在某领域拥有超过常人的积累认知,和拥有整套完整思维模式和优秀认知事物能力的人…他很诚恳地告诉我,你还年轻,真的应该好好地静下心来,深入地研究一些东西,自己写一些东西,而不是这也用过,那也知道,但是多半都是局限于仅仅见过,会用,却从来没有认真思考过其代码背后蕴含的思想,更少有人研究过源码,进而体会大师们在某些问题的解决上秉承的思想和思维的风格。个人感觉,这也算是国内大部分程序员最让人悲哀的地方了,当然这也与外界浮躁氛围的蔓延不无关系。

不了解这一行的人总觉得程序员都是代码民工,如果自己也认为自己是敲代码的机器的话,我诚恳地建议您尽早转行吧,也许我这么说会得罪伤害一些同行,毕竟转行对任何一个人来说都是有相当的风险和挑战的。不过这绝对应该是善意的忠告。相反,我强烈地认为,程序员应该是最有活力和最有思想的一个群体,只要你不肯让自己浮于表面,更重要的是,必须勤于思考。如果你认可我这句的话,就请您继续往下看看我的感慨,否则,那就希望您好好利用好自己的时间做您最需要做的事吧。

由于面试中被问到Spring,MyBatis的时候,让面试官问得人仰马翻,哑口无言,所以回来之后洗心革面,下决心要把Spring,MyBatis好好研究个明白,再也无法容忍自己只知其一不知其二了。

清醒的认识自己

我一直担惊受怕,过去,可能是因为我年轻,但现在,我已经不是那么年轻了,我仍然发现有很多事情让我害怕。

当年纪越来越大后,我开始变得不能加班。我开始用更多的时间和家人在一起,而不是坐在计算机前(尽管这样,她们仍是抱怨)。我在本地教育委员会社区里提供一些帮助,还组织开源兴趣小组参加活动。

我在思考,为什么以前会把如此多的时间全部用在编程上。大量的编程。那是我渴望深入研究一个类库,一个框架或一门技术。

现在的技术的学习曲线的增加,让我的忍耐性越来越低。各种新技术,因为新奇让人兴奋,但最终变成一场场争论。我越来越无法忍受这些充满市场宣传气息的喧嚣。我对技术看重的是稳定,清晰。

据不完全统计,截至目前(2017.07)为止,中国Java程序员的数量已经超过了100万。而且,随着IT培训业的持续发展和大量的应届毕业生进入社会,Java程序员面临的竞争压力越来越大。那么,作为一名Java程序员,怎样努力才能快速成长为一名高级的程序员或者架构师,或者说一名优秀的高级工程师或架构师应该有怎样的技术知识体系,这不仅是一个刚刚踏入职场的初级程序员,也是工作三五年之后开始迷茫的老程序员,都必须要面对和想明白的问题。最近我学习了一个适合工作一到五年的Java程序员学习的课程带大家了解一下!

01.阅读源码

程序员每天都和代码打交道。经过数年的基础教育和职业培训,大部分程序员都会「写」代码,或者至少会抄代码和改代码。但是,会读代码的并不在多数,会读代码又真正读懂一些大项目的源码的,少之又少。这也造成了很多错误看源码的方式。

那要如何正确的分析源码呢?

我们的目标应该放在最常用的框架上面,下面就介绍两个:一个是Spring,另一个是大家用来觉得一直不怎么出问题的Mybatis。

△spring源码

△mybatis源码

02.分布式架构

随着我们的业务量越来越大和越重要,单体的架构模式已经无法对应大规模的应用场景,而且系统中决不能存在单点故障导致整体不可用,所以只有垂直或是水平拆分业务系统,使其形成一个分布式的架构,利用分布式架构来冗余系统消除单点的故障,从而提高整个系统的可用性。同时分布式系统的模块重用度更高,速度更快,扩展性更高是大型的项目必不可少的环节。

03.微服务

关于微服务架构的取舍

在合适的项目,合适的团队,采用微服务架构收益会大于成本。

微服务架构有很多吸引人的地方,但在拥抱微服务之前,也需要认清它所带来的挑战。

需要避免为了“微服务”而“微服务”。

微服务架构引入策略 – 对传统企业而言,开始时可以考虑引入部分合适的微服务架构原则对已有系统进行改造或新建微服务应用,逐步探索及积累微服务架构经验,而非全盘实施微服务架构。

04.性能调优

我们不仅仅对项目要运筹帷幄,还要能解决一切性能问题。只有深入学习JVM底层原理,Mysql底层优化以及Tomcat调优,才能达到知其然,知其所以然的效果。除了性能优化之外,也能提供通用的常见思路以及方案选型的考虑点,帮助大家培养在方案选型时的意识、思维以及做各种权衡的能力。

05.开发工具工程化

通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。程序员的战斗,往往不是一个人的战斗,我们如何在一个平台下高效的去重,进行代码review,对功能进行调整,debug,做到在统一的规划下步步为营,混乱的堆代码的过程中找到自己的记录。这一切都依赖于有效的工具。

06.项目实战

要想立足于互联网公司,且能在互联网浪潮中不被淹没,对于项目的开发实战演练是不必可少的技能,也是对自身能力的一个衡量,有多少的量对等于获得多少的回报。看似简单的一个项目需求图谱,其中的底层原理,实现原理又能知道多少?你搭建一个完整的B2C项目平台到底需要多少知识?这一切都是需要我们考量的。

为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜,


加群:468947140,获取往期Java高级架构资料、源码、笔记、视频
Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术
点击链接加入群:https://jq.qq.com/?_wv=1027&k=5xCRqGs

相关文章
|
4月前
|
存储 缓存 算法
Java程序员想年后跳槽,对JVM没有深入的理解,我劝你还是别跳了
Java 虚拟机是学习 Java 的基础,也是迈入高级 Java 开发工程师的必备知识点。所以今天这篇文章我们来聊聊如何从零开始学习 Java 虚拟机。
|
5月前
|
设计模式 算法 Dubbo
风向标!准备跳槽的小伙伴可以看下《2023 Java offer 收割指南》
大厂的面试题一直都是风向标,动态必须关注! 想高效快速地拿到心仪 offer,一定要从面试官的角度出发,提前做好功课,了解市场的最新风向。
|
11月前
|
消息中间件 SQL 缓存
大厂面试,欢聚时代四年多经验的Java面经
欢聚时代一面(1h) 先做下自我介绍,固定环节
106 0
|
消息中间件 算法 Dubbo
【金九银十跳槽季】Java工程师如何在1个月内做好面试准备?
一、写在前面 秋招转眼已过,每年一度的七夕佳节,即将迎来的是一年一度的金九银十跳槽季。 假如你准备在金三银四跳槽的话,那么作为一个Java工程师,应该如何利用1个月的时间,快速的为即将到来的面试进行充分的准备呢? 之前写过两篇文章: 互联网公司的面试官是如何360°无死角考察候选人的?(上篇) 互联网公司面试官是如何360°无死角考察候选人的?(下篇) 这两篇文章,专门站在面试官的角度,给大家分析了平时互联网公司是如何全方位的考察一个候选人的。 总结起来,面试官考察候选人的时候主要是从技术广度、技术深度、基础功底、系统设计、项目经验几个角度来进行的。 那么本文咱们就针对每一块内
81 0
|
Java 程序员
一个java工程师的心酸历程
一个java工程师的心酸历程
73 0
一个java工程师的心酸历程
|
消息中间件 SQL 缓存
大厂面试来了,欢聚时代四年多经验的Java面经
大厂面试来了,欢聚时代四年多经验的Java面经
320 0
大厂面试来了,欢聚时代四年多经验的Java面经
|
存储 缓存 前端开发
诚意满满,准备跳槽和应届生必备JAVA面试知识点!
诚意满满,准备跳槽和应届生必备JAVA面试知识点!
诚意满满,准备跳槽和应届生必备JAVA面试知识点!
|
算法 Java 中间件
震惊!文科生如何三个月转行成为Java工程师?
点击上方“程序员江湖”,选择“置顶或者星标” 你关注的就是我关心的! 作者:以大橘为重链接:https://www.nowcoder.com/discuss/156087 楼主是19届应届生,去年在牛客学到了很多东西,在实习和秋招也收获了一些offer(Java后端开发工程师)。
|
缓存 NoSQL Java
双非二本的2019春招Java岗面试心得
前言 1. 已拿途牛天津研发部Java研发岗Offer 2. 追一科技等hr面ing 也许对于大佬来说 这个offer不怎么样 不过对于我这个0offer菜鸟来说已经是来之不易了. 2019.
2438 0
|
Java 程序员 Spring
一个五年Java程序员的从业总结,献给还在迷茫中的你
你愿意做码农吗? 恍然间,发现自己在这个行业里已经摸爬滚打了五年了,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作的过程中却遭到了重大的挫折。详细过程我就不再叙述,在此,只想给大家说一说被拒绝的原因,看看大家有没有相似的经历,和类似的感悟。
18800 0