
我是 dtsola,IT解决方案架构师,一人公司实践者。
在过去的职业生涯中,我既经历过大型企业的复杂系统架构设计,也在一人公司的实践中深度使用AI工具提升开发效率。这种双重视角让我对"AI辅助开发"有着独特的理解——我既看到了AI带来的巨大生产力提升,也深刻体会到从"能跑的代码"到"生产级系统"之间的鸿沟。
这篇文章源于两篇让我深有共鸣的文章:
《The New Calculus of AI-based Coding》(Joe Mag,Amazon工程师的实践)
《AI can code, but it can't build software》(Bytesauna的观察)
作为解决方案架构师,我在为客户设计系统时,越来越多地遇到这样的场景:
客户展示一个AI生成的原型:"你看,功能都实现了!"
我审查代码后:"这需要重构才能上生产环境。"
客户困惑:"为什么能跑的代码不能直接用?"
作为一人公司实践者,我自己也大量使用AI工具(Cursor、GitHub Copilot、Claude等)来加速开发。我的个人项目中,约60-70%的代码由AI生成。但我发现,真正耗时的不是写代码,而是:
设计系统架构
处理边界情况
确保长期可维护性
集成各个模块
建立测试和部署流程
这两篇文章从不同角度验证了我的观察,促使我结合自身经验,系统性地思考这个问题。
目标读者
🎯 正在使用AI辅助开发的工程师
🎯 有AI生成原型但不知如何产品化的创业者
🎯 试图理解AI对软件工程影响的技术管理者
🎯 一人公司/独立开发者
核心问题
AI在软件开发中到底能做什么、不能做什么?
为什么"能跑的demo"和"生产级产品"之间有巨大鸿沟?
作为架构师/工程师,我们的价值在哪里?
如何正确地利用AI提升真正的生产力?
目录
一、两个平行的信号
1.1 信号A:技术联合创始人的需求激增
1.2 信号B:10倍速团队的系统性困境
1.3 核心论点
二、AI确实会编码
2.1 编码能力的实质性突破
2.2 AI擅长的编码场景
2.3 古老智慧的验证
三、从Demo到产品:不可逾越的鸿沟
3.1 "生产就绪"的残酷真相
3.2 软件工程的本质:复杂度管理
3.3 10倍速度的系统性风险
四、软件工程的多维挑战
4.1 第一维:质量保障体系
4.2 第二维:工程基础设施
4.3 第三维:架构设计与决策
4.4 第四维:团队协作与沟通
五、为什么AI(暂时)不会做软件
5.1 问题的本质属性
5.2 编码 vs 软件工程的本质区别
5.3 高速开发暴露的真相
六、当前状态定位
6.1 AI能力的清晰边界
6.2 能力图谱
6.3 客户常见的误解
七、真正的机会
7.1 不是替代,是赋能
7.2 以前"太贵"的实践现在可行
7.3 用AI构建支撑AI的基础设施
7.4 范式转变
八、结论:拥抱人机协作的新时代
一、两个平行的信号
1.1 信号A:技术联合创始人的需求激增
来自Bytesauna的观察:
最近,越来越多的人在寻找技术联合创始人或CTO。这些请求大多遵循一个模式:"嘿,我有这个用AI编写的应用,你能帮我让它生产就绪吗?"
这些人通常有一个共同的画像:他们了解自己的业务,但一直缺乏将想法变为现实的技术技能——可能是法律顾问,也可能是客户经理。
这引发了一个关键问题:如果软件工程已经被AI自动化了,为什么还有人在寻找技术联合创始人?
我的类似经历:
作为解决方案架构师,我最近收到的咨询中,约30%是这类请求:
"我用Cursor做了个SaaS原型,能帮我评估一下吗?"
"这个AI生成的系统,上线需要改什么?"
"为什么我的应用在本地跑得好好的,部署就出问题?"
每次收到这样的请求,我都能感受到提问者的困惑:他们认为自己已经完成了大部分工作,只需要"最后一公里"的帮助。但当我审查代码后,往往发现需要的不是"最后一公里",而是重新规划整个旅程。
1.2 信号B:10倍速团队的系统性困境
来自Joe Mag的实践(Amazon Bedrock团队):
在过去三个月里,Joe和他的团队一直在Amazon Bedrock内构建一些很酷的东西。他们团队的独特之处在于——大部分代码是由AI代理(如Amazon Q或Kiro)编写的。
但他们不是在"vibe coding"(随意让AI写代码)。相反,他们使用一种人类和AI代理协作生成代码变更的方法。每个提交都有工程师的名字,该工程师需要审查并为代码负责。
成就令人瞩目:
约80%的代码由AI生成
团队产出是典型高速团队的10倍
Joe个人的编码吞吐量达到职业生涯的最高点
但困境也随之而来:
质量保障:以前一年一两次的生产事故,现在可能每周都会发生
CI/CD瓶颈:传统pipeline需要几小时构建测试,但一次构建期间就产生几十个新commit
团队协作:决策频率提升10倍,沟通成为主要瓶颈
Joe意识到:在高速驾驶时,你需要大量下压力来保持赛车在赛道上。
我的一人公司实践:
我的经历与Joe的观察高度一致:
个人项目中60-70%的代码由AI生成
开发速度确实提升了3-5倍
但我发现真正耗时的是:
架构设计和模块集成
AI生成的代码需要大量审查和重构
测试和部署流程反而变得更重要
1.3 核心论点
两个信号 + 我的实践 → 同一个真相:
AI会编码,但还不会做软件
这不是对AI能力的贬低,而是对软件工程本质的重新认识。AI在编码层面的能力已经达到了令人印象深刻的水平,但从"能跑的代码"到"生产级软件系统"之间,仍然存在着一道需要人类跨越的鸿沟。
二、AI确实会编码
在深入探讨AI的局限之前,我们必须首先承认:AI在编码方面的能力是真实的、强大的,并且正在改变我们的工作方式。
2.1 编码能力的实质性突破
数据支撑:
Joe的团队:80%代码AI生成,10倍产出
我的实践:60-70%代码AI生成,3-5倍速度提升
行业趋势:GitHub Copilot用户平均提升55%生产力
这些数字不是营销噱头,而是实实在在的生产力提升。
技术协同的关键:
Joe的团队使用Rust,我主要使用TypeScript。我们都发现了一个共同点:强类型语言的编译器为AI提供了快速反馈循环。
Rust编译器 + AI:Rust编译器以关注正确性和安全性著称,在编译时捕获许多问题,并提供有用的错误消息帮助AI迭代
TypeScript + AI:类型系统为AI提供了明确的约束,减少了运行时错误
这种协同效应让AI能够快速迭代修正错误,而不是陷入无休止的试错循环。
2.2 AI擅长的编码场景
从我的实践来看,AI在以下场景表现优异:
✅ AI的舒适区:
CRUD操作和标准业务逻辑:创建、读取、更新、删除的标准模式
数据转换和格式化:JSON解析、数据映射、格式转换
重复性的样板代码:配置文件、接口定义、数据模型
标准算法实现:排序、搜索、常见数据结构操作
测试用例生成:基于函数签名生成单元测试
文档和注释:根据代码生成说明文档
工作流(Joe的方法,我深度认同):
人类:分解任务到清晰的子问题
AI:生成代码
人类:审查每一行,确保质量
迭代:人机协作优化
原则:每一行代码都有工程师署名和负责
这不是"vibe coding"(随意让AI写代码然后直接使用),而是"agentic coding"(人机协作的工程化方法)。区别在于责任和质量把控。
2.3 古老智慧的验证
软件工程界有一句古老的智慧:
"Coding is easy, software engineering is hard"
AI的出现,以一种意想不到的方式验证了这句话。
重新定义:
编码(Coding):写出能工作的代码,解决特定的、孤立的问题
软件工程(Software Engineering):让代码可集成、可扩展、可长期维护,管理系统整体复杂度
AI的位置:
AI已经能很好地完成"编码"——它能快速生成语法正确、逻辑清晰的代码
但"软件工程"仍然需要人类——需要权衡、决策、全局视角和长期思考
这就像说"会拧螺丝"和"会造汽车"的区别。AI现在非常擅长"拧螺丝",但"造汽车"需要的是系统性工程能力。
三、从Demo到产品:不可逾越的鸿沟
3.1 "生产就绪"的残酷真相
Bytesauna的关键洞察:
"当你看到这些人发来的代码,你会意识到'让应用生产就绪'实际上意味着推倒重来。"
这句话道出了一个残酷的现实。作为架构师,我每次收到AI生成的代码进行评审时,都会发现类似的问题:
我作为架构师的评审经验:
对比:
✅ AI能做:展示一个功能(demo)——在理想条件下运行的代码
❌ AI不能:以支持集成、扩展和长期维护的方式构建功能(产品)
这就是为什么"让应用生产就绪"往往意味着"推倒重来"。不是因为AI写的代码完全没用,而是因为它缺少了生产系统所需的所有"非功能性"部分——而这些部分往往占据了80%的工作量。
3.2 软件工程的本质:复杂度管理
Bytesauna的核心定义:
"普通生产软件只做一堆简单的事,挑战在于同时做几百件简单的事,并保持整体可维护。"
这句话精准地抓住了软件工程的本质。软件工程师的真正工作不是解决一个难题,而是处理复杂度。
我的架构师视角——复杂度的四个维度:
3.2.1 空间复杂度(系统的广度)
多个模块如何集成?
不同服务如何协调?
如何保证数据一致性?
API契约如何管理?
3.2.2 时间复杂度(系统的演进)
代码如何长期可维护?
技术债务如何管理?
如何保持向后兼容?
如何平滑升级?
3.2.3 不确定性复杂度(边界情况)
网络故障怎么办?
并发冲突如何处理?
数据损坏如何恢复?
第三方服务不可用怎么办?
3.2.4 人的复杂度(团队协作)
代码如何让他人理解?
知识如何传递?
决策如何记录?
团队规范如何统一?
AI能力分析:
AI在局部正确性上表现优异,但在其他四个维度上都力不从心。这就是为什么AI能写出"能跑的代码",但写不出"生产级软件"。
3.3 10倍速度的系统性风险
Joe的数学关系:
如果你的代码速度提升10倍,会发生什么?
代码速度 ×10 → 决策频率 ×10
如果bug概率不变 → 生产事故频率 ×10
结论:需要质量保障能力 ×10
这不是理论推测,而是Joe团队的实际经验。他们发现,即使AI生成的代码经过人类审查,bug的绝对概率可能不会显著改变,但由于提交频率大幅增加,生产事故的频率也会相应增加。
我的一人公司经验:
我的数据与Joe的观察一致:
开发速度提升了3-5倍
但调试和重构时间也相应增加
需要更严格的代码审查流程
需要更完善的测试覆盖
三个生动的比喻:
比喻1:开200mph的赛车(Joe)
"开200mph,你需要大量下压力来保持赛车在赛道上!"
高速不是问题,问题是你的车是否有足够的下压力、足够好的轮胎、足够强的刹车来支撑这个速度。
比喻2:老车装涡轮(Joe)
"就像给老车装涡轮增压器,如果不升级轮胎和刹车,结果不是更快,而是车毁人亡。"
AI就像涡轮增压器,能让你的引擎输出更大功率。但如果你的其他系统(测试、部署、监控)还停留在原来的水平,结果不是更快交付,而是更快崩溃。
比喻3:骑共享单车 vs 开F1(我的比喻)
AI编码就像是从骑共享单车升级到开F1赛车:
速度确实快了10倍
但如果你还用骑车的心态(随意转向、突然刹车),必然翻车
你需要配套的:专业赛道、安全装备、维修团队、应急预案
这三个比喻都指向同一个真相:速度的提升必须伴随着整个系统的升级,否则速度本身就成了风险。
四、软件工程的多维挑战
当代码速度提升10倍后,软件工程的哪些维度会成为瓶颈?Joe的团队和我的实践都指向了四个关键维度。
4.1 第一维:质量保障体系
4.1.1 问题
Joe的观察:
原状:偶尔的bug,一年一两次生产事故,团队可以接受
10倍速:每周都可能出现生产事故,即使在测试环境被发现,也会影响共享代码库,需要调查,拖慢整个团队
我的实践:
AI生成的代码往往只覆盖happy path(理想路径)
边界情况、异常处理常常缺失
需要人工补充大量防御性代码
Joe得出结论:为了让agentic开发将工程速度提高一个数量级,我们需要将有问题的提交概率降低一个数量级。
4.1.2 解决思路:借鉴飞机制造业
Joe的启发:
Joe是个飞机迷,他一直很欣赏飞机制造商使用的测试理念:
早期模拟
组件测试
风洞测试
破坏性测试
完整飞机的试飞
这些理念在软件行业也有尝试,但远未普及。
软件类比:"风洞式"全系统测试
Joe的团队实现了"风洞式"测试:测试完全组装的系统在受控环境中的表现。
我的架构师方法——AI时代的测试金字塔:
测试金字塔(AI时代版)
/\
/E2E\ ← AI辅助生成场景测试
/集成测\ ← AI生成fake依赖
/组件测试\ ← AI快速生成测试用例
/单元测试 \ ← AI生成基础覆盖
/___________\
人类负责:测试策略、关键场景、边界情况关键变化:
以前:测试金字塔的每一层都需要人工编写,成本高昂
现在:AI可以快速生成大量测试用例,人类专注于测试策略和关键场景
4.1.3 实践案例
Joe的团队:
实现了外部依赖的高保真"fake"版本(认证、存储、链复制、推理引擎)
编写了测试harness,使用这些fake在开发者机器上启动整个分布式系统
构建时测试针对完全组装的堆栈启动canary,验证整个系统
成本变化:几年前,这样的想法会被认为"不错,但太贵"。这次,只用了几天就实现了
我的一人公司实践:
用AI生成API mock和测试数据
用AI编写集成测试脚本
用AI生成负载测试场景
关键:测试策略和关键场景由我设计,AI负责实现
Joe对这种方法非常看好,因为它能捕获一类以前只能在变更提交到测试环境后才能发现的bug。
4.2 第二维:工程基础设施
4.2.1 问题:CI/CD成为瓶颈
Joe的场景:
软件团队的CI/CD pipeline通常需要几个小时来构建、打包和测试软件变更,然后需要几天时间在预生产阶段和最终生产阶段推出一批变更。通常,拥有这种自动化水平的团队会被认为是健康的团队。
但agentic coding改变了这种动态:
在构建、打包和测试一组提交所需的时间内,可能又有十几个提交在等待
当一个变更集准备部署到生产环境时,它可能包含100个或更多提交
如果其中一个提交有问题,部署需要回滚,pipeline停摆
与此同时,更多变更积累,增加了混乱和风险
我的一人公司挑战:
作为一人公司,我没有专职DevOps团队,但AI让我能快速搭建CI/CD。关键是设计合理的流程,而不是手工操作。
4.2.2 比喻:F1黄旗
Joe的比喻:
"我是F1粉丝,这让我想起赛道上的事故如何导致黄旗。通常,赛车以极快的速度和加速度在赛道上疾驰。但如果发生事故,赛事干事会举起黄旗,要求所有赛车在安全车后面减速。激动人心的比赛变成悠闲的绕圈,直到清理完碎片,赛道再次安全。为了最小化这种减速,赛事组织者会为各种事故做好准备,确保他们能在几分钟内清理赛道并重新开始比赛。"
类比软件开发:
正常:高速提交代码,快速迭代
问题commit:黄旗,整个团队(或个人)必须减速
需要:像F1那样,分钟级清理赛道,而不是小时级
4.2.3 解决方向
Joe的要求:
就像全系统本地测试有助于收紧某些bug的反馈循环一样,我们需要类似地思考如何实现CI/CD pipeline。
当团队以每小时几十个提交的速度移动时:
需要在分钟而不是小时或天内识别、隔离和回滚有问题的问题
这意味着典型的构建和测试基础设施需要比今天快一个数量级
反馈循环的重要性:
"就像高延迟的在线视频游戏变得无法玩一样,如果每个提交仍然需要很长的延迟才能看到反馈,那么以10倍的速度移动真的很难。"
我的一人公司方案:
用GitHub Actions + AI生成workflow
增量构建和测试(只测试变更部分)
自动回滚机制
关键:架构设计要支持快速反馈
模块化设计
独立部署单元
特性开关(feature flags)
4.3 第三维:架构设计与决策
4.3.1 问题:架构决策无法自动化
Joe的观察:
当你的吞吐量增加一个数量级时,你不仅仅是在写更多代码——你在做更多决策:
应该使用这个缓存策略还是那个?
应该如何处理这个边界情况?
这里正确的抽象是什么?
决策频率的变化:
正常速度:团队可能每周做一两个这样的决策
10倍速度:每天做多个决策
决策类型(AI无法自动化):
缓存策略选择(Redis vs Memcached vs CDN)
边界情况处理方式(重试 vs 降级 vs 熔断)
抽象层设计(何时抽象,何时具体)
性能与可读性权衡
技术栈选择
我的架构师经验:
这些决策需要考虑:
业务上下文:这个功能对业务有多重要?
团队能力:团队熟悉哪些技术?
长期演进:这个决策会如何影响未来6个月、1年的开发?
成本约束:预算是多少?
风险承受度:能接受多大的风险?
AI的局限:
AI可以列出选项
AI可以解释pros/cons
但AI无法根据具体情况做出最优决策
因为这需要权衡,而权衡需要价值判断
4.3.2 架构决策的连锁反应
Joe的例子:
"许多这些决策会影响其他人正在做的事情。工程师A决定重构认证流程,这会影响工程师B即将扩展的API。这些不仅仅是实现细节——它们是在代码库中产生涟漪的架构选择。"
我的架构师视角:
一个看似局部的决策,可能影响:
系统性能特征
安全边界
部署复杂度
运维成本
团队学习曲线
未来扩展性
案例:选择数据库
决策:用PostgreSQL还是MongoDB?
表面上:技术选型
实际影响:
- 数据模型设计(关系型 vs 文档型)
- 查询性能特征(JOIN vs 嵌套文档)
- 事务保证(ACID vs 最终一致性)
- 运维复杂度(备份、恢复、扩展)
- 团队技能要求(SQL vs NoSQL)
- 未来扩展性(垂直 vs 水平扩展)
- 成本结构(开源 vs 托管服务)AI可以生成两种数据库的代码,但无法做这个决策。因为这个决策需要权衡多个相互冲突的目标,而权重取决于业务上下文。
4.3.3 解决方案:架构决策记录(ADR)
我的实践:
我使用架构决策记录(Architecture Decision Records, ADR)来管理这些决策:
用AI辅助编写ADR文档
但决策本身由人类做出
ADR包括:
上下文:为什么需要做这个决策?
决策:我们决定做什么?
理由:为什么这样决定?
后果:这个决策会带来什么影响?
替代方案:我们考虑过哪些其他选项?
好处:
知识传递(对未来的自己或团队成员)
决策可追溯(为什么当时这样决定?)
避免重复讨论(已经讨论过并记录了)
4.4 第四维:团队协作与沟通
4.4.1 问题:协调成本的数学
Joe的关键洞察:
"挑战在于,许多这些决策会影响其他人正在做的事情。传统的协调机制在这里引入了太多延迟。等待Slack回复或安排当天晚些时候的快速同步,意味着要么创建瓶颈——决策阻塞进度——要么冒着在意识到冲突之前走错路的风险。在高吞吐量下,协调成本可能占主导地位!"
协调需求:
架构决策的对齐
代码风格的一致性
API契约的协商
技术债务的优先级
4.4.2 比喻:餐厅后厨
Joe的比喻:
"我喜欢观察运营良好的操作。如果你曾经窥视过繁忙餐厅的后台,乍一看你可能会认为那是混乱。但如果你花点时间注意细节,你会看到所有成员都在不断地相互协调。厨师、厨师、服务员、清洁工和经理在持续的流中来回传递信息。通过保持持续同步,运营良好的餐厅即使在高峰时段也能为顾客提供服务,而不会牺牲质量或延迟。"
软件开发的类比:
厨师长 = 架构师
各个岗位 = 不同模块的负责人
持续沟通 = 代码审查、设计讨论、站会
4.4.3 Joe的团队方案
高速协调的解决方案:
Joe认为,实现类似的速度提升需要对团队沟通方式进行约束:
"我们的团队坐在同一层楼,我认为这对我们的速度至关重要。当有人需要做出可能影响其他人的决策时,他们可以走过去,在白板前几分钟内解决。我们就方法达成一致,实时讨论权衡,两位工程师都回去工作。决策快速、正确地做出,不会造成阻塞工作的堆积。"
未解决的挑战:
"我认识到这并不能解决分布式团队的问题——这仍然是一个开放的挑战。"
4.4.4 我的一人公司优势与挑战
优势:
✅ 没有沟通成本(只有我一个人)
✅ 决策速度快(不需要对齐)
✅ 上下文切换成本低(都在我脑子里)
挑战:
❌ 缺少代码审查(需要自我审查)
❌ 容易陷入局部最优(缺少外部视角)
❌ 知识孤岛(只有我知道)
❌ 精力有限(一个人要做所有决策)
我的解决方案:
用AI作为"橡皮鸭"(rubber duck debugging)——向AI解释问题,帮助自己理清思路
定期重构和代码审查(自我审查,但要严格)
完善的文档和ADR(对未来的自己负责)
加入技术社区,获取外部视角(参加meetup、在线讨论)
五、为什么AI(暂时)不会做软件
5.1 问题的本质属性
Bytesauna的思考:
"我不太清楚为什么AI不能构建软件(目前)。也许这与工作的本质有关。当你为生活编写软件时,你的主要任务是处理复杂度。普通生产软件只做一堆简单的事。挑战是同时做几百件简单的事,并保持整体可维护。"
我的架构师分析:
软件工程的本质是在约束下做权衡:
性能 vs 可读性
灵活性 vs 简单性
快速交付 vs 长期可维护
成本 vs 质量
创新 vs 稳定
AI的局限:
AI可以优化单一目标(比如"让这段代码更快")
但软件工程往往需要多目标优化(快、可读、可维护、低成本)
而且目标的权重取决于业务上下文(创业公司 vs 大企业,核心系统 vs 辅助工具)
这需要价值判断,而不只是技术判断
举个例子:
场景:优化一个查询
AI可能建议:
- 添加索引(提升性能)
- 使用缓存(提升性能)
- 数据库分片(提升性能)
但人类需要权衡:
- 添加索引 → 写入变慢,存储增加
- 使用缓存 → 一致性问题,复杂度增加
- 数据库分片 → 运维复杂度大幅增加
正确答案取决于:
- 这个查询有多重要?
- 当前的瓶颈在哪里?
- 团队能维护多复杂的系统?
- 预算是多少?AI可以给出选项,但无法做出权衡。
5.2 编码 vs 软件工程的本质区别
5.2.1 编码(AI擅长)
✅ 孤立的问题
✅ 定义明确的需求
✅ 局部正确性
✅ 短期可用性
✅ 单一优化目标
例子:
"写一个函数,计算两个日期之间的天数"
"实现一个用户登录接口"
"生成一个数据转换脚本"
这些都是AI的舒适区。
5.2.2 软件工程(AI力不从心)
❌ 数百个相互依赖的决策
❌ 模糊的、演进的需求
❌ 全局一致性
❌ 长期演进能力
❌ 多目标权衡
❌ 意外交互的管理
❌ 业务上下文理解
例子:
"设计一个能支持未来3年业务增长的用户系统"
"重构这个模块,让它更容易扩展,但不要破坏现有功能"
"在性能、成本和开发速度之间找到平衡"
这些是AI的困难区。
5.2.3 我的实践验证
AI生成代码的特点:
优点:
✅ 语法正确
✅ 逻辑清晰
✅ 运行快速
缺点:
❌ 缺少错误处理
❌ 没有考虑边界情况
❌ 硬编码多(配置、常量)
❌ 缺少抽象(重复代码)
❌ 没有考虑扩展性
❌ 测试覆盖不足
❌ 没有日志和监控我需要做的:
重构代码结构(提取函数、模块化)
添加错误处理(try-catch、错误边界)
提取可配置项(环境变量、配置文件)
设计抽象层(接口、抽象类)
补充测试(单元测试、集成测试)
优化性能(缓存、索引)
添加可观测性(日志、监控、告警)
时间分配(我的实际经验):
AI生成代码:20%
审查和重构:40%
集成和测试:30%
文档和部署:10%
这个比例说明:AI帮我节省了20%的时间,但我仍需要投入80%的时间做工程化工作。
5.3 高速开发暴露的真相
Joe的洞察:
"10倍速度是放大镜"
放大了什么:
✅ commit间的意外交互
✅ 架构决策的重要性
✅ 协调成本
✅ 反馈循环的价值
✅ 技术债务的累积速度
我的补充:
高速开发也放大了:
架构设计的价值:好架构让集成容易,坏架构让每次集成都是噩梦
测试的价值:快速验证变更,避免破坏现有功能
文档的价值:快速理解上下文,避免重复问题
规范的价值:保持一致性,降低认知负担
结论:
AI能解决局部问题,但系统性复杂度需要人类。
更准确地说:
AI能快速生成代码片段
但人类需要将这些片段组织成一个连贯的、可维护的系统
这需要架构视角、全局思维、长期规划
六、当前状态定位
6.1 AI能力的清晰边界
三个视角的一致结论:
Bytesauna:demo到产品的鸿沟
AI能做demo,但"生产就绪"意味着推倒重来
Joe:10倍速度需要10倍配套
AI让代码速度提升10倍,但需要整个开发生命周期同步升级
我:编码快了,但工程挑战更大
AI让我编码速度提升3-5倍,但80%的时间仍在做工程化工作
两个平行的现实:
技术乐观者:"AI让我10倍速编码!"
技术求助者:"谁能帮我把AI代码变成产品?"
这两个现实并不矛盾 —— 它们共同定义了AI的边界:
AI确实能让编码速度大幅提升
但编码只是软件工程的一小部分
6.2 能力图谱
编码能力谱系:
孤立函数 → 模块 → 系统 → 产品 → 平台
↓ ↓ ↓ ↓ ↓
AI擅长 AI可以 需要人类 人类主导 人类必需
(有指导) (AI辅助)
例子:
孤立函数:计算两个日期的天数 ← AI完全可以
模块:用户认证模块 ← AI可以生成,但需要人类指导架构
系统:完整的用户管理系统 ← 需要人类设计架构,AI辅助实现
产品:生产级SaaS应用 ← 人类主导,AI加速部分环节
平台:支持多租户的企业平台 ← 人类必需,AI只能辅助局部转折点:Demo → 产品
这是AI能力的边界
这是技术联合创始人的价值所在
这是"推倒重来"发生的地方
这是架构师的用武之地
6.3 客户常见的误解
作为架构师,我经常遇到这些误解:
误解1:"AI写了代码,就完成了80%"
现实:可能只完成了20%,剩下80%是工程化
就像盖房子,砖头准备好了,但还需要设计、施工、装修、验收
误解2:"AI代码能跑,就能上生产"
现实:能跑 ≠ 生产就绪
就像汽车,能启动 ≠ 能上路(需要安全检查、保险、维护)
误解3:"找个程序员改改就行"
现实:需要架构师重新设计
就像建筑,不是"改改",而是需要结构工程师评估和加固
误解4:"AI能替代开发团队"
现实:AI是工具,不是团队
就像电钻能提升效率,但不能替代木匠
我的标准回答:
"AI帮你快速验证了想法(demo),证明了技术可行性。但要做成产品,需要系统性的软件工程工作:架构设计、错误处理、安全加固、性能优化、测试覆盖、部署流程、监控告警。这不是'改改代码',而是重新设计架构、建立工程体系。"
七、真正的机会
7.1 不是替代,是赋能
错误理解:用AI替代软件工程师
正确理解:用AI降低最佳实践的成本
我的观点:
AI不是要替代工程师,而是:
✅ 让工程师专注于更高价值的工作(架构、决策)
✅ 让以前"太贵"的最佳实践变得可行(完整测试、完善文档)
✅ 让一人公司也能构建复杂系统(我的亲身体验)
✅ 让小团队也能实现大团队的产出(Joe的10倍速团队)
这是一个能力放大器,而不是替代品。
7.2 以前"太贵"的实践现在可行
7.2.1 Joe的团队经验
Joe的结论:
"这些想法在原则上是合理的,但实施和维护成本太高,大多数团队不会编写这样的测试。我认为我们正在看到agentic coding可以改变这里的计算的早期迹象。AI代理擅长输出大量代码,特别是当所需行为众所周知且几乎没有歧义时。原则上合理但实施和维护成本太高的想法,其成本刚刚降低了一个数量级。"
7.2.2 我的一人公司实践
以前做不到的:
❌ 完整的测试覆盖(太耗时,一个人写不完)
❌ 多语言支持(翻译成本高,维护困难)
❌ 完善的API文档(手写太累,容易过时)
❌ 多平台支持(iOS、Android、Web,开发量太大)
❌ 性能优化(需要专家,成本高)
现在可以做到:
✅ AI生成测试用例,我设计测试策略
✅ AI翻译文档和UI,我审校关键内容
✅ AI生成OpenAPI文档,我设计API契约
✅ AI生成平台适配代码,我处理特殊情况
✅ AI建议优化方案,我做权衡决策
关键变化:
从"做不做"变成"怎么做"
从"有没有资源"变成"如何设计"
瓶颈从执行转移到决策
这是一个根本性的转变。以前,很多好的工程实践因为"太贵"而被放弃。现在,AI降低了执行成本,让这些实践变得可行。
7.3 用AI构建支撑AI的基础设施
自举循环:
AI生成代码(速度快)
↓ 需要
更好的工程实践(质量保障)
↓ 需要
更多基础设施代码(测试、CI/CD、监控)
↓ 用
AI生成基础设施代码(降低成本)
↓ 支撑
更高速的AI编码(正向循环)
↓ 循环Joe的实践:
用AI生成fake依赖
用AI生成测试harness
用AI维护测试基础设施
我的实践:
用AI生成CI/CD配置(GitHub Actions workflow)
用AI生成监控和告警规则(Prometheus、Grafana)
用AI生成部署脚本(Docker、Kubernetes)
用AI生成性能测试场景(k6、JMeter)
关键:
人类设计架构和策略
AI实现具体细节
整个开发生命周期需要同步进化
这是一个良性循环:AI帮助我们构建更好的基础设施,更好的基础设施支撑更高速的AI编码。
7.4 范式转变
7.4.1 旧范式
人类编码 → 人类测试 → 人类部署
↓ ↓ ↓
慢但可控 覆盖有限 手工为主
瓶颈:人的时间和精力7.4.2 新范式
AI编码(×10) → 增强测试(×10) → 加速CI/CD(×10)
↓ ↓ ↓
人类架构决策 人类测试策略 人类部署策略
↓ ↓ ↓
权衡判断 关键场景 风险控制
瓶颈:人的决策质量和架构能力7.4.3 我的一人公司范式
传统一人公司:
能力 = 个人技能 × 时间
瓶颈 = 时间(24小时/天)
结果 = 只能做小项目
AI时代一人公司:
能力 = (个人决策能力 × AI执行速度) × 工程体系
瓶颈 = 决策质量 + 架构设计
结果 = 可以做中大型项目成功的关键:
Joe的总结:
"成功使用agentic开发的团队,将是那些认识到整个软件开发生命周期需要协同演进的团队。"
我的补充:
"成功的一人公司,是那些用AI放大决策能力,而不是仅仅加快编码速度的人。"
八、结论:拥抱人机协作的新时代
8.1 核心结论
现在:AI会编码,但还不会做软件
为什么:
编码是解决孤立的、定义明确的问题
软件工程是管理系统复杂度、做权衡决策
AI擅长前者,后者需要人类
未来:
可能有一天AI也能做软件工程
但那一天还没到来
当下是人机协作的黄金时代
8.2 三个视角的一致结论
Bytesauna的观察:
"Demo到产品的鸿沟,就是AI能力的边界。当你看到AI生成的代码,你会意识到'生产就绪'意味着推倒重来。"
Joe的实践:
"10倍速度需要整个开发生命周期的同步进化。就像给老车装涡轮增压器,如果不升级轮胎和刹车,结果不是更快,而是车毁人亡。"
我的经验:
"AI让我编码更快,但架构设计和工程化仍然是我的核心价值。AI节省了我20%的时间,但我仍需要投入80%的时间做工程化工作。"
8.3 软件工程的本质没有改变
仍然是:
管理复杂度
做权衡决策
确保长期可维护性
服务业务目标
改变的是:
工具更强大了(AI)
速度更快了(10倍)
要求更高了(需要配套设施)
机会更多了(以前做不到的现在可以做)
不变的是:
软件工程的核心——在约束下做权衡,管理系统复杂度——仍然需要人类
架构师的价值——系统性思维、全局视角、长期规划——更加凸显
8.4 给所有人的最后建议
8.4.1 拥抱AI,但保持清醒
拥抱:
✅ AI确实能大幅提升生产力
✅ AI确实能降低很多工作的门槛
✅ AI确实能让小团队做大事
✅ AI确实能让个人开发者实现以前不可能的项目
清醒:
⚠️ AI不是银弹
⚠️ 编码只是软件工程的一部分
⚠️ 质量和速度需要平衡
⚠️ 架构和决策仍需人类
8.4.2 投资正确的能力
短期(立即行动):
学会高效使用AI工具
建立人机协作工作流
提升代码审查能力
长期(持续投资):
架构设计和系统思维
复杂度管理
业务理解
权衡决策能力
永远重要:
好奇心和学习能力
解决问题的能力
沟通和协作能力
8.4.3 建立工程体系
不要:
❌ 只追求速度
❌ 忽视质量
❌ 跳过测试
❌ 省略文档
❌ 积累技术债务
要做:
✅ 建立代码审查流程
✅ 投资测试基础设施
✅ 完善CI/CD
✅ 记录架构决策
✅ 保持技术债务可控
✅ 建立监控和告警
8.5 最后的思考
Joe的展望:
"我对agentic开发的潜力感到非常兴奋。我认为它不仅能提高软件开发的效率,还能让我们解决以前太小众或太昂贵而无法解决的问题。收益是真实的——我们团队的10倍吞吐量增长不是理论上的,而是可衡量的。"
Joe的警告:
"但这些收益不会在我们简单地把AI代理嫁接到现有开发实践上时实现。就像给轮胎窄、刹车旧的车加涡轮增压器,结果不会是更快的圈速——而是撞车。在10倍代码速度下,我们当前的测试、部署和团队协调方法成为限制因素。瓶颈只是移动了。"
我的总结:
"AI会编码,但还不会做软件——这既是现实,也是机会。"
"现实是,软件工程师(尤其是架构师)的价值不会消失,反而更加凸显。我们的核心价值从'写代码'转移到'设计系统、做权衡决策、管理复杂度'。"
"机会是,我们可以用AI放大自己的能力,做以前做不到的事。作为一人公司,我现在能做以前需要小团队才能完成的项目。作为架构师,我能更快地验证想法、更好地服务客户。"
所以:
让我们拥抱这个人机协作的新时代
用AI增强我们的能力,而不是被AI的速度拖垮
专注于AI难以自动化的核心价值:架构、决策、复杂度管理
建立配套的工程体系,让高速开发可持续
记住:
编码只是软件工程的一小部分
AI让我们更快编码,但也要求我们更好地做工程
真正的机会在于让以前"太贵"的最佳实践变得可行
软件工程的核心——在约束下做权衡,管理系统复杂度——仍然需要人类
AI会编码,但还不会做软件——这是挑战,更是机遇。
参考资料
The New Calculus of AI-based Coding
Joe Mag, 2025
https://blog.joemag.dev/2025/10/the-new-calculus-of-ai-based-coding.htmlAI can code, but it can't build software
Bytesauna
https://bytesauna.com/post/coding-vs-software-engineering
如果这篇文章对你有帮助,欢迎点赞、收藏、转发。也欢迎在评论区分享你的经验,我们一起交流学习!
我是 dtsola【IT解决方案架构师 | 一人公司实践者】 ;专注商业、技术、一人公司、个人成长分享。
提供服务:AI项目咨询 | 技术解决方案 | IT项目实施 | 企业技术顾问
博客:https://www.dtsola.com
公众号&微信:dtsola(交流经验、商业合作、IT咨询;加微信,请备注来意)
#AI编程 #软件工程 #架构师 #一人公司 #独立开发者 #技术管理 #程序员 #技术博客 #职场成长 #创业