ARTICLE DETAIL

资讯详情

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

AI编程时代,软件工程与操作系统的价值锚点在哪里

AI编程时代,软件工程与操作系统的价值锚点在哪里 1. 当AI开始写代码我们这些写代码的人到底在慌什么前几天在技术社区刷到一个讨论帖标题翻译过来大概意思是“当AI包揽了所有编程工作软件本身还有意义吗”。底下跟帖的人吵得不可开交有人说程序员马上要集体失业有人说这纯属贩卖焦虑还有人翻出当年高级语言取代汇编时老前辈们也喊过“以后没人懂机器了”的旧账。我盯着屏幕看了很久心里其实挺复杂的——因为我自己就是靠写代码吃饭的人而且这两年确实在项目里大量用上了大语言模型辅助开发。先把话说在前头这篇东西不是来给你灌鸡汤说“AI只是工具人类永远不可替代”的也不是来危言耸听说“三年内程序员全得转行”。我想做的是把这个问题拆开揉碎从我自己经手的项目、踩过的坑、以及跟同行交流得到的真实体感出发聊聊当AI真的能写出大部分程序的时候软件这个东西到底还剩下什么价值我们这些从业者的位置又该怎么摆。你如果是个刚入行的开发者或者正在考虑要不要转码又或者你是个技术管理者需要判断团队未来的方向那这篇内容应该能给你一些实在的参考。我不会给你一个非黑即白的答案因为现实本来就不是非黑即白的。但我会尽量把每个判断背后的逻辑讲清楚让你自己能做出判断。核心关键词我先自然带出来AI编程、大语言模型、软件工程、操作系统、LLM应用。这些词在接下来的内容里会反复出现因为它们就是这个问题绕不开的几个支点。2. 拆解问题本身标题里藏着的三个预设2.1 “AI write all our programs”这个前提到底成不成立那个讨论帖的标题其实埋了一个很强的预设——“AI写我们所有的程序”。注意这个“所有”它意味着从操作系统内核到业务后台的增删改查从嵌入式固件到前端交互逻辑全部由AI包办。这个前提如果成立那讨论“软件还有没有意义”才有基础如果不成立那整个问题就是个伪命题。我自己的判断是在可预见的未来这个前提不会完全成立但会在很大比例的编程任务上成立。什么意思呢就是AI会吃掉大量重复性、模式化、有明确输入输出规范的编程工作但“所有程序”这个范围太大了里面有一大块是AI很难独立完成的。我后面会详细说哪些部分AI能吃掉、哪些部分吃不掉以及为什么。这里先给一个我常用的类比AI写代码有点像现在的机器翻译。机器翻译已经能处理大部分日常文本了你出国旅游、看个外文新闻机翻基本够用。但涉及到法律合同、文学翻译、需要精准传达微妙语义的场合你还是得找人工翻译而且人工翻译的价值反而因为机翻的普及变得更高了——因为大家都知道机翻靠不住的地方恰恰是最需要人的地方。编程这个领域逻辑几乎一模一样。2.2 “software still matter”里的software指什么第二个需要拆解的是“software”这个词。在日常语境里software可以指很多东西一个手机App是软件一个操作系统是软件一个跑在服务器上的微服务是软件甚至一段Excel宏也是软件。但这些东西的“意义”来源完全不同。一个计算器App的意义在于它能帮用户算数这个意义不会因为它是人写的还是AI写的而改变。一个操作系统的意义在于它管理硬件资源、提供抽象接口这个意义也不会因为编写方式而改变。所以如果问题是“软件还有没有意义”答案几乎是肯定的——只要人类还有计算需求软件就有意义。真正值得讨论的其实是写软件这个行为还有没有意义写软件的人还有没有价值我倾向于把问题重新表述为当AI能生成大部分代码的时候软件工程的本质会不会发生变化从业者的核心能力应该往哪个方向迁移这样问题才变得可操作、可讨论。2.3 为什么这个问题现在被反复提起这个问题不是今天才有的。从COBOL到C语言从C语言到Java从手写汇编到编译器自动优化每一次抽象层级的提升都会引发类似的焦虑。但这次不一样的地方在于以前的工具替代的是“翻译”工作把人类可读的代码翻译成机器码而现在的AI开始替代“构思”工作把人类的需求翻译成代码结构。这个区别很关键。编译器再厉害它也需要人先写出源代码而LLM可以直接从自然语言描述生成源代码中间那个“人写代码”的环节被跳过了。这就是为什么这次讨论的热度远超以往——它触及了编程工作中最核心的那部分把问题转化为解决方案的能力。3. AI编程现在到底能做到什么程度一线实测记录3.1 我在实际项目里用LLM写代码的真实体验过去一年多我在三个不同类型的项目里深度使用了LLM辅助编程一个内部管理后台Python Django、一个数据处理管道Python Pandas Airflow、一个前端组件库TypeScript React。用的工具包括主流的AI编程助手和对话式LLM具体名字就不提了免得像打广告。先说结论在有明确规范、有大量先例、逻辑相对独立的模块上LLM的表现超出我预期。比如写一个RESTful API的CRUD接口只要我把数据模型和路由规则说清楚它生成的代码基本能直接用我只需要微调错误处理和日志。写单元测试更是它的强项给它一个函数签名和几个边界条件它能生成覆盖率相当不错的测试用例。但在需要跨模块协调、涉及隐式约定、或者有复杂状态管理的场景下它经常翻车。我印象最深的一次是让它帮我改一个订单状态机的逻辑它生成的代码在单个函数层面看起来完全正确但忽略了状态流转的全局约束导致一个订单可以从“已取消”直接跳到“已发货”。这种错误人眼 review 的时候如果不熟悉业务全貌也很容易漏掉。3.2 哪些编程任务AI已经能独立完成根据我的实测和跟同行的交流以下类型的任务AI已经能做得相当好甚至在某些维度超过初级开发者样板代码生成比如根据数据库表结构生成对应的模型类、序列化器、视图函数。这类工作有固定模式AI学过的代码库里到处都是例子。单元测试编写给定函数逻辑生成覆盖正常路径和边界条件的测试。AI在这件事上比大多数人更有耐心不会漏掉那些“懒得写”的边界情况。代码翻译把一段Python代码转成JavaScript或者把旧版API调用升级到新版。这类任务本质上是模式匹配AI很擅长。文档和注释生成给代码补docstring、写README、生成API文档。质量参差不齐但基本可用。简单Bug修复比如空指针检查、类型转换错误、拼写错误。给它报错信息和相关代码它通常能定位到问题。3.3 哪些任务AI目前还搞不定反过来以下类型的任务AI目前还很难独立完成或者说完成质量不足以直接交付系统架构设计决定一个系统应该拆成几个服务、服务之间怎么通信、数据怎么分片。这需要权衡大量非功能性需求性能、成本、团队能力、未来扩展AI给出的方案往往过于理想化。复杂业务逻辑实现涉及多步骤状态流转、跨系统一致性、复杂权限模型的代码。AI容易在局部正确的同时破坏全局约束。性能调优定位性能瓶颈、设计缓存策略、优化数据库查询。这需要实际 profiling 数据和对系统运行时的理解AI只能给通用建议。与遗留系统集成老系统往往有大量隐式约定和“历史遗留的奇怪行为”AI没有这些上下文生成的代码很容易踩雷。安全敏感代码认证、授权、加密、输入校验。AI生成的代码经常有微妙的安全漏洞比如时序攻击、边界条件绕过。我个人的经验法则是如果一个任务可以在Stack Overflow上找到高度相似的答案那AI大概率能做好如果这个任务需要理解你所在团队的特定上下文那AI大概率会搞砸。4. 软件的价值锚点从“能运行”到“可信赖”4.1 软件的意义从来不在于代码本身很多人把软件等同于代码这是个根本性的误解。代码只是软件的一种表现形式就像乐谱只是音乐的一种表现形式。音乐的意义在于它传达的情感和结构不在于五线谱上的符号。同样软件的意义在于它解决的问题、它提供的功能、它创造的价值不在于它是用什么语言写的、由谁写的。一个银行转账系统它的意义在于能安全、准确、高效地完成资金转移。这个意义不会因为代码是AI写的就打折扣。用户不关心你的代码是手写的还是生成的用户只关心转账能不能成功、安不安全、快不快。所以从用户价值的角度看AI写代码这件事根本不改变软件的意义——它只是改变了生产方式。4.2 当生成成本趋近于零什么变得稀缺经济学里有个基本规律当某种东西的供给大幅增加时它的相对价值会下降而与之互补的东西会变得更有价值。AI让代码的生成成本大幅下降那么什么会变得更有价值我的判断是判断力、品味和责任感。这三样东西在AI时代会变得极其稀缺。判断力是指知道该让AI写什么、不该让它写什么知道它生成的代码哪里可能有问题知道在多个方案之间怎么选。这需要深厚的领域知识和实战经验不是看几篇教程就能获得的。品味是指对“好软件”的直觉。什么样的抽象是优雅的、什么样的接口是易用的、什么样的错误处理是恰当的。AI可以生成“能运行”的代码但“好”的代码需要人的品味来把关。责任感是指当软件出问题时谁来负责。AI不会为线上事故负责不会为数据泄露负责不会为糟糕的用户体验负责。最终拍板说“这个可以上线”的人必须承担这个责任。这种责任感是AI无法替代的。4.3 操作系统级别的软件为什么更难被AI替代拿操作系统来举例特别有说服力。一个操作系统内核要管理内存、调度进程、处理中断、驱动硬件这些代码对正确性的要求是极高的——一个微小的错误就可能导致整个系统崩溃或数据损坏。而且操作系统代码往往需要与硬件紧密配合涉及大量硬件特定的细节这些细节在公开代码库里不一定有足够多的样本供AI学习。更重要的是操作系统的设计涉及大量权衡调度算法选哪个、内存管理用哪种策略、文件系统怎么组织。这些权衡没有标准答案取决于目标场景服务器、移动设备、嵌入式系统。AI可以生成某个具体算法的实现但它很难替你做出这些架构决策。我并不是说AI不能帮助写操作系统代码——实际上它在这方面已经能帮上不少忙比如生成设备驱动的样板代码、写测试用例、分析崩溃日志。但“AI独立写出一个可用的操作系统”和“AI辅助写操作系统”是两个完全不同量级的事情。5. 从业者的能力迁移从写代码到定义问题5.1 编程教育正在经历的根本性转变如果你现在还在教别人“怎么手写一个红黑树”或者“怎么用指针操作内存”那这些技能的市场价值确实在快速下降。不是因为这些知识不重要而是因为AI已经能比你更准确、更快速地完成这些任务。继续把大量时间花在训练这些技能上投资回报率会越来越低。那应该学什么我认为重心应该从“怎么实现”转向“怎么定义”和“怎么验证”。具体来说问题定义能力把一个模糊的业务需求拆解成清晰的技术规格。这需要理解业务、理解用户、理解技术边界。系统思维能力理解一个改动会如何影响整个系统。这需要经验积累和架构视野。验证和调试能力判断AI生成的代码是否正确、是否安全、是否高效。这需要扎实的计算机科学基础和调试经验。沟通和协作能力跟产品经理、设计师、运维人员有效沟通。这需要同理心和表达能力。5.2 我观察到的团队角色变化在我接触的几个团队里AI编程工具的引入正在悄悄改变角色分工。以前一个典型的后端团队可能是初级工程师写CRUD中级工程师写复杂逻辑高级工程师做架构设计。现在初级工程师的很多工作被AI接管了团队对初级岗位的需求在减少但对能驾驭AI工具的中高级工程师需求反而在增加。这导致了一个有点残酷的现实入门级岗位在萎缩但资深岗位的溢价在上升。对于刚入行的人来说这意味着传统的“从写简单代码开始慢慢成长”的路径可能走不通了。你需要更快地建立起对系统的整体理解更快地学会判断代码质量而不是靠年复一年地写重复代码来积累经验。5.3 一个具体的技能升级路线如果你是一个有1-3年经验的开发者想在这个变化中保持竞争力我建议的路线是这样的第一步把AI工具用熟。不是浅尝辄止而是深度集成到日常工作流里。学会写好的提示词学会判断它什么时候靠谱什么时候不靠谱学会用它来加速学习新技术。第二步补足计算机科学基础。AI能帮你写代码但不能帮你理解为什么这样写是对的。数据结构、算法、操作系统原理、网络协议这些基础知识决定了你 review AI代码时的判断力。第三步深入一个业务领域。纯技术能力会越来越同质化但对特定业务的理解比如金融风控、医疗数据、供应链管理是AI很难替代的。技术和业务的结合点才是你的护城河。第四步练习系统设计。从小系统开始练习做架构决策练习权衡取舍。可以借助AI来生成方案但决策必须你自己做并且要能解释为什么这样决策。6. 常见疑问与实操避坑指南6.1 关于AI编程的几个典型误解误解一AI生成的代码没有Bug。这是最危险的误解。AI生成的代码不仅有Bug而且它的Bug往往更隐蔽因为代码看起来“很合理”。我遇到过好几次AI生成的代码在正常路径下完全正确但在异常路径下会静默失败。所以对AI代码的测试和审查不能放松反而要更严格。误解二AI能理解业务需求。AI能理解你描述的需求但它不理解需求背后的业务逻辑和约束。比如你告诉它“用户下单后扣减库存”它可能生成一个简单的扣减逻辑但不会考虑并发下单、库存回滚、超卖保护这些业务规则。这些必须由人来补充。误解三用了AI就不需要学编程了。恰恰相反AI时代对编程理解的要求更高了。因为你需要判断AI生成的代码对不对如果你自己不懂你连判断的依据都没有。AI降低的是“写”的门槛提高的是“判断”的门槛。6.2 实操中踩过的坑和应对方法坑一过度信任AI的代码补全。我在用AI编程助手的时候有几次它补全的代码看起来没问题但引入了一个微妙的类型错误导致运行时才暴露。后来我养成了一个习惯对AI补全的每一行代码如果涉及类型转换或边界条件都要停下来想一秒。坑二提示词太模糊导致返工。一开始我给的提示词很简短比如“写一个用户登录接口”结果AI生成的代码跟我的技术栈和代码风格完全不匹配。后来我学会了在提示词里包含技术栈版本、代码风格约定、错误处理要求、以及一个类似的现有代码示例。这样生成质量大幅提升。坑三忽略AI的“幻觉”依赖。AI有时候会引用不存在的库或API或者使用已经废弃的方法。这在快速迭代的技术栈里特别常见。我的应对方法是对AI生成的依赖项一定去官方文档确认版本和用法。坑四安全漏洞。AI生成的代码在安全方面经常有疏漏比如SQL注入防护不完整、认证逻辑有绕过风险、敏感信息硬编码。我的做法是所有涉及安全边界的代码AI生成后必须经过人工安全审查不能直接上线。6.3 问题速查表问题现象可能原因排查思路解决建议AI生成的代码编译不过依赖版本不匹配或API用法过时检查import的库版本对照官方文档在提示词中明确版本号生成后先编译验证代码逻辑看起来对但运行结果错边界条件或异常路径处理缺失补充边界测试用例逐行review要求AI同时生成测试用例人工补充边界场景性能不达标AI倾向于生成直观但低效的实现做profiling定位瓶颈对性能敏感部分人工重写AI只做辅助与现有代码风格不一致提示词缺少风格约定对比现有代码的命名、结构、错误处理方式提供代码示例作为风格参考安全审查不通过AI对安全最佳实践掌握不完整用静态分析工具扫描人工审查认证授权逻辑安全敏感代码必须人工编写或深度修改7. 软件工程的未来形态人机协作的新分工7.1 从“写代码的人”到“软件系统的导演”我越来越觉得未来软件开发者的角色会像电影导演。导演不需要自己扛摄像机、不需要自己剪片子、不需要自己调色但他需要知道要拍什么、怎么讲故事、哪个镜头情绪不对、整体节奏怎么把控。同样未来的软件开发者不需要手写每一行代码但需要知道系统应该怎么设计、模块怎么划分、质量怎么保证、什么时候该推翻重来。这个类比还暗示了一个重要变化沟通和表达能力会变得比纯技术能力更重要。导演要跟摄影师、演员、剪辑师沟通开发者要跟AI、产品经理、运维人员沟通。你能把需求描述得多清楚AI就能把代码写得多准确。你能把问题定义得多精确解决方案就有多靠谱。7.2 软件质量的定义会被重新书写当代码生成变得廉价软件质量的评判标准也会变化。以前我们关注代码的可读性、可维护性、圈复杂度因为这些指标影响人修改代码的效率。未来当大部分代码由AI生成和修改时这些指标的重要性会下降而另外一些指标会上升可验证性代码是否容易被测试和验证。AI生成的代码如果难以验证那它的风险就很高。可解释性代码的行为是否容易被人类理解。当出问题时人需要快速定位原因。鲁棒性代码在异常输入和边界条件下的表现。AI生成的代码在这方面往往薄弱。安全性代码是否引入了安全漏洞。这需要系统性的审查机制。7.3 对团队组织方式的影响我观察到的一个趋势是小团队的生产力在提升大团队的协调成本在相对上升。因为AI工具让单个开发者能覆盖更大的工作范围以前需要三个人做的事现在一个人加AI就能完成。这意味着团队规模可能会缩小但对每个成员的能力要求会提高。另一个趋势是代码审查的重要性在上升。以前代码审查主要是保证代码风格一致和知识共享现在代码审查还要承担验证AI生成代码正确性的职责。这要求审查者具备更强的判断力不能只是走马观花地看一眼。8. 我个人的一些判断和体会写了这么多最后说几句我自己的真实想法。我不认为AI会让软件失去意义但我认为它会让“写代码”这件事的意义发生根本性变化。就像计算器的普及没有让数学失去意义反而让数学的应用更加广泛AI编程的普及也不会让软件失去意义反而会让软件渗透到更多领域。真正需要担心的是那些把编程等同于“敲代码”的人。如果你每天的工作就是根据明确的需求写重复的代码那这部分工作确实在被AI快速替代。但如果你能定义问题、设计系统、判断质量、承担责任那你的价值反而会因为AI的普及而放大——因为你能借助AI完成更多事情你的产出会被放大。我自己的做法是把AI当成一个能力很强但需要监督的初级工程师。我给它分配任务检查它的产出在关键决策上把关。这样我的效率提升了同时我的判断力也在持续被训练。这个模式我觉得会持续很长时间。至于“软件还有没有意义”这个问题我的答案是软件的意义从来就不在于它是怎么被写出来的而在于它解决了什么问题、创造了什么价值。只要人类还有需求需要被满足软件就有意义。而写软件的人只要能从“代码工人”进化为“问题解决者”就永远有位置。
返回列表