AI 降低了『写代码』的门槛,但是没有降低『软件开发』的复杂度

作者:勇哥Java实战日期:2026/6/4

好久没写文章了。 心里想写,却总觉得缺点由头。直到最近经历了几件事,彻底颠覆并重塑了我对 AI 编程的认知,骨鲠在喉,不吐不快。

我想聊聊那个被很多人忽略的真相:AI 确实拉低了「写代码」的门槛,但它并没有降低「软件开发」的复杂度。

1 售前朋友给我的惊喜

我曾经开源过一个项目——platform-sms。这是一个基于 SpringBoot 开发的短信网关服务,提供客户端 SDK,支持阿里云、腾讯云、亿美、合一等主流短信渠道,非常适合中小型公司。

这个项目最核心的设计亮点,在于我参考了阿里知名开源项目 Canal 后,精心设计的一套适配器 SPI 机制。很多技术朋友看到这种实现方式,都评价说设计得挺巧妙。

令我始料未及的是,我一位做售前岗位的朋友对这个项目产生了浓厚的兴趣。他想给项目新增一个适配器,用来对接其他第三方的短信渠道。

想法很好,但现实很骨感——他的 Java 基础极其薄弱。之前我们沟通过很多次,我也尝试过手把手教他,但受限于时间,进展相对较慢。

直到有一天,我随口提了一句:“要不,你试试用 Claude Code?”

我当场给他演示了一遍我的使用习惯,朋友还真听进去了。

结果几天后,他给了我一个巨大的惊喜:他竟然真的靠着 Claude Code 配合 DeepSeek,把那个适配器给硬生生开发出来了!

讲真,这完全出乎我的意料。看着他微信里发来的消息,字里行间都洋溢着跨界成功的兴奋与成就感。

那一刻,我真切地感受到了时代的洪流:AI 彻底撕碎了「写代码」的门槛,它让原本相对处于技术外围的产品经理、售前人员,一夜之间拥有了将想法变成代码的能力。

2 SimpleDateFormat 引起的事故

AI 编程确实让人惊喜,但背后也隐藏着风险。讲讲我身边的真实案例。

几个月前,一位做外包的朋友向我咨询问题。他正在用 AI 辅助重构一个历史系统的报表模块,上线没几天就遭遇了偶发性的账期数据错乱事故。

排查了一圈,最后发现核心问题竟然出在一段简单的代码里——多线程并发的环境下,定义并复用了一个全局的 SimpleDateFormat

熟悉 Java 的人都知道,SimpleDateFormat 是线程不安全的。在并发场景下,内部的 Calendar 状态会被多个线程同时修改,导致格式化出来的时间错乱,甚至直接抛出异常。

我觉得很奇怪,问他为什么不用 Apache 的日期工具类,而非得定义一个全局变量。他回答说:”这是 AI 帮我写的,我看它写得又快又工整,注释也全,就直接放进去了……”

这件事勾起了我的回忆。2024 年,我曾帮助西南一家航空公司优化用户中心系统,当时系统分库分表经常路由失败,排查后发现也是因为共用了一个 SimpleDateFormat。我排查了很久,打印了不少 DEBUG 日志,才找到这个隐藏的 BUG。

因此,我对 SimpleDateFormat 有着天然的敏感度。但就在前几天,当我准备为项目中的双向认证模式写一个示例时,通过 Claude Code + GLM(MINIMAX)编写代码,赫然发现 SimpleDateFormat 又被定义成了静态变量——在多线程场景下,依然存在 BUG。

那么,我们能相信 AI 编写的代码吗?

不能完全相信。

对我而言,我们依然需要做大量的测试、大量的 Code Review,以及适度的微重构。

下图是我编写一个翻译软件的 RUST 项目:

AI 编写的代码经常会随性而至 ,虽然能实现功能,但可读性以及可维护性值得商榷,当然可能也和我的使用习惯有关系,我需要经常进行微重构,将模块组件化,才有可能将系统的可维护性维持在一个相对较高的水平。

3 软件工程的复杂度并没有消失

经历了这两件事,我更加确信那个结论:
AI 降低了『写代码』的门槛,但是没有降低『软件开发』的复杂度。

