原创 ElfeXu 2024-09-24 01:42 上海
开发玩具级别的游戏没啥用啊~~要玩儿真的,就得这样一步一步跟着 AI 学
从去年三月 GPT4 发布会上一个由手绘草图直接生成网站的 demo 惊艳众人开始,很多人就认为程序员工种已进入倒计时。最近 cursor 和 o1 的出现,更是让非技术同学们热切期盼:是不是真的能再也不“就差一个程序员”了呀!
很遗憾,现实依旧骨感。demo 还停留在贪吃蛇,太小巧也太普通。真正的应用会有复杂得多的特殊需求,代码量也会超出 AI 单次吞吐量,AI 根本无法直接搞定。(o1?o1 的能力确实强了很多,但其实还是不够。后面找机会另写文章详解吧。)如果你请教号称“我不懂编程但靠 XX 开发了 XXX”的技术小白该如何开始,多半会得知他们多少还是懂一些 css 或 python。
而纯小白,一开始通过 cursor 里的对话创建好起始文件后,往往会无从下手——到底要在哪里敲什么字符,才能触发一连串美妙的 tab 让 AI 开始自动工作?
对于纯小白来说,如果你的需求远比 AI 直出的内容复杂,无法一次性直出。那就耐下性子,在 AI 的帮助下一步一步来,并在这个过程中学会一点点编程。
推荐你从一个最最基础的小任务开始让 AI 先帮你按照 best practice 写一个 say hello 的示例程序,并解释每个文件的作用及程序运行的逻辑。这样,你可以通过最基础的绝对不会出错的小任务,来学会必备的调试技能。
“我在学习写 chrome 插件。请选择最适合小白上手的技术栈,按照 best practice 为我生成一个简单的示范项目,但要包含尽可能全面的典型文件和功能。请为我讲解每个文件的作用和程序运行的逻辑。”
此处要求 AI 按照 best practice 来写非常重要:文件一开始就有良好的组织,后续功能复杂了才不会乱套。
还有一个偷懒小妙招:如果你用的是 o1-mini,你可以在 prompt 最后添加这句:
“请生成 create.sh 脚本,运行脚本就能直接创建插件所需要的所有文件。请教我如何运行脚本。” (如果 windows 机器则是 create.cmd ) 足够勤勉的的 o1-mini 会为你生成一段超级长的代码,并给出提示,你只需要复制粘贴并执行,一次性生成十多个目录和文件,超方便。
你可以通过和 AI 的对话,来逐步明确项目需求。(如果你是训练有素的产品经理,可以忽略这一步)
“我想要开发一个 XXX。你能否像一个高级别的还懂技术的产品经理指导初级产品经理那样,向我提问,帮我梳理清产品功能,尤其要注意可能会涉及到技术方案选择的关键点。请一问一答,帮我由全局到细节逐步梳理。不要一口气问我太多问题。”
来来回回的对话后,你可以让 AI 帮助你梳理出产品需求文档。这样的文档会包含影响技术方案选择的细节,比直接给 AI 一段口头的需求描述要准确地多。在后续开发的时候每次新起一个聊天就把文档发给 AI 并告知你现在在做第几点功能,会非常方便。
然后,开始设计 POC 的小项目。
“我是技术小白。我想要开发的项目功能如下。这里有哪些技术点?能否为我一一列举。请尽可能细化,帮我选择合适的技术方案,并为我设计 POC 项目。每个 POC 都应该是一个独立的项目,我好先通过完成 POC 来学会相关技术。”
POC,proof of concept, 可以理解成是实验性小项目。之所以要略显麻烦地采用这样的步骤,是因为 POC 可以足够小,AI 能直接生成。通过研究小项目、搞明白特定技术点是如何工作的,这样后续把功能添加到真正项目中时才不会稀里糊涂。在大项目里添加功能,AI 很可能会顾此失彼频频犯错,AI 给你的代码你若看不懂放错地方也会很难排查。学会了 POC 项目,你就能对照 POC 的代码来搞定大项目了。
这一步,AI 可能犯的错误有——选取不合适的技术栈;拆分粒度不够细;开发路径设计不合理、没有循序渐进。如果有可能,请把 AI 生成的计划给一个老师傅,请他帮助把关。
接下来就是真正的实践了。按照项目规划,学习一个 POC,将其应用到大项目中;再学一个 POC,再运用……
当遇到错误的时候,复制错误信息,复制相关的代码,扔给 AI 让它找错误并修复。
如果用可以识图的 claude 或 GPT4o,截图+错误信息+代码 三件套会非常好用。
听上去简单,但其实坑非常非常多。例如开发 chrome 插件,现在应该开发 manifest v3 的版本(v2 很快就不再支持了),但即便和 AI 反复强调要用 v3 里的功能,AI 还是有可能会给你 v2 的代码,并且在出错后给出的修复也还是混杂了 v2 的方案。没办法,谁让它就是根据概率来的呢。
这种时候,更有效的方式是:找文档(你可以让 GPT 给你文档链接,或者问 perplexity),或者去 stackoverflow 上找答案(注意回答和评论的日期)。
然后,把文档或找到的答案提供给 AI,让它基于这些信息再来帮你修复。这时候,它给的指引会是正确的、且比 stackoverflow 的详细很多。
当然在这一步,如果有可能,你还是找一个老师傅随时为你提供支援。
我之所以琢磨出上面的路径,是因为我的之前只玩过图形化编程的女儿,在暑假超脑 AI 黑客松期间,靠 Claude 和我的帮助,用 Unity 开发了一个 RPG 小游戏(C#,用到了 coze 的 API)。
起初我并不相信纯小白能通过 AI 搞定 Unity 程序,我甚至建议她找助教要一个更符合需求的脚手架、只要复制粘贴改一小段代码就能用的那种。但女儿不服气——什么都是助教搞定那也太没意思了——她决定做一个最简单的任务:让 Claude 教她做一个 2D 平面上用上下左右键控制走动的小人,碰到墙壁要能停下来。
半小时,完成了这个任务,也明白了 Unity 里的基本概念。这是一个非常好的起点。
后来的开发有些很顺利,但也时常有挫折。几乎每天她都奋战到凌晨再沮丧地睡去,第二天一早向我求助,我一看——啊,你又被 AI 带坑里了。
被 AI 带坑里的原因很多——她问题描述不清楚,且不知道这种描述在程序员的世界里会被理解成另一种问题,于是,得到了错误的指引;AI 给的方案太复杂,需要有很多前置知识才能搞明白;其实 AI 给的代码是对的,但别的配置错误,AI 没想到要检查丫头也不知道,乱改了很久;
……
这些挫折,让我意识到小白需要通过 AI 能直接搞定的小项目,来先学明白背后的原理,在此基础上才能开发复杂项目。
小小的任务,AI 可以胜任、非常耐心地指导。因此最好是要有人类导师,一开始把任务拆解到足够小,针对性地设计学习路径,并密切关注随时从坑里捞人。
学生-导师-AI 助教三者协作的关系图如下:
而这种协作方式,不止用在 AI 辅助编程上,也适用于其它诸多领域,支持学习者完成目标都由 ta 自己定义的真正的个性化学习。
p.s. 这页 PPT 来自于七月我在成都 life 大会上的分享。过去这两个多月我做了不少分享、培训、课程设计,overwhelmed。我现在大概缓过劲来了可以多写写公众号了吧。请给我加油。