先介绍一下背景。我的主业是后端程序员,在此之前我是专职前端程序员,在 2023 年 7 月份,我开始用 React Native 写一个 side project, 那时候 AI 的能力还比较弱,所以那个 app 绝大多数代码都是我自己写的,这是我个人的背景。今年下半年,我试用了公司内部和外部的代码生成工具,这时候的 AI 已经不仅仅是更强大的补全功能了,而是更像是一个 agent 了,我很兴奋,玩了一整天。上周五,我突发奇想,有了一个 idea ,于是我就想尝试一下尽可能地用 AI 去实现这个小项目,试试到底能做到什么程度。
这个 App 是一个 iOS App ,Life Progress, 很简单,用户输入预期年龄和生日,然后生成一个图表来展示用户的生命进程,最重要的是,支持 widget 。 技术栈是 swiftUI ,虽然我对 swift 一无所知,但是 AI 会。 除了这个 App 本身,我还制作了 App 的 icon 和落地页。这两个也是 AI 生成的。 时间上整个项目我花了三天时间,不过中间要工作、带娃、看剧、玩游戏,所以当然不是 72 小时,按小时计的话,我只能给一个估计,可能是十几个小时左右。
App: https://apps.apple.com/us/app/life-progress-with-widget/id6740145361 落地页: https://lifeprogress.vercel.app/ Logo: https://i.imgur.com/hcgEiNh.png
Windsurf ChatGPT-4o Claude 3.5 Sonnet Gemini 2.0 Flash V0
我是直接在 windsurf 上起项目,刚开始非常顺利,代码很快生成,文件结构也还 OK ,但是 iOS 项目的 .xcodeproj 工程文件没有生成,所以我需要手动在 xcode 中创建,这是一个小卡顿,但是不太影响。然后我就开始优化项目,提出新的需求和代码结构的优化,包括代码结构的优化、year/month 视图的创建、新增 tab 路由、新增 settings 页面。这一切都很顺利,几次迭代后,项目已经颇具雏形。当然这期间我也不断修改需求,好在这只是一个 AI ,不是真正的程序员,否则面对一天内改四五次需求的 PM 肯定早就暴走了。 不过这期间也有磕磕绊绊,主要是对需求的理解上,不过这怪我,没有表述清楚,AI 毕竟无法共情。 然后,我让 AI 开始实现 widget 部分,这部分出现了很多问题。主要是 1. 代码复用, 2. 新的 target 和项目配置
最后快要上线的时候,发现需要一个 logo 和落地页,于是我用 AI 来做这两部分。logo 部分我优先想到是一些 AI 生成 logo 的工具,但是发现生成效果都很烂,基本上跟我几年前用的套模版的那些 logo 工具差不多,还要收费。于是我又尝试用 ChatGPT 直接出图,但是 ChatGPT 的效果我不太满意,而且生成的图不能直接用,不是纯粹的 logo 尺寸和格式。于是我又转而用 Gemini 生成,但是我用的那个套壳工具 Gemini 貌似不能直接出图,我只好让 Gemini 给我生成 svg 代码,最终几次调教后,生成了一个我觉得超出平均分的 logo 。 落地页部分我直接用了 V0 ,效果很惊艳,但是不知道是网络问题还是什么,后续的修改失败了,用完了我的免费额度,于是我只好用 Gemini 生成了最后一个 page ,手动改了一部分代码。
如我标题所说,整个过程里充满了惊喜、失望,整体而言,我的感觉就是“未来已来”。 整体而言,这个项目大约 90%+ 的代码是 AI 完成的,编码部分可能只占用了整个项目的 10% 的时间,但是在项目的构建、配置、debug 部分,可能花了我大概 90% 的时间,但是 AI 能给到的帮助可能只有 50%,主要原因是我对 iOS 开发所知甚少,但是 AI 可能预设了我应该有一些背景知识了,所以能给到的帮助不大。关于这一点在很多其他文章也都提到,就是 AI 编程的 “The 70% problem”,相信未来模型和工程都会更好地解决这个问题。 但是 AI 面对复杂项目仍然有很大的问题,这个项目已经很简单了,但是 AI 仍然会偷懒,会忘记项目的 context ,代码之间的关联关系等等,导致出现很多问题,所以在公司里的生产项目里,我仍然不太敢过于相信 AI 。 正确合理的 prompt 可以极大地提高 AI 的效率,比如说有时 AI 会丢失上下文,所以保证在 prompt 时提及正确的文件、目的很重要。清晰的思路、指令、方案拆解等有有助于提高 Ai 的效率。
LLM 才出现两年,就已经有如此大的影响,所以我觉得未来,软件工程一定会有巨大的变化,目前所有的 copilot 、IDE 、agent 都只不过是这个变化过程中的探索产物。过去我们所有的软件工程原则,都是面向人的,我们需要追求代码可读性、需要代码易于理解,服务划分、代码仓库、文件结构等等,都是以人的可读性为目的的,我们的 IDE 、仓库、构建工具、CI/CD 也都是面向开发者设计的,那么未来,这些软件工程的基础设施,是否会在设计时就考虑到 AI 的接入?我相信一定会的。 LLM AI 会替代程序员么?我觉得不会,LLM 目前的能力仍然不足以应对复杂项目,我觉得未来也不能,但是 LLM 会大幅提高程序员的效率,这一点是毋庸置疑的,但是 LLM 也会制造更多的工作岗位,我们要做的就是 be water ,学习这个新的工具,适应这个新的时代。
1
ohhow 8 天前
我也打算这个人生进度的网站,但不想建数据库做后台,不知道有没有一个公共平台能存储和读取 json
|
2
dongsuo OP @ohhow 可以用一些 saas 服务,比如 supabase/appwrite ,有免费额度,小项目够用了, 好像 mongo 也有,我这比较简单,是存在 iCloud 里的
|
4
ysyah2019 8 天前
请问 OP 是如何完成专职前端 -> 后端转型的?
|
5
sc13 7 天前
只有 ipad 版本能玩吗
|