这段时间真的很忙,一个月之内利用 LLM 的帮助,居然做出了 4 个不同的项目。这些项目包括了一个相当有趣的 web app 的前后端(React + Python FastAPI),一个对我很有用的 native iOS app(SwiftUI),一个数据库 SQL 优化相关项目,另一个独特功能的小型 iOS app(SwiftUI)。
两个 iOS app 都是我一直希望有,却到处找不到,所以我就自己动手,丰衣足食了。不过更具体的信息我现在得保密,因为世界上 copycat 太多了。
我之前说过我会成为一个顶级的“产品经理”,现在我已经是了。喔不,其实我一直就是,只不过一直被埋没着。不停冒出新的想法,我想的是如何改进产品,提高用户体验,而不只是代码的细节。昨天还想着大功告成,今天可以休息了,结果到今天又想出更好的功能加进去,或者用户体验还可以改善。告诉 LLM 去实现这个,然后它又有很多地方没弄对,害得我手把手地指导它,结果一天又过去了。就这样反反复复。
我不得不承认,这是在之前我肯定不会做的事情。不是我不能做,而是我真的不想看那些复杂混淆不堪的技术文档。我不想上网到处搜索各种愚蠢问题的解决方案,一篇篇地浏览 StackOverflow 却还找不到结果……
虽然目前最好的 LLM 模型写出来的代码,也只能算是中下游水平。就像很多公司里的程序员,LLM 写出来的很多代码我几乎不能看,不想碰。稍微不小心就给你改得乱七八糟,前功尽弃。但我却和它合作了这么久,小心地控制它,并且成功的“引导”它,提出各种简化和 refactor 的建议,最后提炼出干净利落的项目代码。当然有时候我也必须手动改代码,因为有时候它实在太傻,反复指出具体的细节却也没法理解。没办法。
既然它产生的代码那么差,我为什么还在用 LLM?因为虽然它生成的代码水平低,经常混淆不堪,但那也比我自己去看*更加混淆不堪*的技术文档,从头“学习”要好。这里的“学习”加了引号,因为我并不认为这些“技术细节”是什么有价值的知识,真的值得学习。都只是一些你知道就知道,不知道就不知道,知道了一个也没法启发另一个的死信息。就像有些人,把家里的工具放在他自己才能找到的地方,别人想解决问题都不知道怎么办,因为找不到工具。知道工具放在哪里,那也叫知识吗?
而且,它的代码水平虽然在我眼里相当差,但还是要高于某些我之前合作过的同事的。所以,我觉得还能忍。😄
这就是为什么我需要 LLM,因为它知道那些破玩意怎么用,它可以帮我折腾那些我不想碰的东西。虽然它使用它们的方式让我觉得可笑,但它不是不可救药的,而且可能会变得更好。虽然 LLM 恐怕永远也不能达到我的高度,但我认为它已经够好了,所以我使用它。
LLM 会变得越来越好,但我也会一直变强。我总能利用 LLM,解决它解决不了的问题,从中学会它不会的事情,总是走在它前面。
所以掌握了精髓知识的人有了 LLM 帮助,几乎是无敌的。这些项目可能每一个都要耗费一个公司团队几年的时间才能做好,我却在一个月之内做出来了。之前做 PySonar 我还是做了好几个月的,虽然那本来也需要消耗 Google 自己的团队几年的时间。现在我的能力又翻了很多倍。
但很显然,并不是每个人都能用 LLM 一下子做出从来没做过的项目,使用从来没用过的语言和“框架”。我为什么能做到呢?因为我掌握了本质和精髓的知识,我一看它写出来的东西,就知道那是怎么回事。我立即能知道它做错了,并且能告诉它如何改进,如何避免各种陷阱。
所以在这么短的时间之内,可以说我突然掌握了好几种之前没怎么用过的技术:React,SwiftUI,Python FastAPI,各种异步和并发代码,SQL 语言的 parser/语义处理和一些数据库内部技术,UI 设计和实现细节,LLM prompt engineering 等等…… 不止是肤浅的理解,而是比 LLM 生成的代码深刻很多的理解,不然我是无法驾驭它的。
按照这个节奏,我应该可以实现任何我能想到的项目,使用任何技术…… 因为我立即就能开始做,而不需要去看 tutorial 慢慢地重新“学习”。
使用 LLM 的时候,我就像在指导一个水平一般但速度很快,有很多经验的程序员(俗称码农)做事。我觉得这种"vibe programming"相当有趣,并不是什么值得鄙视的事情——但前提是你得有能力指导它,否则你会被它玩得团团转也解决不了问题。
总有人说 AI 会让程序员失业。确实,它可能会让那些死记硬背,不懂本质的人失业。我并不在乎那些人,相反我认为他们长期占据着不应有的职位,拿着不应有的高薪。那些人经常自以为是,给我舔麻烦,有些还嘲笑我。现在 LLM 要取代他们,我其实是暗自高兴的。我很确定的是,AI 无法取代懂得精华知识,有真正洞察力的人,它会成为他们得力的助手,让他们所向无敌。