ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

AI时代开发者转型:从执行者到问题定义者

AI时代开发者转型:从执行者到问题定义者 这几天我一直在想一个采访标题“I feel like I dug my own grave”。一位在 AI 转型浪潮中被边缘化的技术工作者用这样一句话形容自己的处境。这句话放在今天的开发者圈子里其实很有共鸣。过去几年我们亲手搭建自动化流水线、引入 AI 编程助手、推动团队流程标准化结果发现这些工作一边在提升研发效率一边也在压缩“纯执行型人力”的生存空间。于是很多人开始问我是不是也在给自己挖坑本文不打算贩卖焦虑也不想去讨论“AI 会不会取代程序员”这种宏大的口号。我会从技术人的实际处境出发分析哪些能力正在被 AI 快速替代哪些能力反而是未来几年最重要的护城河并且给出具体的技术学习路径、代码示例和工程建议。希望这篇文章能帮你从一个“AI 转型中被影响的人”变成“主动使用 AI 解决问题的人”。1. AI 转型焦虑的本质那些“亲手挖坑”的人在怕什么1.1 一个正在发生的现象体力型脑力劳动被压缩先看一个很常见的场景。以前写一个数据报表接口需要熟悉 SQL、熟悉业务表结构、写一堆 CRUD 代码、再配合前端联调。现在呢AI 编程助手可以几秒钟生成一份可运行的 CRUD 代码甚至能直接根据数据库 schema 生成查询语句。团队里真正需要的是能说清楚“这个报表要看什么指标、口径怎么定义、数据怎么校验”的人。这种现象可以概括为“体力型脑力劳动被压缩”。所谓体力型脑力劳动是指那些流程明确、规则清晰、重复度高的脑力工作。比如根据接口文档写模板化代码。把需求翻译成 SQL 查询。写单元测试的重复骨架。处理格式固定的日志和配置文件。这些工作的共同点是你不需要做太多决策只需要按照既定规则执行。而 AI 模型恰恰最擅长这类任务。1.2 焦虑的真正来源不是 AI而是工作结构很多人以为焦虑来自“AI 能力太强”但更深层的原因是过去我们的工作价值有相当大一部分来自“执行效率”。当 AI 把执行效率拉满之后执行本身就不值钱了。举个例子以前你写一个 Python 脚本处理 Excel 报表可能需要半天这个“半天”就是你的产出价值。现在你告诉 AI“帮我写个脚本读取 30 个 Excel按日期汇总输出一个新的 CSV 文件。”它可能三分钟就写完了。你省下了时间但你原本用来衡量的“产值”也被抹平了。这时候真正的问题不是“AI 会不会替代我”而是如果你的价值只能通过“执行”来体现那 AI 确实会替代你。如果你的价值来自“定义问题、设计方案、评估结果、推动落地”AI 会成为你的放大器。1.3 哪些信号说明你已经处于“易替代位置”我们可以用下面几个问题来自查自查问题危险信号相对安全信号你平时是不是总在写模板代码是而且很少需要思考否经常需要做技术选型和权衡你的工作目标是什么完成指派的任务解决一个模糊的业务问题你评价自己工作的标准是什么代码跑通、功能上线业务指标是否有提升、系统是否更稳定你对业务理解有多深只知道表和接口不清楚业务链路能说清数据来源、计算口径、异常影响你用过 AI 工具吗基本不用觉得“不靠谱”已经在用并且清楚它的边界如果你发现自己大部分答案都在左边那这篇文章值得认真读完。接下来我会讲清楚怎么从左边挪到右边。2. AI 时代技术岗位的“危险区”与“安全区”2.1 危险区重复性、模板化、黑盒执行从岗位职责来看以下几类工作正在快速进入 AI 的“舒适区”基础 CRUD 开发单表增删改查、基于模板的后台管理界面、简单的接口封装。这类代码大量存在公开代码库和文档中AI 模型已经学得非常充分。基础数据处理固定格式的数据清洗、字段映射、报表导出、定时任务脚本。如果你做的事情只是“把 A 表数据搬到 B 表并做简单转换”AI 能做得很快。初级运维脚本常见的日志收集、磁盘清理、进程监控、批量部署。只要指令描述清楚AI 也能生成像模像样的脚本。文档和重复性沟通写简单的接口文档、生成周报、整理会议纪要。大模型处理这类文本任务已经是强项。这些岗位的共同点是不涉及复杂的上下文理解也不需要对结果负责。只要把规则描述清楚AI 就有比较高的概率给出可用结果。2.2 安全区工程化、评估、业务理解、系统设计那么哪些能力是 AI 短期很难替代的我认为有四类第一把模糊需求变成可执行方案的能力。业务方说“我要让用户更快找到想要的商品”这句话离实际代码非常远。你需要拆解是什么商品怎么定义“更快”搜索、推荐、还是分类导航数据从哪来效果怎么衡量这种“从模糊到清晰”的能力AI 目前很难替代。第二对系统整体的把控能力。一个业务系统会涉及前端、后端、数据库、缓存、消息队列、定时任务、权限控制、日志监控。AI 能帮你写出局部代码但很难帮你判断“这里应该用缓存还是直接查库”“这个操作要不要加分布式锁”“这条链路超时了怎么降级”。第三结果评估与纠错能力。AI 生成的代码不一定是对的甚至可能一本正经地给出错误方案。能看懂它在干什么、知道什么地方可能出错、并能设计测试用例覆盖边界情况的人价值反而更高。第四跨团队协作和业务影响力。技术方案最终要落地需要说服业务方、协调前后端、处理上线风险、跟进线上问题。这些需要信任积累和沟通能力不是单纯写代码能解决的。2.3 能力切换的真实案例我之前带过一个数据开发同学他刚开始的主要工作是写 SQL后来发现很多取数需求 AI 也能做而且速度不慢。后来他换了一种工作方式每次业务方提需求他先不复述“要怎么查”而是追问“为什么要查这个数据拿到之后要做什么决策”。同样是取数需求他后来做的事情变成了梳理数据口径确认指标定义。设计数据质量校验规则防止脏数据影响判断。把常用的取数逻辑沉淀成数据模型和自动化看板。教会业务方自己利用看板做初步分析。这个过程中他写的 SQL 反而变少了但业务方对他更依赖了。因为他从“写 SQL 的人”变成了“帮业务方定义和分析问题的人”。这就是从危险区往安全区切换的实际路径。3. 从“写代码的人”到“定义问题的人”核心能力模型3.1 把需求拆成可验证的问题很多开发者拿到需求的第一反应是“这个怎么做”但更重要的第一步是“这个需求到底是什么、怎么算成功”。举个例子假设产品经理说“我们想给用户增加一个 AI 问答助手。”如果你直接开始想技术架构很可能会做偏。你应该先反问用户会在什么场景下使用这个问答助手回答是基于通用知识还是基于我们内部的文档和数据库允许 AI 自由发挥还是必须严格基于资料回答回答错了会有什么影响需要人工介入吗怎么评估“好用”是看回答准确率还是看用户停留时长这些问题拆清楚之后技术方案才有方向。否则你只是在帮 AI 打下手而不是在利用 AI 创造价值。3.2 让 AI 进入可评估的工作流AI 能力的引入不能停留在“问它一个问题拿一段答案”的层面。真正有价值的是把 AI 能力嵌入到一个可评估、可回滚、可观测的工作流里。一个标准的工作流至少包含以下几个环节输入规范化明确 AI 的输入格式避免自由文本带来的不确定性。结果校验对 AI 生成的内容做格式检查、边界判断、敏感信息过滤。人工兜底设计降级策略当 AI 无法给出可信结果时回退到人工流程。效果追踪记录每一次 AI 调用的输入、输出、耗时、用户反馈持续优化。能做到这四点AI 就不是一个“黑盒玩具”而是系统里的一个稳定组件。这也是为什么我说AI 工程化能力比单纯会调用 API 重要得多。3.3 工程化能力是护城河很多人担心 AI 会取代程序员但我看到的实际情况是AI 工具让低水平代码的获取成本趋近于零但让“让代码稳定运行在生产环境”的能力变得更稀缺。一个能力很强的开发者和普通开发者之间最大的差距不是谁写代码更快而是谁更早发现设计缺陷谁能在系统崩溃时更快定位根因谁能设计出更容易维护和扩展的架构谁能在引入新技术时控制风险这些能力都需要在真实项目中积累。如果你想转型不要只学“AI 怎么调用”更要把注意力放在工程实践上单元测试、代码审查、CI/CD、监控告警、容量规划、故障复盘。4. 用 AI 工程实践武装自己一个 RAG 检索增强示例4.1 为什么从 RAG 开始RAGRetrieval-Augmented Generation检索增强生成是目前大模型应用落地最常用的技术路线之一。它可以解决一个核心问题大模型不知道你公司内部的业务细节但你可以把相关资料检索出来作为上下文喂给它。掌握 RAG 的意义在于理解大模型应用的常见架构模式。掌握向量检索、文本切分、相关性排序等基础工程能力。能用较低成本做出“私有知识库问答”“智能客服”“文档助手”等产品。这一节我会带你实现一个最小可运行的 RAG 示例。虽然代码不复杂但包含了完整链路可以帮你建立整体认知。4.2 环境准备与依赖本文示例以 Python 3.9 环境为例需要安装以下依赖pip install jieba scikit-learn requests依赖说明jieba用于中文文本分词。RAG 中文场景下直接按字切分效果一般使用分词器可以提升检索质量。scikit-learn用于 TF-IDF 向量化和余弦相似度计算。这里不依赖外部向量数据库方便你快速跑通逻辑。requests用于调用大模型 API 生成最终答案。提示如果后续要处理大规模文档或生产环境高并发通常会用专门的向量数据库例如 Milvus、Chroma、Qdrant但核心思路是一致的。本文先演示思路不引入重型组件。4.3 最小可运行示例文档加载、向量化、检索我们先创建一个简单的文档集合模拟企业内部知识库中的几条问答记录。# 文件路径rag_demo/build_index.py import jieba from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.metrics.pairwise import cosine_similarity import numpy as np # 模拟知识库文档 documents [ 公司内部报销流程员工在OA系统填写报销单上传发票部门主管审批财务复核后打款。, 服务器部署流程代码合并到main分支后由Jenkins自动构建镜像并推送到K8s集群。, 客户反馈处理机制客服收到反馈后先判断严重级别紧急问题需要在30分钟内响应。, 月度数据报告每月1号统计上月活跃用户数、付费转化率、平均客单价。, ] # 中文分词函数 def tokenize(text): return .join(jieba.lcut(text)) # 构建 TF-IDF 向量化器 vectorizer TfidfVectorizer(tokenizertokenize, token_patternNone) # 对所有文档做向量化 doc_vectors vectorizer.fit_transform(documents) # 保存分词器、向量化器和文档向量方便检索时复用这里直接用全局变量简化处理 questions [ 用户反馈处理时间要求是多少, 怎么提交报销申请, 代码部署的流程是什么, 月报统计哪些指标, ] for q in questions: q_vec vectorizer.transform([q]) scores cosine_similarity(q_vec, doc_vectors)[0] best_idx int(np.argmax(scores)) print(f问题{q}) print(f最相关的文档{documents[best_idx]}) print(f相似度分数{scores[best_idx]:.4f}) print(- * 50)这段代码做的事情本质上就是“检索”。它把问题转换成向量和所有文档向量计算相似度找到最相关的文档片段。预期输出如下实际分词结果会根据 jieba 版本略有差异问题用户反馈处理时间要求是多少 最相关的文档客户反馈处理机制客服收到反馈后先判断严重级别紧急问题需要在30分钟内响应。 相似度分数0.4xxx ...这里我们可以看到仅仅依靠关键词匹配已经能把问题路由到正确的文档上。这就是 RAG 中“R”的部分。4.4 把检索结果接入大模型找到相关资料后下一步是把它作为上下文拼进 Prompt调大模型生成回答。下面我们以 OpenAI 兼容接口为例演示如何调用。很多国内大模型厂商也提供兼容接口只需要替换base_url和api_key。# 文件路径rag_demo/generate_answer.py import requests import json def chat_with_context(question, context, api_key, base_urlhttps://api.openai.com/v1/chat/completions): 传入用户问题和检索到的上下文让大模型基于上下文回答。 注意生产环境应把 api_key 放在环境变量或配置中心不要硬编码。 system_prompt 你是一个严谨的助手。请严格根据以下提供的资料回答问题不要编造资料中不存在的信息。 user_content f资料\n{context}\n\n问题{question} payload { model: gpt-4o-mini, # 实际模型名按服务商调整 temperature: 0.2, # 低温减少自由发挥 messages: [ {role: system, content: system_prompt}, {role: user, content: user_content}, ], } headers { Content-Type: application/json, Authorization: fBearer {api_key}, } resp requests.post(base_url, headersheaders, jsonpayload, timeout30) resp.raise_for_status() data resp.json() return data[choices][0][message][content] if __name__ __main__: # 这里只做演示实际请从环境变量读取 api_key your-api-key context ( 客户反馈处理机制客服收到反馈后先判断严重级别 紧急问题需要在30分钟内响应。 ) question 用户反馈处理时间要求是多少 answer chat_with_context(question, context, api_key) print(answer)这段代码的核心不是 API 调用本身而是Prompt 结构。在生产系统中你会希望把“资料”和“问题”明确区分开并且用 system prompt 强调“只能基于资料回答”。这样才能减少模型胡说八道的概率。4.5 运行与验证为了把整个流程串起来我们可以把检索和生成封装成一个完整的 RAG 函数# 文件路径rag_demo/rag_pipeline.py from build_index import vectorizer, doc_vectors, documents, tokenize from sklearn.metrics.pairwise import cosine_similarity from generate_answer import chat_with_context def search_top_k(query, k2): q_vec vectorizer.transform([query]) scores cosine_similarity(q_vec, doc_vectors)[0] top_indices scores.argsort()[-k:][::-1] results [] for idx in top_indices: results.append({ text: documents[idx], score: float(scores[idx]), }) return results def rag_answer(question, api_key, k2): results search_top_k(question, kk) context \n\n.join([item[text] for item in results]) return chat_with_context(question, context, api_key) if __name__ __main__: api_key your-api-key question 怎么提交报销申请 print(rag_answer(question, api_key))运行之后你就能看到一个大模型基于内部文档生成的回答而不是它在网络上随便找到的通用答案。补充说明这个示例最大的意义是让你理解 RAG 的骨架。实际项目中你还需要考虑文档切分策略、向量 embedding 模型的选择、相似度阈值设置、多路召回、答案引用溯源等细节。这些内容我会在后续的实践文章中继续拆解本文先建立整体认知。5. 用 AI 辅助开发提升效率而不是被替代5.1 用好 AI 编程助手的正确姿势AI 编程助手已经非常普及但很多人用不好原因通常是两个极端要么完全不信要么无脑接受。我建议的流程是这样的先把需求拆解成小任务再让 AI 帮你写局部代码。不要让 AI 直接“写整个系统”而是让它“写一个工具函数”“写一条 SQL”“写一个正则表达式”。让 AI 生成测试用例然后用测试约束它。先写一个简单的测试再让 AI 补实现比直接让它写完整模块要可靠得多。让 AI 解释代码而不是只抄代码。如果你看不懂它生成的代码那就不要上生产环境。5.2 AI Code Review 脚本示例这里分享一个简单的“AI Code Review 助手”脚本思路。假设你有一个 Python 函数想让 AI 帮忙检查潜在问题# 文件路径tools/ai_review.py import requests python_code def get_user_name(user_id): conn get_db_conn() sql fSELECT name FROM users WHERE id {user_id} cursor conn.execute(sql) return cursor.fetchone() prompt f 请对下面的 Python 代码进行代码审查重点关注 1. SQL 注入风险 2. 异常处理 3. 资源释放问题 4. 代码可读性 代码 python {python_code}请按问题严重级别列出需要修改的点。 以下为调用 API 的示意实际使用时请将 api_key 放入环境变量resp requests.post(url,headers{Authorization: Bearer your-api-key},json{model: gpt-4o-mini,messages: [{role: user, content: prompt}],})你会发现AI 会指出这段代码至少有三个问题SQL 注入、数据库连接未关闭、没有处理查询结果为空的情况。这样的工具用在做代码自查时价值很高。 但要注意**AI Code Review 不能取代人工 Review。** 它适合在代码提交前帮你做一轮快速检查但最终合不合并、怎么改还是需要人来判断。 ### 5.3 自动化测试补全 再分享一个场景写完一个函数后让 AI 补充边界测试。 python # 文件路径tools/generate_tests.py function_code def calculate_discount(price, level): if price 0: raise ValueError(price cannot be negative) if level gold: return price * 0.8 elif level silver: return price * 0.9 else: return price prompt f 请为以下 Python 函数生成 pytest 测试用例要求覆盖正常情况、边界情况和异常情况 {function_code} # 调用大模型 API 获取测试代码 # 然后将生成结果保存为 test_discount.py这里的关键点是让 AI 生成测试实际上也是在帮你审视自己的实现是否完整。如果一个函数很难被测试覆盖那它的设计可能有问题。这种思路可以让 AI 成为你的“设计反馈器”而不只是“代码生成器”。5.4 什么时候不该用 AI使用 AI 工具也要有边界意识。以下几个场景我建议谨慎或避免使用敏感业务数据不要直接把用户手机号、身份证、日志信息粘贴到外部 AI 服务。核心算法逻辑如果代码逻辑一旦出错会造成资损或安全问题必须人工逐行审查 AI 生成结果。缺乏测试保护的重构没有自动化测试的项目AI 生成的重构代码风险非常高。需要深度业务判断的决策比如权限设计、数据删除策略、产品定价策略不应该直接让 AI 做决定。简单来说AI 适合帮你加速但责任永远在你自己身上。6. Agent 与智能体下一个需要掌握的工程方向6.1 从工具调用到自主规划如果说 RAG 是大模型应用的第一阶段那么 Agent智能体正在成为第二阶段的重点方向。RAG 解决的是“让模型知道更多信息”Agent 解决的是“让模型能完成多步任务”。一个典型 Agent 的结构是理解任务解析用户意图。拆解计划把复杂任务拆成步骤。选择工具调用搜索引擎、计算器、数据库查询接口、代码执行器等。执行与观察执行工具并观察结果。调整计划根据结果决定下一步行动。很多开发者已经在尝试用 Agent 做内部运维助手、自动填单机器人、智能客服等。6.2 一个最小的 Agent 设计思路下面是一个简化版的 Agent 调度框架帮助你理解核心逻辑# 文件路径agent_demo/simple_agent.py import json # 1. 定义工具函数 def calculate(expr): 模拟计算器工具 try: result eval(expr) # 注意真实项目中不要直接用 eval这里仅为演示 return str(result) except Exception as e: return f计算失败: {e} # 2. 定义工具注册表 TOOLS { calculate: calculate, } # 3. 模拟大模型决定调用哪个工具 def decide_next_action(user_query): 真实场景中这一步需要调用大模型让模型输出结构化指令。 这里为了演示使用一个简单规则。 if 计算 in user_query or 等于 in user_query or 几 in user_query: return {action: calculate, args: extract_expr(user_query)} return {action: finish, args: {}} def extract_expr(query): # 简化实现从问题中截取数字和运算符 import re expr re.search(r[\d\-*/().\s], query) if expr: return expr.group().strip() return 0 # 4. Agent 主循环 def run_agent(user_query): max_steps 3 current_query user_query for _ in range(max_steps): action decide_next_action(current_query) print(f当前指令: {action}) if action[action] finish: print(Agent 结束没有可执行工具。) return if action[action] in TOOLS: result TOOLS[action[action]](**action[args]) print(f工具返回: {result}) current_query f上一步结果为{result}请继续判断 else: print(未知工具结束。) return if __name__ __main__: run_agent(15加27等于几)这段代码把 Agent 的核心循环简化成了“决策-调用-观察-再决策”。真实项目里decide_next_action是由大模型实现的模型会输出 JSON 格式的工具调用指令。但整体的控制流思想是一样的。6.3 Agent 开发的常见陷阱Agent 开发虽然热门但工程落地并不容易。常见陷阱有几个陷阱说明应对方式无限循环Agent 反复调用工具停不下来设置最大步骤数、超时控制、人工确认点工具参数错误模型生成的工具参数格式不对对工具输入做严格校验必要时让模型先思考再生成错误累积前一步判断错误导致后面全错在关键节点让结果可观测、可回滚权限边界Agent 执行了不该执行的操作严格限制工具权限重要操作加二次确认成本失控每轮都调大模型Token 消耗过高增加缓存、减少无关上下文、设置预算上限我的建议是先从受控场景开始不要一上来就做一个完全自主的通用 Agent。比如先做一个只能在测试环境执行命令的运维助手或者先做一个只能查询只读数据库的问答机器人。等机制成熟了再逐步扩大权限范围。7. 技术人转型避坑指南常见误区与解决思路转型过程中开发者最容易踩的坑不是技术不会而是方向错误。下面这张表总结了几个高频误区。误区典型表现正确思路拼命学 Prompt不做工程整天研究“咒语”怎么写但不会写生产级代码Prompt 只是能力的一部分工程化、评估、部署才是核心只学调 API会调用大模型接口但不理解模型边界要懂提示词设计、上下文窗口、输出格式约束、成本控制忽视业务理解认为技术好就能不被淘汰懂业务的人才知道 AI 该用在哪里、怎么评估效果拒绝使用 AI觉得 AI 生成代码不可靠坚持手写一切把 AI 当成“结对编程伙伴”用测试约束它的输出盲目使用 AI不做代码审查直接把 AI 输出扔到生产建立人工审核、测试、观测、回滚机制后再上线忽略软技能只会闷头写代码不表达、不沟通定义问题、推进协作、向上汇报都是护城河的一部分这里我想特别强调一点不要把“学 AI”当成一门单独的课而是要把它融入到你现有的技术体系里。比如你是后端开发者那你要研究的是“如何在我的 Spring Boot 服务里集成大模型能力”你是数据开发者那你要研究的是“如何用 RAG 让数据问答更可靠”你是前端开发者那你要研究的是“如何把 AI 能力和交互体验结合”。这样学习知识是长在业务场景里的而不是漂在空中的概念。8. AI 时代开发者行动清单与学习路线8.1 近期行动清单1-2 周如果你想开始做出改变不需要等到“学完所有东西再行动”可以按下面这个清单起步选一个你最熟悉的业务场景把其中重复性最高的任务列出来。用 AI 编程助手尝试完成其中一个小任务并写最少 5 个测试用例。搭一个最小的 RAG 项目把内部文档作为知识库做一次问答体验。挑一个你最近写的模块让 AI 做一次代码审查逐条验证它提出的问题。把学习过程记录下来形成自己的案例库。8.2 中期学习路线1-3 个月再往后你可以按照下面几个方向逐步深入AI 工程实践学习如何搭建大模型应用包括提示词工程、RAG、Agent、评估、部署调优。模型部署基础了解量化、推理加速、GPU 显存占用、接口网关等概念。不需要成为算法专家但要能听懂“部署一个模型”的工程成本。数据工程理解结构化数据、非结构化数据、向量化、数据清洗在大模型应用中的角色。稳定性建设学会给 AI 应用加监控、加日志、加人工兜底保证上线后可运维。8.3 长期定位建议从长期来看技术人不需要把自己定义为“会写代码的人”更合适的定义是“能利用技术解决业务问题的人”。AI 会继续改变代码的生产方式但有一个事实不会变问题永远需要人来定义风险永远需要人来承担系统永远需要人来设计。所以我给你的建议是保持对业务的敏感度不要只盯着代码仓库。保持工程上的严谨不要因为 AI 生成了代码就放弃审查。保持持续学习但学习一定要围绕实际场景展开。保持开放心态AI 是工具不是敌人也不是神。回到开头那句话“I feel like I dug my own grave.”如果你想避免这种感受方法其实不复杂不要在坑里继续只做“挖土”的动作而是抬起头看看整片工地学着去设计挖掘路线、调配资源、控制风险。技术人的职业安全感从来不来自某个工具或某一项技能而来自你解决问题、创造价值的综合能力。希望这篇文章能成为你调整方向的一块路标。下一步挑一个方向动手做一个小项目比什么都重要。
返回列表