网站首页 > 技术文章 正文
Adam Wathan(Tailwind 创始人)分享了他对AI辅助编码的态度转变及实际应用经验。
起初他对AI编程持怀疑态度,认为“AI一气呵成”写代码缺乏真实意义,但在实际用Cursor AI辅助完成全项目编码后,发现它能显著提升效率,像是有一个懂得他意图的搭档实时协作。
尽管AI仍需大量监督和校对,但整体节省了重复性、繁琐的“苦差事”工作,使他能更专注于设计和架构层面的创造性工作。
Adam区分了用AI进行学习(ChatGPT)和编码(Cursor)两大场景,强调一定要结合自己的专业知识,否则AI结果容易出错。
AI快速迭代与升级,未来工具会更趋智能且深度适配个人风格。
另一方面,AI对业务发展带来冲击,比如搜索流量减少更依赖用户社群和个人品牌,且免费工具带来的维护负担大于收益。Adam期待借助AI打造智能自动化流程,推动Tailwind及自身产品创新,同时也在侧面探索视频编辑等新领域。
整体来看,AI并非取代编程,而是极大增强资深开发者的生产力和创造力,同时改变整个行业生态。
下面是访谈实录:
以下是这段对话的中文翻译:
贾斯汀·杰克逊(Justin Jackson):亚当,你还有其他使用AI的方式吗?这实际上是我第一次听你提到你在使用AI。我甚至不知道你是支持它还是反对它。
亚当·瓦森(Adam Wathan):我以前比现在更怀疑AI。我觉得问题在于,我看到大家都在谈论“一次性完成某件事”或者“凭感觉编程”,这在我看来就是胡扯,根本不有趣。对我来说,我喜欢编程。为什么要放弃编程呢?但尤其是当“代理模式”(agent mode)功能出来之后,我开始看到它的更多用途。因为我强迫自己下载了Cursor,然后尝试从零开始构建一个完整的项目——就是我们不久前发布的一个课程平台模板。这是一个非常动态、能做很多事情的Next.js网站。我强迫自己完全不手动敲代码,而是让电脑替我写代码,就是想把自己逼到极限,看看效果如何。因为在我心里,我觉得如果我得告诉它每一步该怎么做,那我自己做不是更快吗?但事实证明,并不是这样。自己动手还是没那么快。
布莱恩·卡塞尔(Brian Casel):就因为它能一次性创建多个文件,就已经很厉害了。
亚当·瓦森:是的。而且它的感觉就像是你把脚翘在桌子上,和旁边一个人结对编程,这个人能理解你想做什么,然后直接帮你完成。你知道那种感觉吗?
布莱恩·卡塞尔:是的。而且很多怀疑者会说:“但它只会吐出一些我没法用的垃圾代码。”
亚当·瓦森:那是因为你没有明确告诉它该做什么。
贾斯汀·杰克逊:所以你还得一直盯着它,对吧?就像……
亚当·瓦森:说实话,确实得一直盯着,但即便如此,它还是更快。你得批准每一页、每一个改动。所以有经验的开发者可以阅读它生成的代码,然后进行优化。但另一个事实是,这项技术进步得非常快。我现在主要用的是Claude Sonnet 4,但即使是3.7版本,也比六个月前的模型好太多了。
布莱恩·卡塞尔:不仅是编程能力更强了,它对Rails框架的约定也更熟悉了,而且它还能更好地理解我的项目。当它生成新代码时,它会先读取我的代码库,理解我在其他地方是如何实现某些功能的,然后基于此进行开发。它真的很擅长适应。你还可以更进一步,比如用Cursor工作一天,刚安装好就试一试。但如果你已经用了六个月或一年,那你就可以开始定制Cursor的规则了。
亚当·瓦森:其实我从第一天就开始这么做了。每当我发现它做错了什么,我就会把它加到一个规则文件里,确保以后不用再让它犯同样的错误。比如在我们的Tailwind项目中,如果它用了底部边距(bottom margin),而我总是用顶部边距(top margin),我就会加一条规则:“除非特殊情况,否则不要用底部边距。”或者像一些常见的操作流程,我也会把它固化成规则。
贾斯汀·杰克逊:所以你发现真正解放你的,是意识到AI让你能做更多编程工作,而不是更少?
亚当·瓦森:没错。比如,Steve在Figma里有一个图标,我需要把它导入到项目中,优化SVG文件让它体积更小,再把它转成React组件,添加一些属性,方便我在使用时加样式。以前我的流程是:在Figma里右键,用某个工具把SVG导出来,再粘贴到另一个网站转成HTML,然后再转成JSX,最后在VS Code里新建文件,粘贴进去,命名文件……现在我只需要在Cursor的聊天框里说:“把这个图标加到我的项目里”,然后直接粘贴SVG代码。因为我告诉过它:“每次我粘贴SVG,你都要优化它,文件命名要按这个规则来,确保它总是有这些属性。”现在我只需要说一句话就行了。而以前那些步骤对我来说完全没有智力上的刺激,纯粹是体力活。所以对我来说,真正的突破是意识到AI让我能做更多编程工作,而不是更少。
布莱恩·卡塞尔:兄弟,这就像我们应该把脑力花在设计上——设计架构、用户体验。而我们作为全栈开发者的技能,现在是用AI来实现我们的设计。我们仍然可以接触代码库,仍然可以按自己的方式调整代码,也可以让Cursor按照我们的方式去构建。
亚当·瓦森:是的。
布莱恩·卡塞尔:这就是为什么我觉得,你在这个行业经验越丰富,在这个新世界里就越有优势。
亚当·瓦森:我试过用AI去做我不懂的事情,结果一团糟。比如前几天我想尝试做一个Swift UI应用,但我从来没做过,结果就掉进了“AI自信地给出错误答案”的陷阱,而我根本不知道它错了。但当你对某件事很熟悉的时候,我发现AI更像是“键盘快捷键的超级加强版”,它能让我更快地把脑子里的想法变成屏幕上的代码。就像我刚开始用Sublime Text时,多光标功能让我可以更快地把想法变成现实。我和AI的关系也是这样。
布莱恩·卡塞尔:哇。对于那些正在开发新东西的人来说,我觉得现在可以用AI去做更雄心勃勃的项目了。比如我做的Instrumental Components,如果没有这种开发方式,我肯定做不出这么复杂的功能,或者我会做一个简化版。
亚当·瓦森:是的。我发现把“用AI学习”和“用AI编程”分成两件事会更有效。我从来没有成功过让Cursor帮我学我不会的东西,结果总是生成一堆有bug的代码,我自己也搞不懂。但如果你去ChatGPT问:“我该怎么做?这个思路对吗?”它就很适合用来问这种“傻问题”。
布莱恩·卡塞尔:我一直在用这种模式:先用ChatGPT,因为它有记忆功能,知道我的偏好和历史聊天记录,所以我把它当作我的“战略顾问”,用来讨论架构设计。然后我可能会再找Claude确认一下:“你和ChatGPT的建议一样吗?”最后当我准备好动手时,我就打开Cursor:“好,现在开始做。”
贾斯汀·杰克逊:你也是这样吗,亚当?用Cursor写代码,用ChatGPT学习?
亚当·瓦森:是的。虽然我想试试其他工具。我们团队很多人在用Claude Code,反馈很好。我听说它在很多情况下比Cursor表现更好,而且它更符合我的喜好——它是一个终端工具,和编辑器是分开的。Cursor可能是因为同时弹出太多提示框,我不知道该用哪个,感觉有点乱。
布莱恩·卡塞尔:别用那些直接覆盖在代码上的弹出框。
亚当·瓦森:对,我就喜欢用聊天侧边栏。
贾斯汀·杰克逊:有趣。布莱恩,你觉得未来所有应用都会内置聊天功能吗?
布莱恩·卡塞尔:是的,现在已经在发生了。比如Descript现在也有一个类似Cursor的聊天功能,叫Underlord。贾斯汀,你试过Figma里的聊天功能吗?
贾斯汀·杰克逊:还没。你觉得这些侧边栏聊天功能好用吗?
布莱恩·卡塞尔:我昨天试了Descript的,还不算很好。但Figma现在也在做类似的功能。还记得Figma第一次宣布AI功能的时候吗?当时设计师们集体反对,因为AI一键生成UI的设计让他们觉得被威胁了。但现在我觉得AI更适合用来做那些枯燥的重复工作。比如Steve设计了一个侧边栏,有三个链接,他想再复制七个,AI就可以帮他搞定,还能自动填充示例内容。
贾斯汀·杰克逊:是的。
亚当·瓦森:对我们来说,AI的影响已经显现了。虽然vZero是我们的竞争对手,但我们也在适应。比如我们的文档,如果直接提供LLM友好的Markdown版本,可能会影响我们的流量,因为我们的商业模式依赖网站流量来推广产品。所以我不确定该怎么平衡。
布莱恩·卡塞尔:我觉得结论是:个人影响力比以往更重要了。
亚当·瓦森:是的。另外,如果你做的工具能解决问题,还是能找到客户的。虽然AI在很多方面和我们竞争,但我现在更乐观了。因为我觉得像Tailwind UI这样的设计库,仍然有它的价值——它提供了一个经过策划的设计起点,比从零开始用AI生成更高效。
贾斯汀·杰克逊:是的,而且是由你和Steve主导的设计。
布莱恩·卡塞尔:现在的问题是,所有东西都在用Tailwind,这对你们来说既是好事也是坏事。
亚当·瓦森:是啊,烦人的是,全世界都在用Tailwind,但我们从中获益很少。我们甚至要养一个团队来维护免费工具,而这些人拿的薪水比我们赚的还多。
贾斯汀·杰克逊:是的,这确实很艰难。
亚当·瓦森:所以我已经在准备“下一件事”了。比如我们正在给Tailwind UI添加JavaScript支持,以前这会是一个开源项目,但现在我们打算把它作为商业产品的一部分,因为免费维护的成本太高了。
布莱恩·卡塞尔:你还在做一个官方付费的Tailwind课程?
亚当·瓦森:是的。这个课程的独特价值在于它是我亲自教的,适合想了解我工作方式的人。而且它还能为我们现有的客户带来额外价值,毕竟我们的网站每月有上千万访问量。
布莱恩·卡塞尔:听起来是个好主意。
亚当·瓦森:另外,我和Steve还在设计一款视频编辑软件,因为我们在制作内容时也遇到了很多痛点。虽然要学很多新技术,但这对我来说有点“轮回”的感觉——我大学时就想做一个音频编辑工具,因为我对Pro Tools和Logic有很多不满。Steve也有类似背景,他学的是音频工程。现在我们终于有机会设计视频编辑软件了。
贾斯汀·杰克逊:你肯定得学很多新技术。
亚当·瓦森:是的,但也很有趣。就像当年我想解决录音棚里的工作流问题一样,现在我们想解决视频编辑里的“繁琐工作”——比如怎么自动删除所有不好的镜头,只保留最好的那一段。
布莱恩·卡塞尔:甚至自动加字幕?
亚当·瓦森:是的。还记得2015年吗?我们当时觉得播客没有字幕是一种罪过,还讨论该用哪个转录服务。现在这些都变成免费、即时的功能了。
贾斯汀·杰克逊:是的,我刚才还用iPhone录了个语音备忘录,它直接转成了文字。
亚当·瓦森:太疯狂了。
贾斯汀·杰克逊:所以总结一下,我们都在实时适应AI的变化。它显然是一个范式转变,行业的地基都在移动。大家都在摸索。另一个趋势是,人们开始思考:如何利用AI去做我们以前做不到的事情,打造“下一阶段”的产品?比如亚当的视频编辑软件。
亚当·瓦森:关键是要行动起来,别逆流而上。先动手试试,哪怕只是做一个小项目。我就是这么学的——强迫自己完全不写代码,让AI来做。虽然这不是我的终极目标,但它让我快速掌握了AI的能力。
布莱恩·卡塞尔:创意和工艺体现在前期——比如定义需求(PRD)的阶段,这才是我们发挥经验的地方。
亚当·瓦森:是的。AI很酷,它既让人害怕,也让人兴奋。我们都在努力适应。
贾斯汀·杰克逊:最后,亚当还有什么想补充的吗?
亚当·瓦森:两件事。第一,虽然我对“凭感觉编程”不感兴趣,但能用AI快速定制工具解决小问题真的很棒。比如我做了一个健身追踪工具,完全没看代码,只是告诉它UI该怎么改。我还做了一个间歇计时器,AI两秒就搞定了。第二,我现在开始研究如何构建自定义AI自动化流程。比如让服务器定期检查CSS博客,发现新特性后自动生成Tailwind的PR——这已经有人做到了,而且今天就能实现。如果结果不好,直接关掉就行,总比让人加班强。
布莱恩·卡塞尔:这就是未来——用没有感情的机器代替人类干活。
- 上一篇: 每个开发者都应该知道的20个Git命令
- 下一篇: 计算机图形学:变换矩阵(图形学 矩阵变换)
猜你喜欢
- 2025-07-07 每个开发者都应该知道的20个Git命令
- 2025-07-07 一键转化github开源仓库为交互式教程神器-Code2Tutorial
- 2025-07-07 7种解决Next.js中累积布局偏移(CLS)的方法
- 2025-07-07 纯前端轻量级的神经网络库brain.js
- 2025-07-07 前端工程师都会喜欢的5个JavaScript库
- 2025-07-07 5个可学习可二次开发的nextjs开源仓库
- 2025-07-07 一个即使是高级前端程序员也不知道的惊人小技巧
- 2025-07-07 取代JavaScript库的10个现代Web API及详细实施代码
- 2025-07-07 我会在每个项目中复制这10个JS代码片段
- 2025-07-07 8个小而美的前端库(前端库,框架大全)
你 发表评论:
欢迎- 07-07使用AI开发招聘网站(100天AI编程实验)
- 07-07Tailwindcss 入门(tailwindcss中文文档)
- 07-07CSS 单位指南(css计量单位)
- 07-07CSS 定位详解(css定位属性的运用)
- 07-07程序员可以作为终身职业吗?什么情况下程序员会开始考虑转行?
- 07-07云和学员有话说:国企转行前端开发,斩获13K高薪!
- 07-0791年转行前端开发,是不是不该转,有啥风险?
- 07-07计算机图形学:变换矩阵(图形学 矩阵变换)
- 594℃几个Oracle空值处理函数 oracle处理null值的函数
- 587℃Oracle分析函数之Lag和Lead()使用
- 575℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 572℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 568℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 561℃【数据统计分析】详解Oracle分组函数之CUBE
- 548℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 541℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- 前端获取当前时间 (50)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)