AI工具在软件开发中扮演重要角色,能辅助编写测试、巩固模式和驱动创新。Windsurf和Cursor各有特点,前者保守,后者快速。信任AI需逐步建立,并维护代码所有权。在提示AI前先提示自己,必要时关闭AI。AI不会取代工程师,而是提高生产力,思考和协作仍至关重要。
译自:10 Insights from Integrating AI into My Coding Workflow
作者:Dieter Randolph
软件开发充满了相互竞争的压力:我们被期望快速行动、不断创新,并且仍然交付高质量、可维护的代码。在最好的情况下,这都是一项艰巨的任务——而这正是 AI 工具可以提供帮助的地方。
在过去的几个月里,我一直在将 AI 集成到我的日常工作流程中,作为 DataStax 的高级软件工程师。最初只是一点好奇心,现在已经变成了一种稳定的伙伴关系:我依靠 AI 不仅仅是为了节省时间,更是为了以不同的方式思考、减少摩擦并加强我正在使用的系统。
作为开发人员,我们都见过炒作来来去去,但这次有些不同。这些工具正在重塑我们与代码库交互的方式、我们调试的方式、我们测试的方式以及我们成长的方式。这一过程并非没有失误,但却令人受益匪浅。以下是我在此过程中学到的 10 个最有见地、最有帮助或最令人惊讶的经验教训。
1. 使用 AI 编写测试
我从来都不喜欢编写测试,这也是我使用 AI 来帮助我的原因之一。但更重要的是,当我亲自编写代码和测试时,我的任何盲点都容易延续到两者中。
AI 提供了第二个视角——就像有另一双眼睛。我通过这种方式发现了不止几个错误,尤其是一些我甚至不会想到要测试的错误。它将测试过程变成了一种早期的同行评审,并使测试更好,从而使代码更好。
2. AI 巩固模式与驱动创新
AI 开发工具的风险之一是,它们通常会强化代码库中已经存在的东西——无论是好是坏。这种可预测性很有用,但它也可能保留有缺陷的架构和错失的机会。
有时,AI 建议“旧方法”正是你为了保持一致性所需要的。但有时,这是一个暂停并询问的提示:这仍然是正确的方法吗?真正的创新仍然需要我们挑战默认设置并朝着更好的模式前进。
3. Windsurf vs. Cursor:第一印象
我一直在大量使用 Windsurf,并且才刚刚开始尝试 Cursor。这两种工具本身都令人印象深刻,但感觉却不同。Windsurf 往往更保守,并且以代码库中已经存在的模式为基础。Cursor 感觉更快、更具实验性——更可能进行猜测和尝试。
如果你正在寻找遵循已建立的约定且可预测的建议,那么 Windsurf 是一个不错的选择。如果你想要快速迭代并且不介意更多的惊喜,那么 Cursor 可能更适合你。
4. 建立对 AI 工作流程的信任
当我刚开始使用 AI 编码时,我持怀疑态度。我真的可以信任机器提出的建议吗?但是信任是慢慢建立起来的——这里抓到一个错误,那里巧妙地重写一个测试——现在我发现自己正在积极地依赖它。
我发现从一个明确的问题(一张可靠的 Jira 工单有所帮助)开始,然后向 ChatGPT 询问伪代码会很有帮助。我将伪代码粘贴到 Windsurf 中,然后让它从那里开始构建。这种工作流程意味着我保持控制,同时仍然受益于 AI 的优势。
5. 将调试面板作为 AI 加速器
Windsurf 有一个我经常使用的强大功能:临时调试面板。我不只是依赖 console.log 或浏览器网络选项卡,而是要求 Windsurf 生成一个面板,该面板在 UI 中显示特定的状态值。我甚至可以截取屏幕截图,包括浏览器控制台,将其粘贴到 Windsurf 聊天中,并获得量身定制的反馈。
视觉上下文非常有帮助,调试面板成为一个用于弄清楚哪里出错的迷你实验室。只是完成后不要忘记清理。
6. 以 AI 为伙伴进行重构
在处理繁琐但重要的工作(如重构旧代码)时,AI 会大放异彩。手动可能需要数小时的工作可以压缩到几分钟——前提是我仍然坐在驾驶座上。
我通常会要求 AI 向我介绍它计划做什么,然后仔细审查更改。是的,这节省了我的时间,但它也有助于我在进行过程中推理代码。这就像与一个键盘操作速度很快但仍然需要架构指导的人配对。
7. 维护代码的所有权
我曾经遇到过 AI 产生了一些优雅的东西——在纸面上——但最终却以微妙的方式破坏了某些东西。在一个案例中,我要求进行优化,但它引入了一个 useMemo,该 useMemo 缓存了错误的值。我花了几个小时才追踪到这个问题。
那次经历提醒我,即使 AI 编写了代码,它仍然是 我的 责任。这个错误是我的。我已经学会放慢速度并确保我理解每一个更改,即使它看起来很聪明。
8. 在提示 AI 之前提示自己
在我在 AI 聊天中输入任何内容之前,我会花一点时间来草拟我认为的解决方案应该是什么。然后,我告诉 AI 我的想法,并询问它会怎么做。这种“元提示”——要求它回应我自己的想法——有助于磨练我的想法,并确保我不仅仅是将困难的工作外包出去。结果通常是一个更强大的答案,并且一个我感觉更与之相关的答案。
9. 何时使用原力
有时,我能做的最好的事情就是关闭 AI。当建议变得嘈杂或感觉不靠谱时,我会退后一步并手动操作一会儿。它可以让我头脑清醒。这让我想起了《星球大战》中卢克关闭目标计算机并信任原力的那一刻。
AI 是一种了不起的工具,但它仍然只是一种工具。我发现检查一下自己很有帮助:这仍然有帮助吗,还是该重新集中注意力了?
10. AI 取代工程师的神话
关于 AI 取代开发人员 的说法有很多。我不相信。我希望发生的事情,以及我目前所看到的,是 AI 提高了优秀工程师的生产力。但它不能取代判断力、沟通技巧或对什么对业务重要性的理解。事实上,这些技能正变得越来越重要。键盘工作可能会减少,但思考呢?那仍然完全取决于我们。
这 10 个见解只是正在进行的对话的快照。我们的工作方式正在迅速变化,但我们的思考方式、协作方式以及我们定义“编写代码”的含义的方式也在迅速变化。AI 很强大,但开发的未来仍然取决于人类的创造力、责任心和协作。
我们才刚刚开始了解 AI 可以为软件开发做些什么。有时,它是一个出色的合作伙伴;有时,它需要坚定的手。但每一天,它都在改变我们工作的形态。我希望通过分享这些故事,我们将继续推动对话向前发展——不仅仅是关于 AI 可以做什么,而是关于我们希望未来的工作是什么样的。