一个五年Java程序员的从业总结,献给还在迷茫中的你-阿里云开发者社区

开发者社区> java填坑路> 正文

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

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

你愿意做码农吗?

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

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

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

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

清醒的认识自己

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

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

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

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

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

01.阅读源码

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

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

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

img_53f19bcbed284c4eef55003cd014887f.jpe

△spring源码

img_97ba58cc14a1d5d42b9113c56d661a38.jpe

△mybatis源码

02.分布式架构

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

img_e749585d7d2e7ae4e2921a6944543ff0.jpe
img_0696972763b78f1837e9fa78cdf2e1da.jpe

03.微服务

关于微服务架构的取舍

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

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

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

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

img_2c406a12782287af4fb0c1021c1e616b.jpe

04.性能调优

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

img_5aa50fb40c1ecedd2ebcf38db694ec86.jpe

05.开发工具工程化

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

img_4a92216f082bd998a6ddc03b11f7789e.jpe

06.项目实战

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

img_b9b976db74bcad7a404bdb24a99dfc0c.jpe

欢迎工作一到五年的Java工程师朋友们加入Java架构开发:860113481

群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
网络资源-黑马程序员Java 知识——精华总结
获取更多资源Java帮帮IT资源分享网 一、黑马程序员—java 概述与基础知识.................................................................................6 1、何为编程?..............................................................
2184 0
Java基础-14总结正则表达式,Pattern,Mactcher,Math,BigInteger,BigDeximal,System等
你需要的是什么,直接评论留言。 获取更多资源加微信公众号“Java帮帮” (是公众号,不是微信好友哦) 还有“Java帮帮”今日头条号,技术文章与新闻,每日更新,欢迎阅读 学习交流请加Java帮帮交流QQ群553841695 分享是一种美德,分享更快乐! 学正则表达式之前qq号问题: package cn.itcast_01;
2012 0
一个6年Java程序员的年终总结,写给还在迷茫中的你
我越来越担心我作为一个Java程序员的未来。 恍然间,发现自己在这个行业里已经摸爬滚打了五年了,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作的过程中却遭到了重大的挫折。
965 0
Java程序员在写SQL程序时候常犯的10个错误
Java程序员编程时需要混合面向对象思维和一般命令式编程的方法,能否完美的将两者结合起来完全得依靠编程人员的水准: 技能(任何人都能容易学会命令式编程) 模式(有些人用“模式-模式”,举个例子,模式可以应用到任何地方,而且都可以归为某一类模式) 心境(首先,要写个好的面向对象程序是比命令式程序难的多,你得花费一些功夫) 但当Java程序员写SQL语句时,一切都不
1354 0
黑马程序员 三、面向对象(1))
Java帮帮-IT资源分享网  三、黑马程序员—面向对象(1) 第三篇:  1、什么叫面向对象? 面向对象(Object-Oriented,简称 OO)就是一种常见的程序结构设计方法。 面向对象思想的基础是将相关的数据和方法放在一起,组合成一种新的复合数据类型,然后 使用新创建的复合数据类型作为项目的基础。 面向对象是一个很抽象的概念,它相对面向过程而言
2166 0
黑马程序员 八、集合框架(2)
Java帮帮-IT资源分享网  八、黑马程序员—集合框架(2) 第八篇 集合框架(2)  1、Collections 类 操作集合的工具类: static void reverse(List list):反转指定 List 集合中的顺序;(和 ListItertor 的逆序排列一样!) static void shuffle(List list):对集合元素
1182 0
黑马程序员 九、IO 操作(1)
Java帮帮-IT资源分享网  九、黑马程序员—IO 操作(1) 第九篇 IO 文件操作(1)  1、IO 的概述和 File 方法 IO 流用来处理设备之间的数据传输 Java 对数据的操作是通过流的方式 Java 用于操作流的对象都在 IO 包中 File 类在整个 IO 包中与文件本身有关的操作类,所有的与文件本身有关指的是创建、删除 文件等操作。
1357 0
Java程序员提高效率的10+个最佳库
众所周知,Java 的生态环境相当庞大,包含了数量相当可观的官方及第三方库。利用这些库,可以解决在用 Java 开发时遇到的各类问题,让开发效率得到显著提升。
5061 0
java程序员必须掌握的5个注解
      自 JDK5 推出以来,注解已成为Java生态系统不可缺少的一部分。虽然开发者为Java框架(例如Spring的@Autowired)开发了无数的自定义注解,但编译器认可的一些注解非常重要。
932 0
408
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载