AI4SE
TL;DR
- AI4SE的本质是把以前没法自动化的工序自动化,SE4AI的本质是用工程方法帮AI降低信息复杂度
- 如果你无法评价AI生成的内容,你就无法掌控它
- 工程的本质从来没变,控制复杂度
我使用各类AI产品已有相当长的时间,并从方方面面获益良多。随着软硬件生态日益成熟,我们每个人人生的AI含量只会持续增长,这种感受让我充满力量,当然我也清楚这多少有些盲目自信的成分在。我的本职是一名软件工程师,这是一个不过百年的行业。我有幸从Frontend Developer(前端开发)开始,陆续戴过一些不同的帽子,Backend Developer(后端开发)、Devops Platform Developer(运维平台开发)、Technical Business Analyst(技术业务分析师)、Product Owner(产品负责人)、Agile Coach(敏捷教练)、Junior Engineer Sponsor(青年工程师导师)、Technical Leader(项目技术负责人)。这些经历让我对软件的全生命周期有了相对全面的理解,所以在AI来的时候,我有些庆幸自己没有停下对各个工序知识边界的探索,不至于"头疼医头,脚疼医脚"。
前些天在公司内部做了一场AI实践的总结分享,讨论很充分也颇有价值,遂脱敏整理成文。主题是AI4SE(Artificial Intelligence for Software Engineering),简言之就是把大模型为代表的AI技术用在软件工程里。学学马斯克的第一性原理来想这件事,AI4SE的本质,是将研发过程中以前没办法自动化的工序自动化。
有意思的是,实践的时候我们看到了AI4SE的B面——SE4AI。AI本身不可预测、可信性与健壮性不足,这些工程挑战必须应对,反过来就需要一套工程方法来提升我们驾驭AI的能力,而这正是一个"全流程工程师"力所能及的事情。SE4AI的本质,同样拿第一性原理来看,是用软件工程技术降低信息的复杂度,帮AI保持足够的精度。
掌控
我不可能马上成为一名"核弹工程师",即使我有最懂核物理的AI。如果AI生成的内容你没有能力评价,你就没办法掌控它。道理很朴素。
我们面对的问题并不是单纯的知识问答,大多裹挟着庞大而复杂的系统性领域。能不能解决问题,取决于面对问题的人能不能看清复杂生产过程中的工序以及工序之间的组合逻辑。目前AI技术还替代不了这种"领域专家",但它们可以极大地加速拆解的过程,直到工序简单到可以直接被AI完成。我相信将来"如何拆解某个领域问题"本身也会变成AI的能力,到那时候人机该如何协作便是未知数了。
回到当下,我基于实践经验对软件生产过程做了拆解,这个过程本身暗含了大量领域知识,三言两语讲不清细节。但结论很明确,解决软件工程问题靠复杂工序的组合完成,当我们将生产过程拆解到足够细时,AI就能极大地提高效率。
实践
以下每个环节我都在实际项目中验证过,坦白讲效率和质量的提升是实实在在的,限于篇幅和信息安全不便展开,有兴趣的朋友可以私下交流。
项目管理方面,AI在知识管理上能比人更高效地阅读晦涩的遗留代码,生成自然语言文档,作为AI和工程师都能理解的知识(Doc as Code);学新技术栈的踩坑成本也变得极低,以前那些藏在老鸟脑子里的经验终于可以被快速获取了。在规划上能根据模糊需求拆出结构化任务清单和关键路径,在过程监控上能实时追踪进展、识别偏离风险。
设计方面,AI能分析用户反馈和行为数据,识别高频痛点,将模糊诉求转化为结构化描述,快速生成用户故事、流程图甚至交互原型。基于INVEST原则可以主动拆分大型需求,校验故事独立性与可测试性。架构上能直接分析代码库,识别模块结构和依赖关系,生成架构图并给出演进建议。基于自然语言描述就能出UI原型和RESTful接口文档,这在以前是不可想象的。
开发方面,代码补全是最基础的能力,万能的Tab让人极易进入心流状态。代码生成能理解完整上下文,按工程师意图产出从函数级到功能级的代码片段。单元测试的生成质量完全取决于代码本身的可测试性,这一点很关键。编码辅助覆盖了注释、重构、运维脚本、commit message自动生成、智能代码审查,最后这一项把MR的平均响应时间从数小时压到了分钟级。
测试方面,AI能基于MECE原则将需求拆解为测试场景,结合标准化Step库生成符合Gherkin语法的可执行用例并直接集成到CI/CD。数字化业务方面,AI能自动解析日志生成效率看板定位瓶颈,基于RAG技术做故障根因定位并将排查过程沉淀至知识库。
在实践中我总结了一套和AI协作的法则,叫CPRO。C是Context,给充足的上下文和约束;P是Persona,赋予AI专家身份获得专业输出;R是Reasoning,要求分步推理验证合理性;O是Objective,明确最终目标并愿意多轮迭代。核心逻辑仍然是回归工程问题的本质,控制复杂度,帮AI和人类建立约束和上下文。
最后分享几句让我很受启发的话。Kent Beck说"AI夺走了我过去90%的能力,但它把我剩下10%的能力放大了1000倍,这10%是品味、判断力和对需求的深刻理解"。Andrej Karpathy说"我们正在经历编程的抽象层次跃迁,过去用汇编、用C、用Python,现在我们用英语,Prompt就是新的编程语言"。凯文·凯利说"AI时代,人的价值不在于完成任务,在于承担责任"。Grady Booch说"AI在软件工程中的真正影响将贯穿从需求分析到验证确认的整个生命周期,成为我们推理和构建复杂系统的伙伴"。四个人从不同角度讲了同一件事——人的判断力、品味和责任感,才是这个时代最稀缺的东西。
回到最开始的那个感受,AI的确让我觉得充满力量,但冷静下来想,它终究是工具,强大但不万能。你得懂你在做什么,它才能帮你做得更好,否则它帮你做错得也更快。所谓掌控,大概就是这么回事。
工程的本质从来没变过,控制复杂度。AI不过是给了我们一把更趁手的家伙,但手艺得在自己身上。
欢迎交流
如果你觉得文章有帮助,欢迎加我微信或关注公众号,获取更多内容