对于非专业或初级开发者:

AI 给了他们一辆跑车,让他们能迅速在直道上飙车(比如快速实现一个独立的适配器);但如果没有驾照(基础知识),到了复杂的弯道(多线程、高并发、高可用),翻车只是时间问题。

对于资深开发者:

我们的价值不再是“打字员”,而是“架构师”与“守门员”。我们需要用更高的眼界去指导 AI,用更严苛的标准去 Code Review。

写下这些感想,并非想要否定 AI 编程的巨大价值——恰恰相反,我自己就是一个 AI 的重度拥抱者和受益者。

我只是觉得,在全民惊叹于 AI “无所不能”的浪潮中,我们作为真正的技术从业者,更应该保持一份难得的清醒。

除非有一天,真像马斯克所预言的那样:AI 能够跨越所有中间态,直接为人类生成百分之百完美的二进制程序。

可真到了那一天,人类也将彻底失去阅读、审计和 Debug 的能力。当系统再次发生偶发性的异常时,面对那串冰冷的、由 01 构成的终极黑盒,我们连去哪里打印一条 DEBUG 日志都无从知晓。

那种被未知支配的恐惧,恐怕不是我们想要的未来。

所以,在那个科幻的终点线到来之前,我们必须承认:工具再锋利,也只是延伸了手臂;而决定工程质量上限与底线的,始终是屏幕后面的那个大脑。


AI 降低了『写代码』的门槛,但是没有降低『软件开发』的复杂度》 是转载文章,点击查看原文


相关推荐


CCFast 驰骋低代码BPM-积木菜单设计思想
驰骋低代码、工作流、表单引擎2026/5/28

CCFast 驰骋低代码 BPM:积木菜单设计思想  一、概述:为什么从“菜单”出发做低代码 1. CCFast 驰骋低代码 BPM 是一款开源的低代码开发与流程平台,面向企业信息化与业务流程数字化场景。 2. 本文章阐述:驰骋低代码 BPM 的整体体验与交付结构,根植于一套清晰、可扩展的菜单体系。 3. 其核心理念可以概括为:以菜单体系为骨架的低代码开发与运行平台——不是零散堆页面,而是用“可被授权、可被复用、可被组合”的菜单单元搭建系统。 4. 底座能力运行在组织结构管理与系统权限


RAG 系列(八):RAG 评估体系——用数据说话
冬奇Lab2026/5/6

为什么"感觉不错"不是标准? 前面七篇文章,我们搭起了一整套 RAG 流程:分块、Embedding、向量库、检索策略。系统跑起来了,你问它几个问题,回答看起来"还不错"。 但问题接踵而至: 迭代后真的变好了吗? 你换了 Embedding 模型、调了 chunk_size、加了 MMR,但回答质量真的提升了吗?还是只是"感觉"变好了? 问题出在哪里? 某个问题回答得很差,是检索阶段没召回相关文档,还是生成阶段模型在胡说八道? 怎么向老板汇报? "我觉得我们的 RAG 系统挺好的"——这句话在


告别重复劳动:一套插件让 AI 替你写代码、修Bug、做测试、上生产
吴文周2026/4/26

Claude Code 团队 AI 插件实践:从新人上线到全栈自动化的渐进式指南 特别鸣谢:本文由 南京大翼航空 团队实践沉淀而成,感谢团队在 AI 辅助研发领域的持续探索与投入。 后续规划:本文为 dw 插件生态的总览。后续将为每个 skill 单独撰写详细教程文章,涵盖实战案例、配置细节和踩坑经验,敬请关注。 本文涉及的研发规范体系均基于 Claude Code 的插件机制实现。插件是 Claude Code 官方提供的扩展方式,支持自定义命令、Skill、Hook、Agent 等,是


开发RN项目时,如何调试iOS真机、Android真机?常见调试问题排查?
光影少年2026/4/17

