五年开发复盘:从会写功能到能交付系统
2021 年毕业到现在,开发工作的重心已经从“把一个功能写出来”逐渐变成“让一套系统能上线、能维护、出问题能恢复”。Java + Vue 的三年经验建立了业务开发和工程协作基础,后来把主攻方向转向 Go,则进一步逼着自己理解并发、服务边界和运行时成本。
第一阶段:先把需求完整交付
刚进入开发工作时,最直接的衡量标准是功能是否符合需求。用户、角色、菜单、文件、订单这些模块看起来独立,真正做完才会遇到权限回显、事务边界、异常提示、浏览器兼容和部署配置等细节。
这阶段最重要的收获不是掌握多少框架 API,而是形成闭环:理解需求、设计数据、实现接口、完成页面、联调、测试、部署和处理反馈。只负责链路中的一小段,很难理解一个“简单修改”为何会影响其他模块。
第二阶段:从业务代码走向工程边界
项目变大后,重复代码和隐式约定会迅速增加。开始关注:
- 公共能力是否真正有稳定接口,而不是复制粘贴。
- 默认值、校验和权限是在后端兜底,还是只依赖前端。
- 文件、通知、认证等能力是否能独立演进。
- 日志能否回答谁、在何时、对什么做了什么。
- 数据迁移是否可回退,旧数据是否被保护。
抽象并不是层数越多越好。只有当多个业务真的共享同一规则,并且变化方向一致时,封装才会降低成本。过早统一会把简单流程变复杂,太晚统一又会让修复分散在许多副本中。
第三阶段:主攻 Go 与服务可靠性
Go 的语法不复杂,难点在于对并发生命周期和资源上限负责。Goroutine 很轻,但泄漏仍会积累;Channel 很方便,但所有权不清就会阻塞;Context 能取消调用,但中途换成 Background 就会切断链路。
真正有价值的能力包括:
- 用 Deadline、背压和协程组管理并发。
- 用 pprof、Trace 和指标定位性能,而不是猜。
- 设计 gRPC/HTTP 边界和可恢复的错误语义。
- 用 MySQL、Redis、RabbitMQ 构建可靠状态流转。
- 让 Docker 部署具备健康检查、资源限制和备份恢复。
全栈经历仍然重要
主攻 Go 不代表前端经验失去价值。Vue 页面是否流畅、表单是否合理、错误能否恢复,会反过来影响 API 设计。团队具备 UniApp 与 Flutter 能力后,PC、小程序和 App 的身份、文件与通知协议也需要从一开始保持一致。
后端工程师理解真实交互,前端工程师理解数据与权限边界,协作成本会明显降低。
AI Agent 带来的新变化
Codex、Claude、Hermes 等工具已经能参与搜索、编码、测试和运维,但前提是给它清晰上下文、受限工具和可验证结果。Agent 不能替代工程判断,它更像一个速度很快但必须被约束和验收的协作者。
接下来值得继续投入的是:可复用 Skill、工具协议、任务记忆、评测集、权限边界,以及把 AI 真正接入研发流程,而不是只用来生成一段代码。
五年后更看重什么
现在判断一项技术,不再只看它能不能实现,而会看故障模式、迁移成本、可观测性和团队是否能维护。能写出代码只是起点;能在需求变化和线上异常中保持系统可控,才是长期能力。
下一阶段
后续仍会以 Go + Vue 为主线,继续深入高并发服务、微服务通信、数据与消息可靠性,同时把 Java + Vue 的业务工程经验保留下来。在 Agent 方向,更关注能落地的工具链、评测与自动化,而不是单纯追逐模型参数。技术栈会变化,但清晰边界、可靠数据和可验证交付不会过时。

评论
0 条讨论