好像是被“推”着开始的
其实我到现在也没想明白,自己怎么就做了Java,填志愿那会儿,对着“计算机科学与技术”这个专业,脑子里只有“修电脑”的模糊印象,辅导员说“就业面广,男生学这个有优势”,我就点了头,大一时学C语言,对着指针和内存地址发呆,期末考擦着过,总觉得这行可能不适合我,直到大二开了Java课,老师用“万物皆对象”举例,我居然听进去了——或许是“对象”这个词比“指针”更贴近生活,或许是老师讲课带点方言,比C语言老师有趣些,我第一次对着代码没犯困。
现在想想,这大概就是“误打误撞”的开始,大三实习,简历上只有Java基础,抱着“试试就试试”的心态投了家小公司,面试官问我“Java和C++的区别”,我硬着头皮答“Java不用手动管理内存,更安全”,居然就过了,入职那天,看着工位上《Java核心技术》卷了边的书,突然觉得:“好像,我要开始靠这个吃饭了?”
从“Hello World”到项目懵圈
刚接手第一个项目时,我连Maven和Spring Boot是什么关系都搞不清,组长让我写个用户注册接口,对着需求文档,我愣是坐了三天,第一天,对着IDEA新建Spring Boot项目,报错“Failed to configure a DataSource”,查了半天博客,才发现没配数据库连接池;第二天,写完Controller层,Service层不知道怎么调用,同事说“用@Autowired注入”,我又开始琢磨“依赖注入”到底是什么;第三天,测试接口时,传参一直报错,后来才明白,前端传的是JSON,我后端用@RequestParam接收,应该用@RequestBody。
那段时间,工位旁边的垃圾桶堆满了草稿纸,上面写满了“@Transactional失效原因”“线程池参数配置”“MySQL索引优化”之类的笔记,有次凌晨两点改bug,盯着日志里的NullPointerException,突然对着屏幕笑了——我也不知道自己笑什么,大概是觉得“原来做Java,就是跟这些‘坑’死磕啊”。
日常:在CRUD和Bug里打转
如果有人问我“做Java每天干什么”,我会说“大部分时间在CRUD,剩下的时间在改bug”,这话有点夸张,但也不全是,早上九点到公司,先开晨会,组长说“今天要完成订单模块的支付回调接口,顺便把昨天用户反馈的‘收货地址保存失败’的问题改了”,然后打开Jira,看需求文档,画流程图,写代码——无非是定义接口、写SQL、调第三方支付API、处理异常。
但“简单”的事,往往藏着细节,比如写支付回调接口,要考虑签名验证,防止伪造请求;要处理重复回调,避免用户重复扣款;要记录日志,方便后续排查问题,有次线上出bug,用户投诉“扣钱了但订单没更新”,查了半天日志,发现是第三方回调的IP白名单没加,请求被拦截了,后来每次对接新接口,我都会在文档里标红“确认白名单”“测试异常场景”。
加班也是常态,有次版本发布,凌晨三点还在线上服务器上看日志,同事递了杯咖啡,说“习惯了,Java开发不加班,跟没吃过火锅一样”,我没说话,盯着屏幕上的“200 OK”,突然觉得——虽然累,但看到自己写的代码跑起来,还挺有成就感的。
踩过的坑,都成了路标
做Java这几年,踩过的坑能编成一本《Java开发避坑指南》,刚学Spring时,不懂事务的传播机制,在一个方法里调了两个事务方法,结果第一个方法报错,第二个方法的数据还是提交了,导致数据不一致,后来才明白“默认情况下,Spring的事务是REQUIRED,如果当前有事务,会加入当前事务”。
还有并发问题,写一个秒杀接口,没考虑高并发,直接用synchronized锁方法,结果压力测试时,接口响应慢得像蜗牛,后来学了Redis分布式锁,用setnx命令加锁,才解决了并发问题,但Redis又带来了新问题——锁超时怎么处理?是不是要看门狗机制?这些坑,都是一个一个踩过才懂的。
最难忘的是刚接手老项目时,代码里全是“if-else”嵌套,最深的嵌套有十几层,改个需求要牵一发动全身,后来跟同事聊天,他说“这代码是五年前的人写的,当时急着上线,没重构”,我默默记在心里:以后写代码,要多想一步,哪怕慢一点,也要让代码“可读、可维护”。
慢慢懂了,Java不只是代码
做了三年Java,我慢慢发现,这行不只是写代码那么简单,跟产品经理沟通时,要懂业务逻辑,才能把需求转化成技术方案;跟测试对接时,要考虑各种边界条件,才能写出健壮的代码;甚至写注释,也是一种能力——有次同事离职,接手他写的代码,看不懂注释里的“这里要特殊处理”,后来发现是业务方临时加的规则,只能硬着头皮查日志,花了两天才搞明白。
技术也在变,我刚入行时,主流还是SSM(Spring+SpringMVC+MyBatis),现在Spring Cloud微服务、Docker容器化、K8s编排都成了标配,为了跟上变化,我每天下班后会看技术博客,周末抽时间学新框架,有时候学累了,也会问自己“这么卷,值得吗?”但看到自己参与的系统,每天有几十万用户在用,又觉得“这些学习,都是为了让系统更稳定,让用户用得更放心”。
好像也还行
前几天学弟问我“学长,做Java累吗?”我想了想,说“累,但也没那么累”,刚入行时的迷茫和焦虑,慢慢变成了“遇到问题知道怎么查资料”的底气;对着代码抓狂的夜晚,也变成了“成功解决bug后”的小确幸。
其实我也不知道自己怎么就坚持做Java到现在了,可能是因为它够实在,一行代码一行结果;可能是因为够有挑战,永远有新技术学;也可能是因为,在这个过程中,我慢慢从一个“对着指针发呆”的小白,变成了能独立负责模块的“老”开发。
现在有人问我“为什么做Java”,我还是会说“我也不知道怎么回事,就做下来了”,但心里清楚:不是“没办法”,是“没办法不爱”——爱它带来的成就感,爱它解决问题的逻辑,也爱那个在代码里慢慢成长的自己。


















