2024 年底的独立开发长什么样子?人人都能且都应掌握的技术到什么程度?
作为一个独立开发(玩)半年的非 CS 专业学生,介绍一下自己这半年的心得,以及一个普通人能够用AI做到的事情。
由于精力分散等等原因,我目前的独立开发没有什么成果,基本处于玩的状态。即便如此,学习的过程极大提高了我的认知。一次次的实践让我迈出第一步,以及一步又一步。虽说不好听,但真正开始做事情更像是走下坡路,迈出一步之后就会越走越快,亲身体验和动态学习就是重力加速度。
我的第一步
24 年春天,市场营销的课上,沈老师对 AI 很感兴趣,和我们分享了很多 AI 能做的事情,其中就包括编程。此前我稍微学过 Python,但不是很精通。但我一直以来对 AI 很感兴趣,22 年秋就开始用 GPT了,对这方面的新闻也一直非常关注。
市场营销课后我就试着和 GPT 交互,让他给我生成了一个肤色识别,并推荐穿搭配色的小应用, 以下是部分代码。
当时的效果如下:
虽然说功能性上来讲一般,也并没能真正实现穿衣配色,但至少识别对之前的我来说是不可想象的。而现在我知道,我想做的事情是可以让 AI 协助我完成的,于是我开始经历探索和认知爆炸的过程。
闻记
我一直对语音有向往。年中的时候想要搭建一个可以自动总结的语音备忘录。
借助 GPT 的帮忙,我在 jupyter notebook 里实现了语音转文字、文字总结这个功能。从这个项目开始,我开始对 LLM API 甚至大部分 API 的调用习以为常。
以免有人不知道 API 是什么,我在这里解释一下。
- 一个软件,不是所有功能都需要开发者亲自手打。
- 有时候别人已经做好了这个功能,这时候,你只需要调用这个功能的 API 就可以了。
- 大部分时候需要付一点钱。
- 大部分时候会有一个 API_key。
我的语音转文字再总结 就是调用了微软Azure 的语音识别和 Groq 的 LLM API,所以说实际的应用搭建只是把这两个功能串在一起罢了。而这在 Jupyter notebook 上格外简单。
于是第二天就传来了Apple要在 ios18 语音备忘录里加语音总结的功能。这时我意识到了两点:
- 这个行业风起云涌,个人像是海里的虾米,市场上的大鱼打喷嚏吸气的功夫你就不见了。
- 对我来说,执行比想法更重要。
不久之后,我还会意识到:人不能只会 jupyter notebook。
即刻和CS25
最近两年看新闻经常会上Telegram,上面的链接经常会链到即刻,长此以往,我便下载了一个。之所以一开始还有些抗拒是因为我印象里以为即刻就是个发段子的地方,后来发现是记错了,那个可能是最右?不过总之,即刻是现存最真实的中文社交平台,就在今天我还发了条即刻称赞这个软件。
在这里,我进入了一个 CS25 的课程群。这是斯坦福开的一门线上课,每个人进 zoom 都可以听,不过我几乎没有听过。但在这个群里我第一次感受到了信息的聚集,以及真正的从业者是如何看待 AI 的,面对新技术的产生大家是如何投入应用的。
也是在这里我认识了一个想要找人帮忙搭建一个 AI 工作流的人。具体的细节我就不讲了,但总得来说是信息获取+AI 处理。我用 jupyter notebook 几天就搭成了一个 MVP,他给我转了 500 人民币。
我从和他交流中学到了:
- 钱很重要
- 不是所有产品都能赚钱
这些简单的道理对之前的我来说就是盲区,会想当然的觉得什么东西很酷,就去做,而不考虑自己的投入与产出。但你之后会知道,我现在还是这样。
之后这个朋友提到了 Nextjs,让我去学。当时我觉得建网站对我来说是遥不可及的事情,看了两天教程就到了期末月,也就暂时搁置了。
暑假——Cursor, Next.js & Vercel
到了暑假,我才再和他联系建站的事情。他给了我一个 github 上 Next.js 的模板,让我把我们做的一个项目套上去。
此前我一直用的是 GPT plus 和 VS code,让 GPT 写代码,复制到 VS code,报错,复制,复制,复制……
但到了暑假,Cursor 火了起来,我便开始用 Cursor 编程。在这里先四个功能讲清楚 cursor:
- 代码自动补全,打几个字母,tab、tab 就能补一堆
- command L AI聊天,修改代码
- command K,AI编辑器里修改,更快
- command I,AI编辑整个仓库,添加文件、跨文件修改
当时的我还只会 1 和 2,但也足够了。
这次我建站的方式是直接上手 Next.js。在这里再简单介绍一下我理解的 Next.js:
- 一个网站框架
- 搭载 Javascript 或 Typescript,后者可以理解为前者的一种特殊形式
- 同时包括前端和后端,前端主要指界面和交互,后端主要指功能和数据,所以格外适合全栈开发。
- 为什么适合全栈开发?一般的大程序需要前后端分离,多部门协作,而全栈开发可以自己解决,一把梭,这时就没必要分离了。
- 部署方便,可以直接部署到 Vercel (和Next.js同一个公司的云服务平台)上。
虽然我此前没有学过 Typescript,但有了 GPT 的帮助我就是敢直接上手。结果到最后,仅仅套模板就花了我一周的时间,才勉强搭建好一个多语言+支付的 landing page。
在不断 build,error,copy,paste 的过程中,我也对 Vercel 有了一定的认识。这是一个对于个人试水来说非常方便的平台,一键部署,不需要购买服务器,不需要购买域名。
此前我使用 git 是很吃力的,用 github 上的东西都倾向于下载压缩包。在这里简单介绍一下我理解的 git:
- 一个代码(文件)的上传、下载、同步、版本管理工具
- github 是最大的存储代码云平台之一
- 最好在 terminal(终端)使用
随后,我还建了这个个人博客。这个博客的技术栈比较不同,我用的是阮一峰推荐的 Jekyll,这也是一个网站框架,他说适合 blog,那我就相信他。但主要的工作还是套模板、git 上传。这里还涉及到一个和 Obsidian 同步的方法,我之后专门讲一下。
艾逗笔社群和 Cloudflare
因为在即刻上看到有人跟着艾逗笔的社群学全栈开发,成果还不错,所以我就也花报名费进群了。同时哥飞的出海群也很火爆,但是他们主要做的是 SEO,在我看来偏向营销,而我可能更想学技术、做产品,所以就加入了艾逗笔的社群。
这个社群让我实现了从零到一的突破,让我更加相信如果想做一个东西就可以做出来。不论是看群里的学习视频,还是直接在群里面发消息求助,都能解决问题。说实话到现在我都没充分挖掘这个社群的价值,里面的视频我可能只看了十分之一不到,但这个社群对我认知的建立还是有不小的帮助的。
我加入社群是适逢艾逗笔从 Vercel 迁移到 Clouflare, 所以我第一个上线的网站也就是我的个人网站,也是在 Cloudflare 上部署的。Cloudflare 就是那个我们经常看到的验证“你是否是人类”。
它的好处是对小个体完全免费,并且相对靠谱,在这里部署自己的网站不需要花钱买服务器。
但最蛋疼的地方就是很多东西都不支持,比如 python,即便避开了不支持的东西,最终实现部署也不是一件容易的事情。
对一个编程主要靠 AI 的人来说,做一个产品花时间最多的永远是:
- 各种包的适配
- Cloudflare 部署的各种限制 到现在我也没走出这些坑。
服务器
时间穿越到两个月之后的黑色星期五,我的英国交换学期已经接近尾声。在消费的狂欢中我 8+256 的 M1 Macbook Air 显得越来越卡顿,内存、存储统统不够。然而钱包却告诉我不应该买最新的 M4 Macbook Pro。在寻找解决方法的时候我才第一次接触 VPS。
VPS 就是一个远程的虚拟主机,可以在上面装系统并通过自己的电脑远程访问。此前我就接触过,但当时觉得很不顺手。
现在随着我对命令行的逐渐熟练,并且有了一定的 Linux 操作经验,我再上手 VPS 发现没那么困难了。并且由于一个新的系统上不会有很多遗留问题,我的开发反倒变得更流畅了。
还是黑色星期五,我花每个月 4 刀左右租下了一个 8+256 的服务器。这对于我的钱包来说是最好的方案了。
最重要的是它解决了我 Mac 上内存和存储不够的问题。我平时工作至少会同时打开 Claude,Obsidian,Cursor,Arc。这四个软件对 RAM(运行内存)来说都不是省油的灯。如果我这时候再想跑跑我的代码,微信就会跳出来说存储空间不足,或者跳出来一个内存不足。
我有一个1T 的移动硬盘,但是我电脑上更多的东西是没法迁移的。以下是我刚刚清理并重启过的状态。此前我的电脑剩余存储空间常徘徊在 1GB 以下。
在开始用服务器时候我才发现 Cursor 或 VS Code 是支持 SSH 连接服务器的。这就意味着不需要在虚拟机上装 AI 软件,就可以完全实现远程 AI 编程了。这对我这样一个只会用 AI 写代码的人太重要了。
但截止 2024 年 12 月,我还不会在自己的服务器上部署网站,希望在流量小的情况下这个方案会比 Cloudflare 便宜且方便。
我做了什么?
虽然用 Nextjs 试水了不少项目,但我最顺手的还是 Python。用 Python 写 API 是我遇到最少阻碍的工作。纯粹的前端我应付起来也没有什么问题,因为AI 生成的一般不会有什么大问题。但最让人头痛的有三个:
- 登录
- 支付
- 多语言
这三个都不算特别难实现,但是相比普通的前端来说就困难太多了。而如果这三个同时加上 Cloudflare,限制就更多了,我至今没有成功在 Cloudflare 上部署过一个支持登录、支付、多语言的网站。不过我还没有看过艾逗笔社群的相关视频,我相信会给我很大帮助。
我现在的水平就是能做一个很粗糙,时不时可以运行,前后端分离的网站。 https://translatewise.vercel.app/
接下来
短期内我可能不会投入很多在全栈开发,因为时间变得紧迫我可能需要花更多时间学习专业知识。不过在学习的过程中我可能需要更多使用我的服务器,并且想办法解决算力的问题。
总得来说,我现在不会很惧怕编程,我会认为只要投入的时间足够多,我想做的事情是可以做到的。这和之前的略知一二,是有本质的区别。