1. 为什么“AI副业”这条路对工程师来说是个伪命题
先把结论摆在前面:过去大半年,我身边至少有二十个工程师朋友问过我同一个问题——“现在搞AI副业还来得及吗?”我的回答一直是同一句:你真正该花时间的地方,不是拿AI去搞副业,而是把AI Coding变成你日常工作的默认姿势。
这个判断不是拍脑袋来的。我见过太多人一头扎进“AI副业”的坑里:花几千块买课,学怎么用AI批量生成图文、怎么搭一个套壳对话站、怎么搞所谓的“AI智富通”式流量变现。折腾两三个月,钱没赚到多少,本职工作反而生疏了。更关键的是,这些所谓的副业玩法,门槛低到任何人都能做,意味着它没有任何护城河,今天你能做,明天隔壁非技术背景的人也能做,价格战一打,利润直接归零。
而AI Coding完全是另一回事。它是把AI当作生产力杠杆,直接作用在你最值钱的能力上——写代码、做设计、排查问题、搭系统。一个Java开发工程师用AI Coding把日常CRUD和单元测试的效率提上去,一个算法工程师用AI辅助做实验管理和论文复现,一个运维工程师用AI Agent处理告警和日志分析,这些带来的价值是实打实落在你的岗位产出上的。你的产出变多了、质量变高了、加班变少了,这在职场里就是最硬的通货。
所以这篇文章我想聊的不是“怎么用AI赚钱”,而是一个工程师到底该怎么把AI Coding真正用起来。我会从认知、工具选型、实操流程、踩坑经验几个角度展开,尽量把我知道的、试过的、踩过的都摊开讲。适合的读者是:有编程基础、想提升日常开发效率、对AI工具有兴趣但还没找到正确打开方式的工程师,不管你是Java、算法、硬件、运维还是测试方向,底层逻辑是相通的。
提示:本文讨论的所有工具和方法,都聚焦在提升个人和团队的研发效率上,不涉及任何流量变现、内容搬运之类的玩法。方向选对了,努力才有复利。
2. AI Coding到底改变了什么:从补全到Agent的四个层次
很多人对AI Coding的理解还停留在“代码补全”这个层面,觉得无非就是IDE里多了一个会猜下一行的插件。这个认知已经严重落后了。我把它拆成四个层次,你可以对照一下自己现在处在哪一层。
2.1 第一层:行级与块级补全
这是最基础的形态,代表就是各种IDE里的代码补全插件。你在写一个for循环,它帮你补全循环体;你写了一个函数签名,它帮你把函数体填上。这一层的价值在于减少机械敲键盘的时间,但它不理解你的业务意图,经常补出看起来对、实际跑不通的代码。
我实测下来的感受是:这一层对写样板代码帮助最大,比如getter/setter、DTO转换、简单的工具函数。但如果你指望它帮你写核心业务逻辑,大概率要返工。所以这一层正确的用法是“让它干脏活累活”,把重复性的代码交给它,你的脑子留给真正需要思考的部分。
2.2 第二层:对话式生成与重构
这一层就是大家熟悉的ChatGPT、DeepSeek这类对话式AI。你把一段代码贴进去,让它解释、重构、找bug、写测试。它的价值在于充当一个随时在线的结对伙伴,你不需要等同事有空,随时可以问。
但这一层有个巨大的陷阱:上下文丢失。你在对话窗口里聊了半小时,它可能已经忘了你前面说的约束条件。而且你贴代码进去、复制代码出来,这个来回本身就是一种摩擦。我见过有人把整个项目的代码一段段贴进去问,效率反而更低。正确的用法是聚焦在单个函数、单个类、单个问题上,一次解决一个明确的点。
2.3 第三层:项目级上下文感知
到了这一层,工具开始能读取你整个项目的结构、依赖、配置文件,理解你的代码风格和架构约定。它不再是一个孤立的对话框,而是嵌在你的项目里。你让它改一个接口,它会自动去看调用方、看类型定义、看测试用例,然后给出一个能直接用的改动。
这一层是我认为普通工程师最应该重点投入的地方。因为它把AI从“玩具”变成了“工具”。你不需要改变自己的工作流,它就在你的编辑器里、在你的终端里,你该干嘛干嘛,它在你需要的时候给出符合项目规范的输出。
2.4 第四层:Agent式自主执行
最高的一层是Agent。你给它一个任务描述,它自己去读代码、改代码、跑测试、看报错、再改,循环直到任务完成。代表就是各种命令行形态的coding agent。这一层的特点是从“辅助”变成了“代理”,你从执行者变成了审核者。
但我要泼一盆冷水:这一层目前还远没有到可以放手不管的程度。我试过让Agent独立完成一个中等复杂度的功能,结果它在某个边界条件上卡住,反复改了七八轮都没对,最后还是我手动介入。所以现阶段Agent的正确用法是处理边界清晰、验证手段明确的任务,比如“给这个模块补全单元测试并保证覆盖率达标”“把这个函数的错误处理改成统一格式”,而不是“帮我实现一个完整的订单系统”。
把这四层想清楚,你就知道自己该往哪个方向使劲了。我的建议是:先把第二层和第三层用熟,再谨慎尝试第四层。跳过基础直接上Agent,就像没学会走就想跑。
3. 工具选型:别追新,追“顺手”
工具这块我踩过的坑最多,因为新工具实在太多了,隔三差五就冒出一个“颠覆性”的。我现在的原则很简单:工具是拿来用的,不是拿来供的。选工具只看三个维度——它能不能嵌进我现有的工作流、它的上下文理解够不够准、它的输出我能不能快速验证。
3.1 编辑器内嵌型:日常主力
这类工具直接装在IDE里,你写代码的时候它就在旁边。优点是零切换成本,你不需要离开编辑器。缺点是能力受限于IDE的插件生态,复杂任务处理起来吃力。
我日常用得最多的是这类。选它的标准是:补全要快、要准,不能在我打字的时候卡顿;对话要能引用当前文件和选中代码;重构建议要能一键应用。实测下来,响应速度和上下文准确度是拉开差距的关键,花哨的功能反而次要。一个补全准确率80%但响应飞快的工具,比一个准确率90%但每次卡两秒的工具好用得多。
3.2 命令行Agent型:处理批量任务
这类工具在终端里跑,适合处理“一次性要改很多文件”的任务。比如批量重命名、批量加日志、批量改接口签名。它的优势是可以脚本化、可以批处理,你描述清楚任务,它自己去执行。
但用这类工具有个前提:你的项目必须有版本控制,而且你得随时能回滚。我吃过亏,有一次让Agent批量改一个模块的错误处理,它改是改了,但顺手把几个不该动的文件也动了,幸好我提交前看了一眼diff。从那以后我的习惯是:Agent执行前先commit,执行后先看diff再决定要不要。这个习惯救过我好几次。
3.3 对话式大模型:攻坚和答疑
遇到复杂问题、需要深入讨论的时候,我还是会打开对话式大模型。它的优势是知识面广、能陪你反复推敲。比如你在设计一个复杂的并发方案,可以把几种思路都丢给它,让它帮你分析各自的取舍。
用这类工具我的心得是:问题要问得具体,约束要给得清楚。不要问“怎么优化这段代码”,要问“这段代码在QPS 5000的场景下,数据库连接池是瓶颈,在不引入新中间件的前提下怎么优化”。约束越明确,它的回答越有价值。
3.4 选型对比表
| 类型 | 典型场景 | 优势 | 主要坑点 | 我的使用频率 |
|---|---|---|---|---|
| 编辑器内嵌 | 日常编码、补全、小重构 | 零切换、响应快 | 复杂任务能力弱 | 每天 |
| 命令行Agent | 批量修改、脚本化任务 | 可批处理、自动化 | 容易改多、需回滚 | 每周几次 |
| 对话式大模型 | 方案设计、疑难排查 | 知识广、可深聊 | 上下文易丢、需手动搬运 | 每周几次 |
这张表不是让你照抄,而是给你一个判断框架。你的工作流里哪个环节最耗时,就优先在那个环节上工具。不要因为某个工具火就去用,要因为它解决了你的具体问题才去用。
4. 把AI Coding嵌进日常:一套可复制的实操流程
光说理念没用,我把自己每天的工作流拆开,给你看看AI Coding具体是怎么嵌进去的。这套流程我用了大半年,迭代了好几版,现在算是比较顺手了。
4.1 需求理解阶段:先让AI帮你把问题问清楚
很多人拿到需求就开始写代码,写到一半发现理解错了,返工。我的做法是:拿到需求先不写代码,把需求描述丢给AI,让它帮我列出所有需要澄清的点。
比如产品说“做一个用户积分系统”,我会让AI列出:积分的获取规则是什么、有没有上限、过期策略是什么、并发扣减怎么处理、对账怎么做。它列出来的问题,往往比我一个人想的全。然后我拿着这些问题去跟产品对齐,一次问清楚,避免来回扯皮。
这一步的价值在于把返工成本前置。写代码之前多花十分钟澄清,比写完再改省几个小时。
4.2 设计阶段:让AI当你的“反方辩友”
方案设计的时候,我习惯把初步思路讲给AI听,然后让它专门挑毛病。我会明确说:“不要夸我,只告诉我这个方案在什么情况下会出问题。”
这个用法特别有效。因为人天生有确认偏误,自己想出来的方案总觉得没问题。AI没有这个包袱,它会从各种角度挑刺:边界条件、并发场景、数据一致性、扩展性。它挑出来的问题不一定都对,但能逼你把方案想得更周全。
我印象最深的一次,我设计了一个用本地缓存扛读流量的方案,AI提醒我“缓存和数据库的一致性窗口期内,如果有写操作会读到脏数据”。这个问题我当时确实没考虑到,后来加了版本号校验才解决。
4.3 编码阶段:小步快跑,边写边验
编码阶段我用AI的方式是小步快跑。不是让它一次生成一大段,而是让它生成一个小块,我立刻验证,验证通过再继续。
具体操作是:我先写好函数签名和注释,描述清楚这个函数要干什么、输入输出是什么、有什么约束。然后让AI填充实现。填充完我立刻跑测试,不对就让它改,改完再跑。这个循环很快,通常几分钟就能搞定一个函数。
注意:千万不要让AI一次生成几百行代码然后直接提交。生成的代码越多,你审查的负担越重,出问题的概率越大。小块生成、即时验证是铁律。
4.4 测试阶段:让AI写测试,但你要审断言
写单元测试是AI特别擅长的活,因为它有明确的输入输出,验证标准清晰。我通常让AI根据函数实现生成测试用例,覆盖正常路径、边界条件、异常路径。
但这里有个坑:AI写的测试,断言可能是错的。它会根据自己理解的“正确行为”来写断言,如果它的理解有偏差,测试就会“通过”但实际是错的。所以我的习惯是:AI生成测试后,我重点看断言部分,确认每个断言表达的是我想要的预期行为,而不是AI以为的行为。
4.5 排查阶段:把报错和上下文一起给AI
线上出问题的时候,AI能帮上大忙,但前提是你给的信息要全。我的做法是:把完整的报错栈、相关的代码片段、出问题前的操作步骤,一起打包给AI。
只给一个报错信息,AI只能猜。给全上下文,它才能定位。我实测下来,带着完整上下文问AI,定位问题的准确率能到七八成,剩下两三成需要我自己结合业务知识判断。
4.6 一套流程的节奏感
把这五步串起来,你会发现一个节奏:理解→设计→编码→测试→排查,每个环节AI都在,但角色不同。理解阶段它是提问者,设计阶段它是反方,编码阶段它是执行者,测试阶段它是检查员,排查阶段它是侦探。
这个节奏感很重要。很多人用AI效率不高,就是因为在所有环节都用同一种方式——都是“你帮我写”。正确的做法是根据环节切换AI的角色,让它在该提问的时候提问,该挑刺的时候挑刺。
5. 那些没人告诉你的坑:我踩过的五个真实教训
前面讲的都是“应该怎么做”,这一节讲讲“我怎么做错的”。这些坑都是我实打实踩过的,写出来希望你能绕过去。
5.1 坑一:过度信任AI生成的代码
刚用AI Coding的时候,我特别兴奋,觉得终于可以躺平了。有一次让AI生成一个数据同步的逻辑,它写得有模有样,我扫了一眼觉得没问题就提交了。结果上线第二天就出问题——它在处理空集合的时候没有做判断,直接抛异常了。
这个坑的本质是:AI生成的代码,看起来越“顺眼”,你越容易放松警惕。因为它写得很规范、注释很全、命名很讲究,你会下意识觉得“这么规范的代码应该没问题”。但规范不等于正确,它可能只是把错误藏得更深了。
从那以后我的原则是:AI生成的每一行代码,我都要能解释它为什么这么写。解释不了的,要么去搞懂,要么重写。绝不提交自己看不懂的代码。
5.2 坑二:上下文给太少,AI开始“编”
有一次我让AI帮我改一个接口,只贴了接口定义,没贴调用方。它改完之后,调用方全报错了——因为它不知道调用方传的参数是什么类型,自己猜了一个。
这个坑的教训是:AI不知道的东西,它不会说“我不知道”,它会猜。而且它猜得很有自信,让你以为它知道。所以给上下文的时候,宁可多给,不要少给。相关的类型定义、调用方代码、配置文件,能贴就贴。
5.3 坑三:让AI做它不擅长的架构决策
我曾经让AI帮我决定“这个模块该用哪种设计模式”。它给了我一个看起来很专业的答案,推荐用某种模式。我照着做了,结果发现这个模式在我们的场景下过度设计了,增加了大量不必要的抽象。
AI擅长的是在明确约束下给出方案,不擅长的是判断约束本身是否合理。架构决策涉及大量的业务背景、团队能力、历史包袱,这些AI都不了解。所以架构层面的事,AI可以当参考,但决策必须你自己做。
5.4 坑四:忽略了AI的“知识截止”
AI的训练数据是有时间截止的。如果你用的框架、库、API在那之后有重大变更,AI给的代码可能就是过时的。我踩过一次,用了一个新版本的库,AI给的用法还是旧版本的,跑起来直接报错。
这个坑的应对方法是:涉及具体版本、具体API的地方,一定要查官方文档确认。把AI当“有经验的同事”,而不是“权威文档”。同事可能记错,文档不会。
5.5 坑五:把AI当搜索引擎用
有一段时间我什么问题都问AI,包括“这个报错是什么意思”“这个函数在哪个文件里”。后来发现,有些问题用传统方式解决更快。比如查函数定义,IDE的跳转功能一秒就到位,问AI反而要等它生成回答。
AI不是万能的,它有它擅长的场景。明确的问题、需要推理的问题、需要生成的问题,找AI。查找、跳转、格式化这类机械操作,用工具本身的功能。别为了用AI而用AI。
6. 不同岗位的工程师,AI Coding的切入点不一样
前面讲的偏通用,但不同岗位的工程师,日常工作的痛点不一样,AI Coding的切入点也应该不一样。我按几个常见岗位分别说说。
6.1 Java开发工程师:从CRUD和测试入手
Java开发日常大量的工作是CRUD、DTO转换、单元测试。这些恰恰是AI最擅长的。我的建议是:先把单元测试的生成交给AI,因为测试有明确的验证标准,AI写错了你跑一下就知道。等测试用顺了,再把简单的CRUD也交给它。
面试题里常考的并发、JVM调优这些,AI可以帮你梳理知识点,但真正的实战经验还得自己积累。AI能告诉你“用什么”,但“为什么用这个”和“什么场景下不适用”,需要你自己的判断。
6.2 算法工程师:实验管理和论文复现
算法工程师的痛点不在写代码本身,而在实验管理和论文复现。AI在这两块能帮大忙。比如让AI帮你把实验配置、超参数、结果整理成结构化文档,或者帮你理解一篇论文的核心创新点、复现步骤。
但算法工程师要特别注意:AI对数学推导的理解可能不靠谱。涉及公式推导、理论证明的地方,AI给的答案要自己验证。它可能把符号搞混,或者跳步跳得你看不懂。
6.3 运维工程师:告警分析和脚本生成
运维的日常是处理告警、写脚本、排查故障。AI在告警根因分析和脚本生成上特别有用。把告警信息、相关日志、最近的变更记录一起给AI,它能帮你快速缩小排查范围。
写运维脚本也是AI的强项,尤其是那些一次性的、逻辑不复杂的脚本。但涉及生产环境的操作,AI生成的脚本必须先在小环境验证,确认无误再上生产。这个红线不能破。
6.4 测试开发工程师:用例设计和自动化
测试开发的核心是设计覆盖全面的用例、维护自动化框架。AI在用例设计上能帮你查漏补缺,尤其是边界条件和异常路径,它列得比人全。自动化脚本的编写也是它的强项。
但测试开发要警惕一点:AI设计的用例,可能遗漏业务特有的场景。它懂通用的测试理论,但不懂你们业务的特殊性。所以AI设计的用例是起点,不是终点,你需要在此基础上补充业务相关的场景。
6.5 硬件与嵌入式工程师:文档处理和代码生成
硬件和嵌入式方向的工程师,日常要读大量芯片手册、写寄存器配置代码。AI在手册信息提取和配置代码生成上有帮助,但要注意:硬件相关的代码,一个位错就是灾难。AI生成的寄存器配置,必须逐位对照手册确认。
嵌入式方向的vibe coding,我的建议是谨慎再谨慎。因为硬件调试的成本远高于软件,软件改错了重新编译就行,硬件改错了可能要重新流片。AI可以帮你写框架代码,但涉及硬件时序、电气特性的部分,必须人工把关。
7. 关于“多AI协作”和提示词的一些实战心得
最后聊聊两个热门话题:多AI协作和提示词。这两个词被炒得很热,但实际用起来,我的感受和主流说法不太一样。
7.1 多AI协作:大多数场景下是伪需求
“多AI协作”听起来很酷——让一个AI写代码,另一个AI审查,第三个AI测试。但我实测下来,大多数场景下这是伪需求。因为AI之间的协作需要大量的上下文传递,而上下文传递本身就有损耗。你让AI A写代码,再把代码和需求一起给AI B审查,AI B拿到的信息已经比AI A少了,审查质量自然下降。
真正需要多AI协作的场景是任务本身可以清晰拆分的时候。比如一个任务分前端和后端,前端交给一个AI,后端交给另一个AI,最后人工集成。这种拆分是任务维度的,不是“审查”维度的。
所以我的建议是:先把单AI用透,再考虑多AI。单AI都没用明白,多AI只会让你更乱。
7.2 提示词:结构比辞藻重要
网上流传很多“神级提示词”,写得花里胡哨。但我用下来发现,提示词的核心是结构,不是辞藻。一个好的提示词应该包含:任务描述、输入、输出格式、约束条件、示例。把这五块写清楚,比堆砌形容词有用得多。
我常用的一个模板是这样的:
任务:把下面的函数重构为使用策略模式 输入:[函数代码] 输出:重构后的代码 + 改动说明 约束:不改变函数签名,不引入新的外部依赖 示例:[一个简单的重构示例]这个模板不华丽,但每次都能得到可用的结果。因为它把AI需要的信息都给全了,AI不需要猜。
7.3 一个反直觉的结论
用了这么久AI Coding,我最反直觉的一个结论是:AI越强,你自己的基础能力越重要。因为AI能帮你写代码,但判断代码对不对、好不好、合不合适,靠的是你自己的功底。AI把执行的门槛降低了,但把判断的门槛提高了。
所以那些说“AI时代不用学编程了”的说法,我完全不认同。恰恰相反,AI时代,懂原理、能判断的工程师,价值会被放大。因为AI能放大你的产出,但放大的方向对不对,取决于你的判断力。
8. 我现在的日常:一个普通工作日的AI Coding实录
说了这么多理念和方法,最后给你看看我真实的一天是怎么过的,让你有个具体的感知。
早上到公司,先花十分钟看昨天的代码提交和今天的任务。把今天的任务描述丢给AI,让它帮我列出需要澄清的点,然后去找相关同事对齐。这一步通常花二十分钟,但能省掉后面可能几个小时的返工。
对齐完开始设计。把方案讲给AI听,让它挑毛病。它挑出来的问题我逐条判断,该改的改,该忽略的忽略。这一步大概半小时。
设计定了开始编码。我写函数签名和注释,AI填实现,我跑测试。一个函数通常五到十分钟搞定。中间遇到不确定的API用法,切到对话式AI问一下,确认了再继续。
下午写测试。让AI根据实现生成测试用例,我重点审断言。审完跑一遍,覆盖率达标就提交。
下班前如果有线上问题,把报错和上下文打包给AI,让它帮我定位。定位到了自己修,定位不到就带着AI的分析去找相关同事。
这一天下来,我的实际编码时间可能只有以前的一半,但产出反而更多了。省下来的时间,我用来读源码、看论文、跟同事讨论方案。AI Coding不是让你变懒,是让你把时间花在更值钱的地方。
提示:这套流程不是标准答案,你需要根据自己的岗位和项目特点调整。核心是找到那个“AI帮你省时间、你帮AI把关”的平衡点。
9. 给还在观望的工程师的几句实在话
如果你现在还没开始用AI Coding,或者用了但觉得没啥效果,我想说几句实在的。
第一,别等“准备好了”再开始。AI Coding这东西,看一百篇教程不如自己动手写一天。找个你熟悉的小项目,装上工具,从写测试开始,边用边摸索。
第二,别追求“全自动”。现阶段AI Coding的定位是“副驾驶”,不是“自动驾驶”。你的手要放在方向盘上,随时准备接管。指望它全自动,你会失望。
第三,别把时间花在追新工具上。工具够用就行,重要的是把工作流跑通。我见过有人一个月换了五个工具,每个都浅尝辄止,最后哪个都没用明白。
第四,基础能力不能丢。AI能帮你写代码,但排查线上问题、做架构决策、跟产品对齐需求,这些还得靠你自己。AI是杠杆,你的能力是支点,支点不稳,杠杆再长也没用。
第五,也是最重要的:把AI Coding当成你本职工作的一部分,而不是额外要学的东西。它不是一个新技能,而是你现有技能的一个放大器。你本来就在写代码,现在只是换了个更高效的方式写。心态摆正了,用起来就顺了。
至于那些“AI副业”“AI智富通”之类的玩法,我的态度很明确:工程师最值钱的资产是你的专业能力,把AI用在放大这个能力上,回报率远高于任何副业。你花三个月研究怎么用AI搞流量,不如花三个月把AI Coding用熟,后者带来的职场复利,是前者比不了的。
我在实际使用中最大的体会是:AI Coding真正改变的不是我写代码的速度,而是我思考问题的方式。以前我拿到任务想的是“怎么实现”,现在我想的是“怎么描述清楚让AI实现,以及怎么验证它实现得对”。这个思维转变,比任何工具都值钱。