日常工作中,经常会有这样的错觉,就是明明感觉参与了不少项目,但是好像技术并没有提升太多。
那原因大概率是,平时工作内容是非核心业务,更多是在CRUD的“打螺丝”。无法接触到核心的优质业务、或者参与到架构设计方面来,导致技术成长缓慢。
那么如何在日常的项目开发中,不断提升自己的技术水平呢?
项目不在多,而在于做一个项目、就吃透一个项目。
那如何吃透一个项目呢?这里我大概思考了几个层面:
- 关注通用的基础架构实现;
- 关注业务代码的优秀实践;
- 关注特殊的异常或场景;
关注通用的基础架构实现
虽然不同的项目、他们的业务领域会有不同,但是向一些基础架构,其实还是类似的。因此,在我们拧完螺丝,不妨关注下这些通用基础的实现。
下面列举一些值得关注的通用模块:
- 模块划分、包结构划分
- 依赖关系
- 配置管理
- 登录认证
- 权限控制
- 任务调度(定时任务)
- 异常全局处理策略
- 链路追踪
- 日志系统
- 代码生成(低代码)
- 网关
- RPC(跨系统)
- 消息中心(队列)
- 缓存
- 持久化(ORM)
- 文件存储
- 监控告警(可观测性)
- 幂等性
- 限流
- 并发安全控制(锁实现)
- 分布式事务
- 国际化(多语言)
- 版本控制(协同方式)
- 多组织
- 分库分表
关注业务代码的优秀实践
不同的项目、虽然业务不甚相同,且由于业务面太广,很难全部掌握,但一般都有它的核心业务。因此,业务代码开发也并不全是CRUD,一些优秀的业务实践,还是值得我们学习的。
下面列举一些值得关注的业务实践:
- 订单业务
- 支付业务
- 状态机方案
- 工作流引擎
- 秒杀业务
- 并发安全相关业务
- 海量数据相关业务
如果我们只满足于自己CRUD开发,那就算参与多个项目,也无异于换了多个地方打螺丝。
因此,不妨在打螺丝的空隙,学习别人怎么造飞机的。
关注特殊的异常或场景
在开发中,可能会有各种各样的BUG,有些是自己遇到的,有些是同事遇到的。而有些BUG可能只会在特殊场景下触发且不好重现,可谓是可遇而不可求。
同时,如果是在生产环境出现,则需要我们有快速排查处理的能力。因此在出现异常时,能否在尽量短的时间内,快速处理解决,也能反映出程序员的价值所在。也可以在后续面试中,这份处理经验也可以作为能力展示的一部分。
因此,在日常工作中,遇到一些不常见的、重大的异常或问题,无论是自己遇到的,还是同事遇到的,不要轻易放过。这也是一个学习的机会、一个积累经验的机会。可以设想一下,如果后续我再遇到同样的问题或场景,我要如何处理应对。
下面列举一些值得关注的异常场景:
- 消息积压
- 重复消费
- RPC调用异常
- 慢SQL
- 死锁
- 服务卡顿、宕机
- Jvm相关问题
关注异常问题、总结处理经验,将不断提升我们处理问题的技术能力。