游客您好
第三方账号登陆
  • 点击联系客服

    在线时间:8:00-16:00

    客服电话

    020-85534346

    电子邮件

    81058337@qq.com
  • 码云社APP

    随时掌握码云社动态

  • 扫描二维码

    关注砺锋微信公众号

一个半路出家十年Java老程序员的真实经历

发布时期:2019-5-24 15:40
阅读:1191 回复:18

我是一个老java程序员,现在基本告别编码时代了,当然我现在还在写代码,不是为了老板写了,是自己在创业。回想起这么多年的人生路,作为一名老程序员感慨颇多,尤其是作为一名半路出家的程序员,其中的滋味更是感慨 ...

我是一个老java程序员,现在基本告别编码时代了,当然我现在还在写代码,不是为了老板写了,是自己在创业。回想起这么多年的人生路,作为一名老程序员感慨颇多,尤其是作为一名半路出家的程序员,其中的滋味更是感慨万分。下面我就自己说说我的经历,也许会给未来码农一点启发。

当时真是太高兴了,终于拿到了自己梦寐以求的本科学历。其中付出的辛苦,只有自己知道。每天要骑一个多小时的路去听课,而且由于南大那个讲信号与系统的老师实在太差了,根本听不懂不说还是个结巴。我和同学一起跑到天津师范大学去蹭课。要说天津师范大学的老师讲的真不错,人也不错,其实他是看出来我们是蹭课的,但看到我们这么臭不要脸的,下大雪都不迟到,也就睁一只眼闭一只眼了。

上班第一天没什么事情,就是装机器,搭建开发环境。我也很轻,因为哪天是星期五,星期六日就休息了。折腾了一上午,终于吧项目从cvs上下载下来并在本地运行起来了。当时版本控制就是用的cvs,哎,培训的时候cvs也没讲,我倒不是说这些东西不能自学,但是培训费花了9800,就学了这么点东西,根本不够用的,太不值了,感觉真的很坑。2003年的9800啊,不是一笔小数字啊!一看那些hibernate,spring的配置文件,马上就晕了。当时买了本孙伟琴的hiberate学的挺慢的,spring接触的也不多。终于快下班了,经理对我说,明天一起来加班吧,项目挺紧张的。我当时就晕了,我擦了,第一天上班就加班,我说,好,没问题!

第二天早上4点多,我突然惊醒,其实我一晚上都没怎么睡觉,想想明天要写代码就特紧张,怕完不成任务又让人开了。穿衣服爬起来,在床上打开电脑,弄了本书开始研究分页,说实在的分页对于一个没有开发经验的java程序员来说,确实是有点难度的。我想做项目肯定会有分页的,到了6点多,终于研究的差不多了。洗漱吃早点,去上班了。果然,第一个任务就是一个模块的增删查改,我模仿其他模块做了一天,hibernate的分页还是比较简单的。就是js有点麻烦,有个地方搞不定,还让项目经理帮了下忙,下班的时候,经理对我说,怎么样,我说还行,写完了。于是,他检查了下我的模块,看了下代码,有对代码中变量的命名,代码注释等格式问题,做了指导。下班后,我长出了一口气,终于找到工作了。两个月就过了试用期,工资4000.

这是我的第一份工作,万事开头难,工作中遇到了很多的困难,随时面临新的挑战,我觉得只要有毅力,这些困难都不是问题。两年后我跳槽了。去了一家国企做电力系统的项目。这个公司做了两年,感觉国企的氛围实在真的是受不了,项目很紧张,还要让你去开会,听什么领导讲话。讲我们集团以后要怎么怎么样,他大爷的,我手里的活明天要交差,干不完要加班,加班干不完要通宵,哪有功夫听你瞎BB。大大小小的会议特别多,领导说起话来特摆谱,我进公司两个多月,一直以为公司的副总是老总,公司的老总是副总。因为每次开会的时候,副总说起话来特像老总,老总到是笑嘻嘻的,还老征求副总的意见,但是副总说话都是命令式的,从来不问大家有什么意见。后来跟同事聊天才知道,我搞反了。也许是副总谱摆的太大了,最后让老总给撤了。

2007-2008年正好赶上互联网的泡沫,整个世界经济危机,中国也受到影响。帝都的写字楼里,也经常听到有的公司在裁员,有的在降薪。我当时想着回天津,在家里找份工作,要赶紧搞对象,结婚了,家里也是催的紧。赚钱已经不是首要目标了,程序员都是单身狗,难道这就是宿命。我辞去了北京的工作回天津找工作。2008年的天津软件公司特别少,在网上就很少,工资也特别低,回家找了两个月打击很大,工资太低了,而且都在华苑软件园,特别远。很无奈,我又回到帝都,拿着锅碗瓢盆,再次北漂。