在开发 React Native(RN)项目时,真机调试是必备技能。下面我从 iOS / Android 真机调试步骤 + 常见问题排查 给你一套实战指南(偏工程经验总结)。 一、iOS 真机调试 1. 基本前提 必须使用 Xcode 需要 Apple ID(免费也行) iPhone 用数据线连接 Mac 2. 配置步骤 ✅ 第一步:信任设备 iPhone 上点击“信任此电脑” ✅ 第二步:Xcode 配置签名 打开: ios/xxx.xcwo


Spark DynamicJoinSelection 规则根据AQE统计信息动态调整Join策略
鸿乃江边鸟2026/4/9

背景 本文基于Spark 3.5.3 在Spark引入了AQE以后,Spark在运行的时候能够拿到运行时候的Shuffle统计信息,这些信息可以更好的来调整join的策略,当下规则下这种策略的调整是通过增加hint来进行控制的, 规则的目的是防止负优化。 分析 这里会有三种优化场景: 1. 检测大量空分区 → 添加 NO_BROADCAST_HASH HINT 对应的代码如下: private def hasManyEmptyPartitions(mapStats: MapOutputStat


金融和电商行业如何使用网络监控保障业务稳定?
运维行者_2026/4/1

在金融和电商的世界里,系统"稳定"从来不是一句口号------它是真金白银的保障。一笔支付交易卡顿3秒,可能让客户放弃下单;一次核心数据库响应延迟,就可能触发监管警报;一张快递面单打印失败,背后是成百上千个订单履约受阻。这些看似微小的技术波动,在高并发、强实时的业务场景中会被迅速放大,直接侵蚀用户体验、品牌信誉甚至合规底线。 OpManager 深知,对金融与电商企业而言,网络监控的意义远不止"看设备是否在线"。它必须能穿透复杂的IT架构,预判风险、快速定位、自动响应,并在关键时刻成为业务连续


【Linux】网络之http协议
爱吃生蚝的于勒2026/3/24

文章目录 URL🚩HTTP协议格式请求格式HTTP常用方法 响应格式常见状态码HTTP常见Header 🚩模拟实现HTTP服务器⭐Cookie URL 我们所说的网址就是URL 如果在参数中出现?/特殊字符,会自动转义,/ ?字符已经被url特殊处理了 ‘+’被转义为%2b 🚩HTTP协议格式 请求格式 请求行:方法+URL+版本号+\r\n 请求报头:每行一对键值对+\r\n \r\n空行,(没有空行的话无法区分报头和正文) 正文,(怎么确定正文


C++入门基础
全球便秘冠军保持者2026/3/16

C++的第一个程序 #include<stdio.h> int main() { printf("Hello World!\n"); return 0; } 这是我们使用的c++的编译器写的c语言的“Hello World!”,说明c++的编译器可以兼容c语言的语法 那我们来看一下用c++写的“Hello World!” #include <iostream> using namespace std; int main() { cout << "Hello World!"


拒绝写重复代码,试试这套开源的 SpringBoot 组件,效率翻倍~
皮皮林5512026/3/7

目录 1 简介 2 快速入门 2.1 Spring Boot 接口开发现状 2.2 快速入门 1 简介 Graceful Response 是一个 Spring Boot 技术栈下的优雅响应处理器,提供一站式统一返回值封装、全局异常处理、自定义异常错误码 等功能,使用 Graceful Response 进行 web 接口开发不仅可以节省大量的时间,还可以提高代码质量,使代码逻辑更清晰。 强烈推荐你花 3 分钟学会它! 本项目案例工程代码:https://github.com/fe


程序员的明天:AI 时代下的行业观察与个人思考
勇哥Java实战2026/2/27

这篇文章分享了我对 AI 时代下,软件行业发展以及程序员命运走向的 5 点思考,供大家参考。 1 匠人时代落幕 Redis 之父 antirez,最近写了一篇文章 《 Don't fall into the anti-AI hype 》,读完之后,我深有感触。 文章的观点非常明确: AI 不仅改变了编码方式,更重塑了软件行业的价值结构和职业路径,程序员需要从“手动编码”转向“设计系统与与 AI 协作” 。 过去的软件行业,其实有一种很典型的“匠人红利”。谁代码写得更优雅,谁框架更熟,谁对某个

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 聚合阅读