最近有位星球好友问我:田螺哥,日常开发中,都是在做业务需求,如何提升自己的技术呢?因此,本文田螺哥整理了提升技术的13个建议,小伙伴们,一起加油。
1. 打好基础,深入学习语言特性
比如,对于Java程序员来说,要了解Java语言的基本概念和核心特性,包括面向对象编程、集合框架、异常处理、多线程等等。可以通过阅读Java的官方文档、教程、参考书籍或在线资源来学习。
如果最基本的基础都不扎实,就不要谈什么提升技术啦。 比如说:
- 你知道HashMap和ConcurrentHashMap的区别嘛?
- 在什么时候使用ConcurrentHashMap?
- 操作文件的时候,你知道在finally块中释放资源嘛?
- 你知道在哪些场景适合用泛型嘛?
因此,要提升自身技术,首先就是要把基础打扎实。有些小伙伴说,上班没时间学基础呀,其实不是这样的,基础这玩意,每天地铁上下班看看,下班后回到家再看看,周末在家看看,多点写写代码,一般一两个月,你的基础就很好啦。
又有些小伙伴说,如何提升Java基础呢?有哪些教程推荐呢?可以:
- 阅读Java相关书籍或教程,如Java编程思想、Java核心技术、Java虚拟机、菜鸟教程等
- 阅读Java博客和社区参与讨论:关注Java领域的博客、论坛和社区,了解最新的技术动态和解决方案,与其他开发者交流。
- 多实践,多敲代码:在B站找个Java基础视频看,平时多实践、多敲代码
2. 熟悉掌握常用的开发工具
工欲善其事,必先利其器. 所以一位好的程序员,往往编码效率就更高。而提升编码效率,一般要求熟悉并灵活应用工具.比如Eclipse、IntelliJ IDEA、Maven、Navicat等。熟悉运用这些工具,可以提高开发效率。
我举个例子,比如你熟悉掌握IntelliJ IDEA的快捷键,三两下就把实体类的setter和getter方法生成了,而有些的程序员,还在一行一行慢慢敲。。
3. 日常工作中,总结你踩过的坑
优秀的程序员,之所以优秀,是因为他会总结踩过的坑,避免重蹈覆辙。所以,田螺哥建议你,日常开发中,如果你踩了哪些坑,就需要总结下来.茶余饭后,再温习温习.
比如,你知道:
- Redis分布式锁使用,可能会有哪些坑嘛?
- 线程池使用有哪些坑?
- Java日期处理有哪些坑嘛?
- Arrays.asList使用可能有哪些坑?
如果一时间忘记的话,可以看下我以前的这些文章:
- 细数线程池的10个坑
- Redis分布式锁的10个坑
- Java日常开发的21个坑,你踩过几个?
- 程序员必备:Java日期处理的十个坑
这些都是我工作总结出来的,也希望你们日常开发中,遇到哪些坑,都总结下来哈。
4.工作中,阅读你们系统优秀的代码和设计文档
孔子说,三人行,必有我师。大家平时在看代码的时候,不要总吐槽着项目的烂代码。其实,可以多点关注写得优秀的代码,然后看懂别人为什么这些写,仿造着来写。
当然,一些好的设计文档也是:人家为什么这么设计,好处在哪里,不足又在哪里,如果是你来设计,你如何思考等等。把好的设计,读懂后,记录下来,变成自己的知识.
5.日常工作中,总结一些通用的技术方案
在日常工作中呢,注意整理一些通用的技术方案。
比如幂等设计、分布式锁如何设计、分布式事务设计、接口优化、限流设计、分库分表设计、深分页问题解决等等. 大家可以看下我之前的一些通用方案设计的文章哈:
- 后端思想篇:设计好接口的36个锦囊!
- 我们为什么要分库分表?
- 面试必备:聊聊分布式锁的多种实现!
- 聊聊幂等设计
- 实战!聊聊如何解决MySQL深分页问题
当然,田螺哥也建议你,日常开发中,把自己遇到的一些通用设计方案总结下来,熟悉掌握这些通用技术方案。
6.参与技术讨论,积极技术分享
参与技术讨论和交流,可以有助于你与其他Java开发者分享经验、解决问题和学习新知识。进行技术分享,可以加深自己的理解、建立专业声誉、促进个人成长、为技术社区做贡献等等。
比如你做需求遇到的一些难题,都可以跟有经验的同事、或者技术leader讨论讨论。一些常见的难题,讨论完可以记录下来,然后做技术分享。
7. 主人翁意识,积极攻克项目的难题
作为一名开发工程师,具备主人翁意识并积极攻克项目的难题,是非常重要的。遇到项目中的比较棘手问题时,先不管是谁的问题,我们都要持有主人翁意识,积极主动地找到解决方案并采取行动。
而在找技术解决方案的过程,我们也就成长了。当攻克问题后,你也获得领导的认可,好绩效不远了,一举多得!
8. 思考项目中,哪些可以提升效率
日常开发中,几乎大多数程序员都是在进行增删改查。如何如何避免自己成为平凡的增删改查程序员呢。
我觉得可以这样做:平时工作中,思考项目中,有哪些可以提升的效率。包括熟悉开发工具、掌握适当的调试技巧、熟悉常用框架、持续学习和关注技术发展等等。
比如:
- 好的的debug调试技巧,可以让你快速找到问题
- 再比如一个插件easyyapi可以一键让你快速生成yapi接口文档,而不用一个一个字段手工敲接口文档。
当然,日常开发中,还有很多可以提升效率的技巧/工具,等待我们去发现。
9. 熟悉你的业务,让自己不容易被替代
我们普通程序员,多数都是做业务的。一般工作个五年以上,水平差不了太多。如何避免自己被淘汰呢?我个人建议是,尽量做到熟悉你们做的业务,让自己变得不容易被替代。
10. 多看看你的系统,可能存在哪些问题,如接口耗时、慢SQL等等
一般的系统,多多少少都有些问题。比如接口耗时过长、慢SQL、fullGC频繁等等。
首先需要掌握这些技能,比如如何优化接口,如何优化慢SQL、fullGC如何排查等等。
11. 学以致用,将理论知识应用到实际项目中
很多小伙伴说,看过很多计算机相关的书,阅读过很多博客,背了很多八股文,依然做不好一个系统。
我觉得,大家可以多点思考,把平时积累的东西,应用到实际项目中。背八股文不是没用,你可以把它应用到实际开发中的。比如说,你看了田螺哥的文章,IO模型详解
这个表面看起来就是一个常见的八股文知识点,工作中似乎没用到。但是我在工作中,就用到这种类似的异步思想:
比如发起一笔批量转账,但是批量转账处理比较耗时,这时候后端可以先告知前端转账提交成功,等到结果处理完,再通知前端结果即可。
再比如,你看完田螺哥的:MySQL索引15连问,抗住!,你是不是可以回头看看,你的系统中,那些sql的索引加的是否合理呢?是不是可以思考一下如何优化,对吧。因此,就是要学以致用。
12. 阅读一些优秀框架的源码,如spring、rockectMq等等
如果你有空余的时间,就建议你看看一些优化框架的源码,比如spring、rockectMq等等。
对于spring源码的话,可以按模块来呀,比如aop,控制反转,spring事务等,你先写个demo,然后debug跟踪流程,通过调试器逐步跟踪源码执行过程,观察各个方法的调用关系和数据变化。最好是结合电子书一起,如(Spring源码深度解析这本书一起)
优秀框架的源码,我们可以学习到很多编码思想的,加油。
13. 多编码,少偷懒,养成编程的好习惯
作为程序员,一定要多打代码,不要偷懒,代码敲多了,你就会了。还有就是,少点偷懒,坚持!努力!养成热爱编程的好习惯。
总之,提升技术需要不断学习、实践、总结和积累经验。