$kernelink route --hydrate --safe

页面加载 /
跳到正文
auth://account/session

登录工作区

使用 Emlog 账户继续访问你的内容与互动记录。

忘记密码?

打开 Emlog 原生登录页

2371.md
workspace / posts
~/posts/2371.md 阅读中

基层程序员薪资涨幅长期跑不赢物价通胀

基层程序员薪资涨幅长期跑不赢物价通胀

周五晚上,老周把工资条甩到群里。2021 年他月薪 12k,现在 13.5k。房租从 1800 涨到 2600,猪脚饭从 15 涨到 22,通勤地铁一个月多花 80。他说:“我不是没涨薪,是涨薪跑不过楼下快餐店。”

这话扎心。基层程序员的薪资涨幅跑不赢物价通胀,靠熬时长、拼加班,很难把缺口补回来。你能控制的,是单位时间产出。AI 编程工具像 Cursor,已经能帮后端和全栈工程师省下大量体力活,但前提是你会用。

我见过两类误区。

第一类,把 Cursor 当自动写代码机器。输入“帮我写个支付模块”,然后等它吐出一大段。结果 API 是幻觉,包版本对不上,原有工程被改得七零八落。

第二类,觉得 AI 生成的代码只要跑起来就能上线。编译通过、测试绿色,就敢提交。后面发现测试只测了 happy path,边界和并发全漏。

下面这些技巧,来自我和团队在真实项目里踩坑后的整理。目标很直接:让 AI 变成可控产能,而不是随机 bug 生成器。

一、高效实战技巧:把 AI 变成可控产能

1. 先喂工程上下文,再让它动手

很多人上来就提问,AI 只能靠猜。项目是 Spring Boot 2.7 还是 3.2,MyBatis 还是 JPA,包管理用 Maven 还是 pnpm,它不知道。猜错一次,你就要花半小时修。

操作步骤:

  • 在项目根目录建 .cursorrules,写清技术栈、包管理、命名规范、禁止改公共接口、测试框架。
  • 用 @Codebase 或 @Files 指定相关文件,别让全库扫描。上下文越干净,幻觉越少。
  • 要求 AI 先输出改动计划:改哪些文件、为什么、风险点。你确认后再写代码。
  • 要求它以 unified diff 形式返回,最小改动。别接受“全文件重写”。

真实案例:我们做订单取消退款。第一次让 AI 自由发挥,它新增了一个重复的 RefundService,还改了状态枚举,把“已取消”和“退款中”混在一起。后来限定只改 OrderCancelService、RefundClient 和对应测试,并在规则里写“公共接口不可变”,AI 才给出可 review 的 diff。

【金句:AI 编程的上限,取决于你给它的上下文和验收标准,不取决于你敲回车的手速。】

2. 测试先行:让 AI 写失败测试,再写实现

AI 写实现很快,写测试也快。问题在于,它容易写出“看起来对”的测试。你要让它先写测试,并且确认测试失败,再写实现。

操作步骤:

  • 用自然语言描述输入、输出、异常、边界。
  • 让 AI 先只写测试,运行并确认失败。
  • 再让它写实现,只改到测试通过。
  • 你人工补并发、幂等、回滚测试。AI 经常漏这些。

真实案例:支付回调签名验证。AI 第一版实现能过单次回调,但没考虑重复通知。我们让它先写“同一 tradeNo 重复回调只加一次积分”的测试,测试失败,它才去查数据库唯一索引和状态机。这个顺序省掉了上线后的对账事故。

【金句:让 AI 先写失败测试,等于给它画好跑道,它才不会带着你冲下悬崖。】

3. 三明治提示词:上下文、目标、验收标准

提示词散乱,AI 就自由发挥。我常用三明治结构,直接照搬:


上下文:Spring Boot 3.2 + Java 17 + MyBatis-Plus,相关文件 @PaymentCallbackService.java @PaymentCallbackMapper.xml。
目标:同一 tradeNo 重复回调只处理一次,保留旧日志。
验收:单测覆盖首次回调、重复回调、并发回调、异常回滚;不改公共接口;输出 diff 和运行命令。
限制:
收藏 0
手机扫码阅读

微信或手机浏览器扫一扫,随时随地随心阅读与分享

comments.cmd 可写入
guest@kernelink:~/posts/2371$ comment --compose
identity.env 访客信息
插入 访客会话 Text + UBB · UTF-8 · LF 0 字符