后来在一个小公司干了两年,给农业银行做考试培训系统。突然一天接到老大的电话,就是我第一份工作的项目经理。他说他在做电商是技术负责人,让我过去帮他,特别高兴。去上班的头一天又见到了以前的同事,大家又在一起了。真不知道我走后发生了什么,是不是被马云挤垮了。在做电商项目的时候,确实应用了很多新技术,主要是解决高并发业务,比如秒杀之类的。当然那个时候主要是使用mysql的集群和主从同步,也就是在那个时候,我接触到了运维,并且参与到了网站的运维工作。当时使用的是Memcached作为缓存,ActiveMQ作为消息队列服务,单点登陆、首页静态化、lucene等技术都接触到了,并且在应用到了实际工作中。在这个公司我学的了很多java互联网开发的技术。

2011年底,我离开了这家公司,我想向上努力,我需要得到得到质的提高。这回找工作我不再面试程序员了,而是系统架构师。终于,我找到了一份系统架构师的工作。具体什么单位不能说,因为是涉密的,我们上班都不能上网,也不能使用U盘。我亲自架构了整个系统,我在整个项目组中算年龄比较大的,有一个领导大家都叫他猴哥,可能跟我差不多,还有一个经验丰富的程序员,不过他是c语言的。我们需要将飞机传送到地面站的报文进行解析,这个是c语言来完成的,然后存放到数据库中,由java程序进行处理。运用了google地图+js制作了飞机航线系统,解决了晨昏线和飞机转向算法,当然,这个算法是请教了专家,我就是通过程序实现他的算法。我负责技术选型,当时选择的是ssm,ssm和ssh我纠结了好久,最终选择了ssm。事实证明我的选在是正确的,现在的系统基本是ssm的摒弃了ssh,struts2这种多进程的mvc框架注定了它不适合处理大并发项目。后台使用springscurity做的权限系统,我负责核心模块和基础工具类的开发,数据库的设计,服务器运维优化。权限系统是每个项目的核心模块,整个权限系统,单点登陆功能是我独立开发的。当时由于还没有出现dubbo,spring cloud这种分布服务是架构,所以采用的是Webservice作为解决方案,确实存在一定的性能瓶颈。xml传输还是有点慢。但是基本满足了项目的整体需求,最后通过了专家组的验收。这个项目做了五年。

现在来总结从事Java一到十年必须要了解的技术知识点,这对你的职业生涯会有很大的帮助

感谢大家能看完我这么长的分享,希望以下的学习路线能对你有帮助

关注我:私信回复“架构资料”获取往期Java高级架构资料、源码、笔记、视频

Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术

设计模式

设计模式是可复用面向对象软件的基础,学习设计模试是每个程序员从菜鸟走向大神的必经之路,巧妙地运用设计模式可以使我们的代码看似复杂实际简洁、复用性更高、更容易被别人理解等好处,同时也是学习软件工程的基础和必然。

一个半路出家十年Java老程序员的真实经历

并发编程

主要培养编程者深入了解最底层的运作原理,加强编程者逻辑思维,这样才能写出高效、安全、可靠的多线程并发程序。

一个半路出家十年Java老程序员的真实经历

开发工具工程化

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

一个半路出家十年Java老程序员的真实经历

性能调优

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

一个半路出家十年Java老程序员的真实经历

源码分析

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

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

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

△spring源码

一个半路出家十年Java老程序员的真实经历

△mybatis源码

一个半路出家十年Java老程序员的真实经历

分布式架构

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

一个半路出家十年Java老程序员的真实经历

分布式架构(一)

一个半路出家十年Java老程序员的真实经历

分布式架构(二)

一个半路出家十年Java老程序员的真实经历

微服务

关于微服务架构的取舍

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

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

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

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

一个半路出家十年Java老程序员的真实经历

B2C项目实战

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

一个半路出家十年Java老程序员的真实经历

关注我:私信回复“架构资料”获取往期Java高级架构资料、源码、笔记、视频

Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术

往期架构视频截图


一个半路出家十年Java老程序员的真实经历


一个半路出家十年Java老程序员的真实经历


一个半路出家十年Java老程序员的真实经历

13650667658(未知职业)-本文作者
这个人很懒,什么也没有留下。
1191 18 2019-5-24 15:40
该文章已有18人参与评论

请发表评论

全部评论

查看全部评论>>

扫一扫关注官方微信号

最前沿的技术信息一手掌握

滚动新闻
CODESEEDING(码云社)一家致力于程序员成长、以内容为核心、以提问为引导的多元化成长社区。我们在线上为技术爱好者提供了一个优质的交流氛围环境,在线下同样和众多高校联合开办了技术沙龙品牌。
020-85534346
关注我们
  • 访问移动H5版
  • 官方微信公众号

码云社 - CODESEEDING 2.0© 2018-2019 码云社. TOOBUG ( 粤ICP备16114193号-3 )