上个月周会,我让每个人汇报一下用AI编码三个月的感受。
小北第一个发言。他是团队里资历最浅的,毕业刚两年。
“用Cursor之后,以前一天的活,现在半天就写完了。”
我点点头,心里挺高兴。
接下来阿杰说。他是前端senior,干了八年。
“说实话,我觉得用AI之后,反而更慢了。”
会议室安静了几秒。
我没急着说话,但心里愣了一下。
更慢了?
━━━━━━━━━━━━━━━
两种不同的”快”
会后我分别找了他们聊,才发现两个人说的完全不是一回事。
先说小北。
他说的”半天写完”,我后来仔细看了他的提交记录。确实,用AI生成一个CRUD接口,从写到测,原来一天,现在三小时。
但review的时候,问题一堆。
有一次他写了一个周测回调接口。功能看起来都对:收到提交、自动评分、返回结果。代码结构也很规整,变量命名规范,注释也写了。
但我看代码的时候,发现异常处理是AI默认生成的——try-catch 打了个日志,就没了。
没有重试机制。如果网络抖动导致回调失败,学生的成绩就丢了,家长和学生都会找过来。
没有幂等校验。如果平台重复发送回调,同一个试卷可能被评分多次,成绩就对不上了。
没有对账补偿。如果处理到一半服务挂了,没有机制保证最终一致性,后面还得人工核对。
我问他:”如果网络抖动,回调失败了怎么办?”
小北愣了一下:”AI没给我生成这个。”
我说:”AI不知道咱们的业务场景,这些得你自己想。”
他点点头,但眼神有点茫然。我能看出来,这些东西他之前没考虑过,AI没给,他也没想到要问。
后来这个接口改了两轮才过。小北用AI写花了四十分钟,改了两轮加起来两个半小时。其实没快多少。
更严重的是,review他的代码时我发现,他对业务逻辑的理解停留在表面。AI生成了一个”看起来对”的代码,他就以为真的对了。
━━━━━━━━━━━━━━━
senior 的”慢”
阿杰那边完全不同。
他是senior,用AI的方式跟小北完全不一样。
他跟我说:”我以前写一个在线测评专用键盘,自己写两小时。现在用AI生成,我得花一小时改,改完还得花四十分钟验证。算下来没快多少。”
我问他:”那你为什么还要用?”
他说了一句让我印象很深的话:”因为AI写的样板代码比我自己写的还规矩,我省下来的不是写代码的时间,是不用动脑子写重复代码的精力。”
他举了个例子。
之前写一套完整的表单验证,要处理必填、格式、联动、错误提示,各种正则来回写,写得烦死了。现在AI十秒钟生成,他改改业务逻辑就行。
省下来的精力,他用来想架构怎么设计更合理,接口怎么定义更清楚,边界条件怎么覆盖更完整。
这就是关键差异。小北用AI是为了”省掉写的步骤”,阿杰用AI是为了”跳过不需要思考的步骤”。前者容易过度依赖,后者知道哪些可以依赖、哪些不能。
阿杰跟我说,他看AI代码的时候,会特别关注几个点:异常处理是否完整、边界条件是否覆盖、性能是否有隐患、安全是否有漏洞。这些地方AI经常”看起来对,实际上坑”。
━━━━━━━━━━━━━━━
我担心的不是现在,是以后
聊完之后,我发现两个人用AI的心态完全不一样。
小北是:AI给了代码,他看看差不多,就提交了。
阿杰是:AI给了代码,他知道哪里可能会坑,逐行检查。
这个差异让我有点担心。我担心的是,小北这类 junior 用AI用多了之后,学习能力会不会退化。
以前写SQL,要查文档、试各种写法、踩坑。踩多了就知道什么情况下会慢,什么情况下会锁表,什么情况下要加索引。
现在直接问AI,AI给了答案就用,跳过了踩坑的过程。
短期看是快了,长期看,那些坑他没踩过,下次遇到了还是不知道。
有一次我故意让小北手写一个多表关联,不用AI。他写了二十分钟,语法没错,但性能明显有问题。我问他知道这个写法数据量大了会卡吗?他说以前用AI写的,没考虑过这个。
我心里沉了一下。
我跟阿杰聊这个事。他说:”这很正常。我当年也是踩了无数坑才学会看执行计划的。 junior 跳过了这个过程,以后出问题的时候,他可能连问题在哪都定位不了。”
我问他怎么办。他说:”不能不让 junior 用AI,但得让他们知道,AI给的答案只是起点,不是终点。”
我觉得他说得对。
━━━━━━━━━━━━━━━
我现在的做法
后来我调整了团队的用法。
跟小北这样的 junior,我提了两个要求。
第一,核心模块必须自己先写一版,写完再用AI生成一版,两版对比。
不是让你抄AI的,是让你看看AI是怎么处理边界条件的,你自己漏了什么。
比如写一个用户注册接口,你先自己写,考虑哪些字段必填、密码怎么加密、重复注册怎么处理。写完再用AI生成一版,看看AI还考虑了哪些你没考虑到的东西。
这个过程中,你学到的不是”AI怎么写”,而是”我还漏了什么”。
第二,用AI生成的代码,必须能解释清楚每一行是干嘛的。
不能跟我说”这是AI写的,我也不太清楚”。不清楚就说明你没看懂,没看懂就不能提交。
小北一开始有点抵触:”那用AI还有啥意义?”
我说:”AI是帮你省掉写重复代码的时间,不是帮你省掉思考的时间。”
他试了一周之后跟我说:”现在确实慢了一点,但心里踏实多了。”
━━━━━━━━━━━━━━━
对阿杰这样的 senior,我的要求不一样。
我让他把用AI省下来的时间,花在更有价值的事情上。
技术方案评审、新人代码review、架构优化、技术选型调研。不是让他闲着,是让他做 junior 做不了的事。
阿杰说:”其实我挺乐意的。以前被CRUD绑死了,现在终于有时间想点正经事了。”
━━━━━━━━━━━━━━━
这个平衡我还在摸索
做了这些调整之后,团队的状态好了不少。
junior 提交代码的质量上去了,虽然写得没那么快,但review通过率明显高了。更重要的是,他们开始主动思考”这里有没有漏掉什么”,而不是”AI给的应该没问题”。
senior 的时间分配也更合理,架构层面的事情有人盯了,新人成长也快了一些。
但说实话,这个平衡我还在摸索。AI编码普及才半年多,谁都没经验。
我现在的感觉是,AI对 junior 来说是辆快车,但得学会自己看路,不能闭着眼睛让AI开。对 senior 来说,AI是个助手,帮你处理杂事,让你专注在真正重要的事情上。
这个分界线怎么划,我还在试。
━━━━━━━━━━━━━━━
你们团队里, junior 和 senior 用AI的方式一样吗?有没有遇到过类似的问题?评论区聊聊。
夜雨聆风