本集简介
双语字幕
仅展示文本字幕,不包含中文音频;想边听边看,请使用 Bayt 播客 App。
对你来说,‘氛围编程’意味着什么?
What does vibe coding mean to you?
氛围编程和AI辅助工程并不相同,我觉得这种区别至关重要,因为我们不希望贬低工程这门学科的价值。
Vibe coding is not the same as AI assisted engineering, and I feel like that distinction is kind of critical because we don't wanna devalue the discipline of engineering.
你个人是如何使用这些工具的?
How do you personally use these tools?
我最近更多地关注了规范驱动开发的理念,也就是对自己想要构建的东西有非常清晰的规划。
I have more recently been focusing on the idea of spec driven development, having a very clear plan of what it is that I want to build.
如果你愿意接受任务,这可以成为降低在编程中使用大语言模型风险的一种绝佳方式。
If you are open to tasks, it can be a great way of derisking your use of LLMs in coding.
我发现自己已经逐渐失去了一点批判性思维。
One thing that I'm kind of noticing on myself already is losing a little bit of criticality.
对我们来说,继续学会思考事物的工作原理、不完全依赖AI测试来解决问题,仍然非常重要。
It's gonna continue to be very important for us to be able to think through how things work, be able to problem solve without necessarily relying on the AI testing.
重新锻炼你的批判性思维能力将会很重要。
And retesting your critical thinking skills are gonna be important.
你在一个更大的团队中工作,比如 Chrome 团队以及其他团队。
You're working inside a larger team, the Chrome team, other teams as well.
你观察到了哪些现象?
What are things that you're observing?
在像谷歌这样的公司,使用 AI 时,我们意识到
At a company like Google, with AI, what we've realized is
像谷歌这样的专业软件工程师如何超越氛围编码,利用 AI 加快他们的日常工作效率?
How do professional software engineers at the likes of Google go beyond vibe coding to speed up their day to day work with AI?
阿迪·奥斯曼尼在 Chrome 团队工作了十三年,如果你曾经打开过 Chrome 的开发者工具,那你一定用过他开发的功能。
Adi Osmani has worked on the Chrome team for thirteen years, and if you ever opened up the developer tab on Chrome, you've definitely used the stuff he built.
他也是一个多产的作者。
He is also a prolific author.
他的最新著作名为《超越氛围编码》,面向专业软件工程师。今天,我们将探讨氛围编码与 AI 辅助工程的区别,以及为什么氛围编码仅适用于快速、粗糙的原型开发;理解模型行为的重要性;为什么阿迪总是会仔细阅读他所使用模型的思考日志,以确保在批准更改前完全理解其行为;以及 AI 带来的新开发流程,比如规范驱动开发、异步编码后台代理、多代理并行编码等,这些都是软件工程中新兴且尚未充分探索的领域。
His latest book is titled Beyond Vibe Coding and is aimed at professional software Today, we go into Vibe Coding versus AI Assisted Engineering and why Vibe Coding isn't useful for much more than just prototyping something quick and dirty, the importance of understanding what the model does, why Adi always reads through the thinking log of the model he uses to make sure he fully understands what it did and why before approving changes, new development workflows with AI, how things like SpecDeVendor development, asynchronous coding background agents and parallel coding with several agents are new and unexplored areas of software engineering and many more.
如果你是一名软件工程师,希望在日常工作中更好地使用 AI 编程工具,并借助 AI 工具构建可靠的软件,那么本集内容非常适合你。
If you're a software engineer who wants to work better with AI coding tools on the day to day and wants to build reliable software with AI tools, then this episode is for you.
本播客节目由Statsig赞助播出,Statsig是一个集标志、分析、实验等功能于一体的统一平台。
This podcast episode is presented by Statsig, the unified platform for flags, analytics, experiments, and more.
请查看节目说明,了解更多关于他们以及我们其他季节赞助商的信息。
Check out the show notes to learn more about them and our other season sponsor.
所以,Addy,欢迎来到本播客。
So, Addy, welcome to the podcast.
谢谢。
Thank you.
很高兴能来到这里。
It's a pleasure to be here.
你写过很多本书,比如《有效领导工程团队》。
You're an author of a lot of different books, Leading Effective Engineering Teams.
这本书大约一年前出版,而你最新的著作名为《超越氛围编码》,在你的Substack上,你也经常分享关于氛围编码和AI辅助开发的见解。
This came out about a year ago, and now your latest book is called Beyond Vibe Coding, and on your substack, you also write a lot about your learnings about Vibe CodingAI assisted development.
在这本书以及你的博客中,你探讨了氛围编码与AI辅助软件工程的区别。
In this book, and also on your blog, you talk about Vibe Coding versus AI assisted software engineering.
在你看来,‘Vibe Coding’具体对你意味着什么?它与AI辅助软件工程有何异同?
In your mind, what does Vibe coding mean to you specifically, and how is it different or similar to AI assisted software engineering?
是的。
Yeah.
我经常跟别人说,我个人认为Vibe Coding和AI辅助工程并不相同,我觉得这个区别非常关键,因为我们不希望贬低工程这门学科,也不希望给刚进入行业的新人一个不完整的印象,让他们误以为构建稳健的生产级软件只需要这样。
So I've I've I've been I tell tend to tell folks that I personally think that Vibe coding is not the same as AI assisted engineering, and I feel like that distinction is kind of critical because we don't wanna devalue the discipline of engineering and give, you know, folks that are new to the industry an incomplete picture of what it takes to build robust production ready software.
不过,我想我大概有两个不同的定义来区分它们。
But I I kind of have, I guess, two two definitions for them.
我认为Vibe Coding的核心是完全投入于AI带来的创作流中,非常侧重于高层次的提示词。
I think the vibe coding is really about fully giving into the creative flow within AI, so very much focused on high level prompting.
在很多方面,它让人忽略了代码本身的存在。
And in many ways, forgetting that the code exists.
这其实回到了Andraj Karpathy最初提出的定义,即接受AI的建议,但并不进行深入审查,而是专注于快速迭代式实验。
So you would you know, this this goes back to Andraj Karpathy's, like, original definition, but it's about accepting AI suggestions without necessarily having a deep review and focusing on rapid iterative experimentation.
就我个人而言,我觉得它在原型开发、MVP和学习阶段非常有用。
Personally, I I find it really great for prototypes, MVPs, and learning.
我认为,在生产团队中,我看到这种做法在快速尝试想法、构建对想法形态、组件外观或MVP形态的直觉方面非常有用。
And I think it's you know, what what I've seen in production teams is that this has been very useful for them when it comes to trying out ideas rapidly and building out an intuition for what, you know, the shape of an idea might look like, what a component might look like, what an MVP might look like.
这通常更注重速度和探索,而非正确性和可维护性,而这些因素在为大规模生产环境构建产品时我们可能更关心。
And that tends to prioritize speed and exploration over things like correctness and maintainability, things that we perhaps care a little bit, about when it comes to building things for large production audiences.
我认为,Vibe编码和更接近传统软件工程的做法之间存在一个连续谱,比如更多地进行规划、基于规范的开发、提供充分的上下文,以及贯穿整个软件开发生命周期的AI辅助工程。
And I would say that there's a little bit of a spectrum between vibe coding and doing what falls a little bit closer into traditional software engineering, you know, doing more planning, more specification driven development, including sufficient context, and really what is AI assisted engineering across the full software development life cycle.
对我来说,AI辅助工程意味着AI是一个强大的合作者,但它并不能取代工程原则。
So to me, AI assisted engineering is where AI is this powerful collaborator, but it's not a replacement for engineering principles.
在这种模式下,AI是一种倍增器,可以帮助你贯穿整个开发周期,无论是处理样板代码、调试还是部署。
And so in that model, it is a force multiplier, but it can help you across that whole cycle, whether it is with boilerplate, debugging, deployment.
但关键区别在于,人类工程师始终牢牢掌握主导权。
But the big difference is that the human engineer remains firmly in control.
你需要负责思考架构、审查代码,并理解AI为你生成的每一行,或至少大部分内容。
You are responsible for thinking about the architecture, for reviewing the code, and for understanding every line, if not most of what AI is generating for you.
你真正需要对最终产品的安全性、可扩展性和可维护性负责。
And you're on the hook really for making sure that the final product is secure, scalable, and maintainable.
也许AI在帮助你提升速度,这当然很好,但这并不意味着你可以最终对质量责任置之不理。
Maybe AI is helping you with with velocity, which is which is great, but that doesn't mean that you can, you know, sort of shrug off your your responsibility for quality at the end of the day.
我倾向于认为,很多人说他们发现AI编码是一种力量倍增器。
And I tend to think that, you know, a lot of people have said that they found AI encoding to be a force multiplier.
但我发现,你在软件工程方面的专业能力越强,使用大语言模型时获得的结果就越好。
But I found that the greater expertise that you have in software engineering, the better the results you can get when you're using LLMs.
我认为,如果你刚进入这个行业或还是初级开发者,也许有些我们称之为传统最佳实践的东西,你还没机会体验或深入思考过。
And I think sometimes, if you're new to the industry or you're a junior, maybe there are some what we would consider to be traditional best practices that, you know, maybe you haven't had to experience them yet or think about them.
比如,如果你关心生产环境的代码质量,那你应该只提交那些能向他人清晰解释的代码,因为单纯指望AI以后能帮你理清任何混乱,长远来看很可能行不通。
Like, you know, if if you care about production quality programming, you should probably only be committing code to your repo that you can fully explain to somebody else because just expecting that the AI is going to help you untangle whatever mess happens later on is probably not gonna work out long term.
那你个人平时是怎么使用这些工具的呢?
And how do you you personally use these tools?
是使用氛围编码,尤其是AI辅助工程吗?
May that be Vibe coding and especially AI assisted engineering?
我最近更专注于规范驱动开发,也就是对自己要构建的东西有一个非常清晰的计划。
I have more recently been focusing on the idea of spec driven development, having a very clear plan of what it is that I want to build.
我认为,确实有些情况下我仍然会使用氛围编码。
I think that, you know, there are definitely places where I still vibe code.
如果是个人工具、一次性项目,或者在过去,如果工程师或产品经理有了一个想法,我们可能会快速做一个原型。
If it's for a personal tool, something throw away, or, you know, in the old days, if an engineer or a PM had an idea, maybe we would we would put together, you know, a quick mock.
也许我们会做一个线框图、草图之类的东西。
Maybe we would put together a wireframe or a sketch or something like that.
然后与用户体验团队合作,做出稍微更精致一点的版本。
Perhaps work with UX to come up with, like, something a little bit more polished.
如今,你可以通过氛围编码快速搭建一个原型,并在拉取请求或聊天中直接展示给他人,比如:嘿。
These days, the fact that you can vibe code a prototype and actually show somebody in a pull request or in a chat, like, hey.
这是我心中对这个功能更清晰的构想。
Here's here's an even more clear version of the vision that I had in mind for this.
我觉得这种方式非常强大,我很喜欢用氛围编码来更高质量地传达和分享想法。
I think there's something very powerful to that, and I'm loving vibe coding for that, just being able to give me a slightly higher quality way to deliver, sharing an idea.
氛围编码正迎来它的高光时刻。
Vibes coding is having its moment.
用一个提示词描述一个应用,搞定。
Describe an app in a prompt, boom.
你已经让东西运行起来了。
You've got something running.
这感觉像魔法。
It feels like magic.
但这里有一个振动编码忽略的问题:机构知识。
But here's what vibe coding doesn't account for: Institutional knowledge.
每个提示都基于你告诉它的内容,而不是你团队已有的知识。
Every prompt sums from what you tell it, not what your team already knows.
真正的产品开发恰恰相反。
Real product development is the opposite.
它是累积的上下文。
It's accumulated context.
例如,每个bug都有其历史背景,每个功能都关联着客户的需求,每个拉取请求都融入了团队的路线图。
For example, every bug has a kind of history, every feature connects to customer requests, every PR fits into your team's roadmap.
一个简短的提示词无法向代理提供所有这些额外的上下文。
A short prompt will not share all this additional context for the agent to use.
线性代理在这些额外的团队上下文中工作。
Linear agents work inside this additional team context.
它们存在于你实际开展工作的开发系统中。
They live inside your development system where actual work happens.
它们能看到阻碍你冲刺的议题、相关的拉取请求、项目目标,以及你的团队此前就该问题进行过的讨论。
They see the issue blocking your sprint, the related PRs, the project goals, the discussions that your team already had about this exact problem.
由于线性平台是你们团队的共享工作区,代理不仅能看见你的上下文,还能看见整个组织的上下文。
And because linear is your team's shared workspace, agents don't only see your context, they see your entire org's context.
来自支持团队的缺陷报告、产品经理的设计规范、技术负责人撰写的架构笔记。
The bug report from support, the design spec from your PM, the architecture notes from the tech lead.
因此,当你要求代理起草拉取请求或开发功能时,它并不是仅凭提示词即兴发挥,而是使用你们团队已有的相同上下文。
So when you ask an agent to draft PR or build a feature, it's not improvising just from a prompt, it's using the same context that your team already uses.
这才是真正构建实际产品时,AI驱动开发应有的样子——不只是快速构建,而是有意识地构建。
This is what AI powered development looks like when you're building something real, not just building fast, but building intentional.
了解代理在 Linear 中的工作方式,请访问 linear.app/agents。如果你想亲自尝试,可通过访问 linear.app/pragmatic 免费获取 Linear Business。
See how agents work in linear at linear.appagents, And if you want to try them yourself, get linear business for free by visiting linear.app/pragmatic.
这并不意味着我们会直接将 Vibe 生成的原型或代码部署到生产环境。
That doesn't mean that we take the Vibe coded prototype or that code and just stick it in production.
一旦你对某个组件、功能或界面的愿景有了清晰的认识,就应该开始明确地列出:好吧。
Once you have clarity around the vision that you have for for a component, for a feature, for a view, you should probably be writing out, like, okay.
那么,关于这个的具体期望是什么?
Well, what are the actual expectations around this?
我们究竟将哪些内容视为需求?
What do we actually consider to be the requirements?
这通常会带来更高品质的 LLM 输出结果。
And that will give you a much higher quality outcome typically from the LLM.
因为否则的话,如果你只是依赖感觉,那你也在某种程度上默认了:好吧。
Because otherwise, if you're giving into the vibes, you're also sort of giving giving into, okay.
你来决定架构吧。
Well, you figure out the architecture.
你要弄清楚这个东西应该做什么。
You figure out, like, what this should do.
这在创意阶段没问题,但对生产级别的产品开发来说可能还不够。
And while that's fine for ideation, it's probably not sufficient for production sort of product engineering.
对我来说,以规范驱动的开发一直非常重要。
So for me, spec driven development has been a big thing.
我认为测试非常好,如果你愿意使用测试,这可以成为降低在编程中使用LLM风险的好方法。
I think that tests are are great, And if if you are open to tests, it can, you know, be a great way of derisking your use of LLMs in coding.
因为有时候,即使你使用的是最先进的模型,也可能遇到代码比预期更复杂的情况,或者你最初的几个提示生成的代码非常好,但不知为何,事情突然偏离了轨道。
Because sometimes, you know, even if you're using state of the art models, you can end up in a situation where maybe the code looks more convoluted than you would expect, or maybe your first couple of, you know, prompts have been generating really good code, and then for whatever reason, things go off the rails.
但如果你能通过测试证明一切正常运行,并且当问题出现时能更清楚地知道问题出在哪里,我认为这能帮助你始终保持项目顺利进行。
But if you can prove that things are working with tests and that if something did go off the rails, it's clearer to you what that was, I think that that can help you keep your project green the whole time.
这同样也对我帮助很大。
And that that's been, you know, something that's helped me quite a lot as well.
所以,规范驱动开发加测试。
So Spectre of development testing.
我也会尽量确保自己充分利用了——嗯,这算是一个特别致谢吧。
I, try to also make sure that I'm leveraging you know, this is I guess this is, this is a shout out.
我们团队刚刚发布了 Chrome DevTools MCP。
We my my team just released Chrome DevTools MCP.
所以我经常使用
So I I use
全部都会用,是的。
all the Yeah.
所以我们刚刚发布了 Chrome DevTools MCP。
So we just released Chrome DevTools MCP.
我非常重视质量,而且我觉得在过去几年里,我们看到很多情况是,如果你发现某个地方出错了,很多工程师就会说,好吧。
I care a lot about quality, and I think that, you know, in the last couple of years, we've seen a number of cases where if you notice that something is broken, I will see a lot of engineers that will just say, okay.
嘿,大模型。
Well, hey, LM.
这个按钮好像不对,或者这个东西看起来没完全达到应有的样子。
It looks like this button is off, or it looks like this thing is not quite exactly what it should be.
去修好它。
Go go fix it.
而这又更接近于随性而为,跟着感觉走。
And that that's again going a little bit closer to just, you know, rolling with the vibes.
但如果你能让浏览器之类的东西保持在循环中,或者能实际查看页面的工具,那正是 Chrome DevTools、MCP 及相关解决方案所做的。
But if you can keep things like a browser in the loop or something that can actually see the page, that is that is what kind of Chrome DevTools, MCP, and related solutions do.
它们在很大程度上赋予了你的 LLM 视觉能力。
They give your LLM eyes in many ways.
所以我们能看到浏览器所看到的内容。
So we can see what the browser sees.
它能看清哪些内容在渲染,哪些没有。
It can see what's rendering or what isn't.
它可以检测控制台中的警告或错误,甚至更深入地理解哪里出了问题。
It can detect if there are warnings, errors in the console, maybe even get a deeper sense of what is broken.
而这能显著改善你所拥有的反馈循环。
And that can just improve the feedback loop that you have.
因此,我一直对MCP感到兴奋,因为它能帮助我们借助调用其他工具这一理念,极大地优化我们的工作流程。
And so I've been just excited about MCP for being able to help us sort of evolve our workflows a lot more, thanks to this idea of being able to call in to other tools.
这确实非常棒。
So that has been that has been great.
除此之外,总的来说,我发现要熟练掌握这些工具真的需要付出努力,而我至今仍在不断学习中。
Otherwise, for me, generally speaking, I've found that, you know, you really do need to put in the effort to get proficient with these tools, and and and I still find myself doing that.
每当有新模型、新工具或新平台推出时,我通常都会每周进行大量尝试。
If there are new models, new tools, new platforms coming out, I'm generally, finding that I experiment a lot, every week.
我会鼓励我的团队成员彼此分享、向我反馈:情况怎么样?
I try to, you know, encourage my teams to share with each other, with me, like, how how are things going?
有没有什么值得我们提炼的洞察?或者有哪些东西值得团队一起尝试?
Are there any insights that are worth us bubbling up or things that we should try out as a team?
如果你的团队看到你非常乐于共同学习,我认为这能营造一种良好的心理安全感文化,帮助团队在我们共同经历这场巨大变革时取得成功。
And if your team see that you are very open to learning together, I think that that can just create this nice culture of psychological safety that can set your team up for success as we're as we're all going through this big period of change.
是的。
Yeah.
而且我觉得,你说得对,掌握这些东西确实需要时间。
And I I I feel, you know, what you said about it takes time to learn this thing.
我在使用它的过程中,经历了无数大大小小的时刻,收获颇丰。当然,也有很多人持怀疑态度,尤其是工程师,他们对大语言模型的理论、能耗或其他方面都存疑。
I have so many, like, smaller and larger moments just by using it, and I get a lot there's plenty of people who are skeptical, especially including engineers who are skeptical about LLMs, whether it may be the theory, may that be energy footprint, other things.
但我发现,很多持怀疑态度的人要么根本没试过,要么没给它足够的时间,因为这确实需要一些时间和摸索。
But I found that a lot of people who are skeptical have either not tried it or they haven't given it some time because it does take some time, some playing around.
而且,像Ranger这样的工具,并不是在所有地方都适用。
And and, you know, like Ranger, it doesn't work everywhere.
它会出错。
It it it it makes mistakes.
它会搞砸。
It screws up.
但它确实有帮助——我说的只是我自己的感受,但我发现它在很多小项目上也帮了我不少忙。
But it does, like, I I think if you've not felt like, I can only tell for myself, but I found a bunch of, like, ways where it helps even my smaller projects.
正如你所说,关键在于什么对你有用,什么对别人有用。
And as you said, like, it's it's it's about what works for you and and what works for others.
说到这个,你正在一个更大的团队、更大的生产团队中工作。
Speaking of which, you're working in a larger inside a larger team, larger production team.
你知道,你有Chrome团队,以及其他团队。
You know, you've got the the the Chrome team, other teams as well.
你观察到其他人是如何以有趣的方式使用它的吗?也许是出人意料的方式,或者甚至是一些对那些特定人员或工程师来说没有成功的方式?
What are things that you're observing on how others are using it in interesting ways, maybe unexpected ways, or or even ways that maybe didn't work out for those specific people or engineers?
我认为,在像谷歌这样的公司里,我们有一套非常长期、经过充分验证的关于大规模软件工程的思考方式。
I would say that at a company like Google, you know, we we have this this very long term, very battle tested way of thinking about software engineering at scale.
而关于AI,我们意识到,很多这些原则并不会消失。
And, with AI, what we've realized is, you know, a lot of that doesn't go away.
你仍然需要关注质量。
You you still want to care about quality.
你仍然需要认真履行尽职调查。
You still want to care about, doing due diligence.
我认为我们发现的一些有趣之处,与人们在初创公司和其他类型公司中看到的情况很相似。
The things that I think we've found interesting kind of mimic, what people have seen in in startups and other kinds of companies.
所以,掌握理解能力,比如提示工程,有多重要?
So, the importance of mastering understanding, like, is prompt engineering?
对吧?
Right?
就是确保你构建出正确的指令组合,以从大语言模型中获得最佳结果。
Like, making sure that you are constructing the right set of incantations to get the best outcome from an LLM.
而最近,上下文工程更是如此——你如何优化上下文窗口,以提高这些结果的质量?
And then context engineering, more recently, like, how can you make sure that you are optimizing the context window to increase the chances that those those outcomes are higher quality?
我们花了很多时间思考这个问题,确保提供正确的描述、细节、文件、示例,以及任何项目特有的、大语言模型训练数据中可能没有的额外内容,这对我们来说非常有趣且重要。
We spend a lot of time thinking about that, making sure that the right sets of descriptions, details, files, examples, any additional content that is specific to a project that the LLM may not necessarily have in its training data, That has been very interesting and and important for us as as we've been working through.
过去几年,我一直试图在生活的方方面面探索使用AI,这让我深刻意识到,在哪些地方能获得切实的生产力提升,以及在哪些地方,模型质量或系统提示和工具性能还尚未成熟。
I have been somebody that has been trying to explore using AI in every facet of my life in in many ways over the last couple of years, and I that that's been that's been very eye opening in terms of places where there is meaningful productivity gain to be had, as well as places where either model quality or, you know, system prompts and tool quality are not quite there just yet.
因此,我也在引导我的团队朝这个方向前进。
And so, I've been also sort of nudging my teams in that direction as well.
如果你在思考我们终将全部成为AI原生工程师这一理念,那么给你一个提示:在你试图自己解决问题之前,先问问自己,如果把这个交给模型、交给AI,它会怎么做?
Like, if if, if you are thinking about this idea of us eventually all being AI native engineers, then one prompt for you is before you try to solve a problem yourself, if you gave this to a model, you gave this to AI, what would it do?
这实际上会帮助你更快地实现目标,还是会拖慢你的进度?
Would actually help you accomplish your goal much faster, or would it likely slow you down?
如果它会拖慢你,那为什么呢?
And if it would slow you down, like, why why is that?
但即使是这个提示,我认为也能帮助我们更好地了解什么是可能的,什么是不可能的。
But even that prompt is something that I think helps us to learn a lot about what is possible and what isn't.
我们许多人都是从这样的旅程走来的:如果你是传统的软件工程师,或者你是网页开发者,等等,你可能对AI并没有非常深入的理解。
Many of us have been on this journey where, you know, if if you're if you're, you know, classic software engineer, if you're a web developer, whatever, you probably don't have this very deep understanding of AI.
对于我自己和一些我的团队负责人,我给我们设定了这样一个任务:好吧。
For myself and and for some of my leads, I set us this task of like, okay.
让我们开始更深入地了解这些领域,以便我们能引导团队思考:你在哪些方面也该建立这种专长?
Well, let's start to become slightly deeper experts in these areas so that we can guide our team, towards, well, where where would it be useful for you to build up this expertise too?
所以在过去一年里,我花了很多时间思考像评估和基准测试这样的事情,以及我们应该多关注RAG与微调之间的权衡等等。
So, like, in in the last year, I've been spending a lot more time on thinking about things like evals and benchmarks and, how much should we be caring about rag versus fine tuning and so on.
这同样也起到了作用,因为当我们讨论AI辅助工程时,我们所开发的许多产品也需要考虑:AI是否能以某种方式提升客户体验?
And this ends up contributing as well because we're at the same time that we are talking about AI assisted engineering, many of the products that we work on also have this consideration for, well, is AI gonna help you deliver a better customer experience in some way?
因此,我正在思考,我们为编码工作流程所做的工作,如何也能惠及我们接下来要做的产品工作?
And so I'm trying to look at, like, how can the work that we're doing for our coding workflow also benefit the product work that we're gonna have to do?
这对我们来说是一次很好的学习经历。
So that that's been a good learning for us.
我认为,最重要的一点始终是保持人为监督,这是我们在过程中获得的一个关键领悟。
I think, honestly, just the importance of always maintaining human oversight has been one of the bigger learnings.
当然,我知道很多人都遇到过这种情况。
We have, of course like, I know a lot of people have run into this.
我们当然也看到过,比如外部贡献者常常非常热情地表示:嘿。
We've, of course, seen, you know, cases where people, very often, like, external contributors, will sometimes be very passionate about, like, hey.
我想为你们的项目做贡献,但他们却直接使用了大语言模型。
I wanna contribute to your project, but then they'll use an LLM.
你打算往哪个方向走?
Where you're going with.
是的。
Yeah.
使用LLM提交一些东西,我觉得米哈尔·-hashimoto在社交媒体上炸了,因为他实在受不了人们提交那些出于好意但却给维护者带来巨大负担的内容。
Use an LLM and submit something that I think Michal Hashimoto was blowing up on social media because he just had enough that people were submitting things that as as you said, out of good intention, but putting way more load on maintainers.
我喜欢阅读关于不同开发者群体如何看待AI的研究,以及这对他们的团队意味着什么。
I love reading studies about how different segments of the developer population are finding AI and and what what that means for their teams.
我最近读到的一项研究指出,如果你提高了代码和改进能够进入团队的速度,同时又有人工监督,那么人工审查就会成为瓶颈。
One of the studies that I recently read, highlighted that, if you are increasing the velocity of, code and improvements that can land in the team, and you are doing human oversight, the human review is gonna become the bottleneck.
这正是团队们开始意识到的问题。
And that is what teams are starting to realize.
哦,等等。
Like, oh, wait.
我们开始看到更多的拉取请求涌入,但谁来审查这些呢?
We're starting to see a lot more PRs come through, but who's gonna review those?
对吧?
Right?
我很高兴一些团队至少在意这个质量维度,愿意亲自进行人工审查,但这同时也意味着我们的工作流程可能需要进化。
So I'm glad that teams are you know, at least some teams seem to be caring about that quality dimension sufficiently to actually hand review it themselves, but, that does also mean that our, our workflows may have to evolve.
我看到过很多关于这个的讨论,你知道的,是的。
I have seen, you know, a lot of talk about, like, yeah.
为什么我们不用大语言模型来做代码审查呢?
Why why aren't we using, you know, LLMs to also do the code review?
这有点像一条危险的下坡路,因为如果AI在编写代码,而你没有仔细研究它,但AI又在审查代码,你真的能确定最终合并的是什么吗?
And that, you know, that that's a little bit of a slippery slope because if the AI is writing the code and you haven't studied it carefully, but the AI is also reviewing the code, Are you actually sure about what's what's landing?
所以我认为,关于代码审查的最佳实践仍在发展中,我很期待看到它走向何方。
So I think that the best practices around code review are still something that are evolving, and I'm I'm excited to see where that goes.
就我个人而言,我用过很多工具。
For me, personally, there are a lot of tools that I use.
我最喜欢的一些工具包括在VS Code中使用Kline。
Some of my favorite ones include using Kline in Versus Code.
A
A
很多人都是Peoplefolio使用Kline的忠实粉丝。
lot of You're people you're you're a big fan of Peoplefolio writing with Kline.
是的。
Yeah.
我非常喜欢Kline。
I love I love Kline.
我认为,如今人们也可以用Cursor和Copilot在Versus Code中做很多事情。
I I think that, you know, people can do a lot with Cursor and Copilot in Versus Code these days as well.
但我喜欢做的一件事是,你知道,这些工具大多会展示在构建解决方案时背后的思考过程。
But one of the things that I enjoy doing is, you know, most of these tools will show you the thinking that is happening behind the scenes as the solution is being built out.
即使这个过程发生得很快,我也会尝试回溯、滚动、展开并阅读:你究竟是如何思考并最终构建出这个解决方案的?
And even if that happens quickly, like, I will try to go back, scroll through, expand, and read through, okay, what was your thinking process through actually being able to build this out?
你做出了哪些决策?
What decisions did you make?
你生成了什么内容?
What did you generate?
在代码进入拉取请求之前,我会仔细审查这些内容。
And I will review that code before it ends up in a pull request.
以后很可能需要我来维护这段代码,可能需要对它做一些调整,而这些是大型语言模型帮不上忙的。
There's gonna be some likelihood later on that I may have to maintain that code, that I may have to make some tweaks to that code that the LLOM is not gonna be able to help me with.
昨晚我在处理一个问题时,代码从表面上看似乎是正确的。
Just last night, I was I was working through a problem, and, the code looked, you know, on paper, code looked looked right.
但它并没有按预期的方式运行。
It wasn't working the way it was supposed to.
我多次问大型语言模型:嘿。
I asked the LLM a few times to, like, hey.
你能用你的工具试试吗?
Can you go use your tools?
去找出问题出在哪里。
Go figure out what the problem is.
它不断做出修改,但并没有真正解决根本问题。
It continued to make changes, didn't actually fix the underlying problem.
所以今晚我得卷起袖子,手动调试它。
And so tonight, I'll have to roll up my sleeves and go and manually debug it.
如果我不理解这段代码的工作原理,或者没有仔细阅读过它,我会感觉自己被丢进了一片丛林,得独自摸索出路。
If I didn't understand how that code worked or I hadn't been reading it, I would be, you know, feeling like I'd just been dropped into a jungle and having to navigate it myself.
而且,我在反思这一点。
Well, plus, I I I mean, I'm reflecting on this.
对吧?
Right?
我觉得,这正是一个值回票价的软件工程师和不值钱的工程师之间的区别。
Like, I feel this is the difference between a software engineer who's worth their money just in terms of, you know, being employed and one that's not not.
如果你只会不停地发提示词,那谁都能做到。
If if all you can do is just prompt and prompt, mean, I anyone can do that.
我有点夸张了,但一个刚毕业的新人,或者还在上学的学生,都能做到这一点。
I'm exaggerating, but but a new grad can can do that or or or someone still in college.
但并不是每个人都会花心思去理解代码、弄清楚它的工作原理,并愿意挽起袖子动手解决。
But not everyone will have taken the efforts to understand, to know how it works, and be able to roll up their sleeves.
当这些模型出错时——它们确实会出错——只有他们能修复。
And when these models fail, which they they fail, they can fix it.
而且,他们还能向别人解释清楚。
And, also, they can also explain it to people.
他们能在会议上清晰地解释,而不啰嗦。
They can explain it in a meeting coherently without rambling.
所以我觉得,这就是专业人士的样子。
So I I feel, you know, like, this is what a professional is.
对吧?
Right?
就像在任何行业,他们都懂事物的工作原理。
Like, in in any industry, it's like they know how the things work.
修车师傅也是这样,其他任何行业也一样。
Same with the car mechanics, same with anything else.
所以这或许是个提醒:如果你不这么做,只是放任不管,觉得‘它能解决我的问题’,那你其实处于危险之中——如果你不知道它如何工作,那我们为什么要雇你?
So maybe it's just a reminder that if you're not doing this, if you're kind of letting go and, like, oh, it it it solves my problems, you're you're kind of at the risk of, well, if if you don't know how it works, I mean, why do we need you?
任何人都能给另一个大语言模型发提示。
Anyone can prompt another LLM.
没错。
Exactly.
没错。
Exactly.
而且,你知道,随着我们最近一年越来越多地讨论,人们重新开始使用终端和命令行界面,比如Claude Code、Gemini CLI、OpenCode等等。
And, you know, as we start to talk more about, you know in in the last year, you know, people working in their terminal, their CLIs has become more of a thing once again with Claude code and Gemini CLI and OpenCode and so on.
然后人们开始讨论,好吧。
And then people started talking about, okay.
那么,我们该如何协调多个并行代理,让它们为我们完成工作呢?
Well, how do we orchestrate multiple parallel agents being able to complete work for us?
当我们开始思考每个工程师几乎都拥有自己的虚拟团队,能够独立处理待办事项,并并发实现各种任务时。
As we start thinking about this idea of each engineer almost having a virtual team of their own, being able to go off and work through your backlog and get all of these different tasks implemented concurrently.
我认为你会很快意识到,这一切在抽象和理论上听起来都很棒,但你也会因此叠加其他问题,缺乏人工审查很可能导致技术债务。
I think that you start to quickly realize, well, that all sounds great in the abstract and in theory, but then you're gonna compound all of these other problems where a lack of manual review is going to probably lead you to some level of tech debt.
也许不是立刻,但迟早会发生的。
Maybe not immediately, but at some point, it very likely will.
这种经历让我一度开始撰写我称之为‘70%问题’的内容。
And my my experience of this kind of led me at one point to to write about what I called the 70% kind of problem.
我们来谈谈这个,因为是的。
Let's talk about that because Yeah.
你对此进行了深入的探讨。
You you wrote about that extensively.
我们实际上基于你的文章发表了一篇合著文章,我们也会在下方的备注中提供链接。
We actually published a shared article, a guest article based on your article, which we'll also link in the the notes below.
这个‘70%问题’到底是什么?你是怎么发现它的?自从你六个月前发表这篇文章以来,你认为它发生了哪些变化?
What is this, the 70% problem, and how did you, you know, come across it, and how do you think it might have changed since you published it, which was about six months ago?
是的。
Yeah.
显然,模型质量和工具质量一直在持续提升。
Obviously, you know, model quality, tooling quality continues to to get better.
所以,这个‘70%问题’其实指的是:大型语言模型能够非常迅速地生成一个大致70%可用的应用程序,但它们往往在最后的30%上遇到困难。
I so the the 70% problem is really about this idea that LLMs can produce very roughly, like, 70% of a working application very quickly, but they tend to struggle with that last 30%.
而这最后的30%,你可以把它看作是‘最后一公里’,但它包含了各种不同的模式,你的受众很可能会遇到,比如‘倒退两步’模式。
And that last 30%, you can consider it like the the the last mile, but it includes lots of different kinds of patterns that, you know, your audience will probably run across, or maybe they will run across, things like the two steps back pattern.
所以,你用几个提示词构建了一些东西。
So, you know, you have, you know, used a couple of prompts to build up something.
你再给LLM一个提示,它却突然完全跑偏了。
You give an LLM one more prompt, and it happens to, go in a completely different direction.
也许它彻底重写了你的用户界面,或者你组件背后的逻辑,诸如此类的情况。
Maybe it has fully rewritten your UI or, the functionality behind your component, things like that.
通常存在一些隐藏的可维护性成本,因为你没有明确说明要求。
There are very often hidden maintainability costs, places where you're not being specific.
你把责任又推回给了LLM,最终可能得到的是收益递减。
You are delegating the responsibility back to the LLM, and you may end up getting diminishing returns.
正如我们在黑客新闻上一再看到的,安全漏洞问题。
You know, as as we've seen, time and time again on hacker news, security vulnerabilities.
这正是我们看到人们不小心泄露API密钥、出现XSS漏洞,以及各种问题的地方,因为人们没有从整体上思考他们要解决的问题,只是盲目地跟着感觉走。
You know, this this is exactly where we see people accidentally, you know, leaking API keys, where there are XSS issues, where there are all kinds of problems because people, did not think as holistically about the problem that they were solving and just sort of gave into the vibes.
所以,VibeCoded 的概念验证对于 MVP 和原型阶段是可以接受的,但如果你要将它整合到一个与他人协作、团队合作并面对真实用户群体的代码库中,很可能需要以生产级标准重新编写。
So a VibeCoded proof of concept, you know, is fine for for MVP for that prototyping phase, but it likely needs to be rewritten with production quality in mind, if you are going to be landing this in a code base where you're working with other people, working with a team, and, you know, dealing with a real user base of people.
我认为,安全性和质量方面恰恰说明了在流程中保留人为干预的必要性。
I think that the security and quality aspects, you know, re really speak to the need for for keeping the human in the loop there.
是的。
Yeah.
我们不断听到关于产品经理和非技术背景的创始人沉迷于精细编码并感到兴奋的故事。
And we keep hearing stories about product managers and less technical founders who get really into fine coding, excited.
他们开发出一个原型或更好的版本,然后希望打造一个可以投入生产的项目。
You know, they spin off a prototype or a better version, and they and then they want to build something that they can put out into production.
这类故事有很多。
And there's a bunch of stories.
我会在节目笔记中附上一个链接,讲的是他们如何陷入困境,或者花费了极其漫长的时间。
I'll I'll link one in the the the show notes on how they just get stuck or it takes them a very long time.
他们原本以为一两天就能完成的事情,结果花了十天、二十天甚至三十天。
What what they thought would take a day or two ends up being ten, twenty, thirty days.
在70%问题中,你提到了一个与此相关的内容,那就是经验更丰富的工程师更容易完成最后的30%,而经验较少的工程师则更容易卡住,或者产生虚假的自信。
And in the 70% problem, you went into something relevant for this, which is you said that more experienced engineers can finish the last 30% a lot easier, and then less experienced engineers get actually a lot more stuck or or get this false confidence.
是的。
Yes.
对。
Yes.
完全正确。
Absolutely.
我认为,在最后的30%阶段,你经常会看到初级工程师、实习生或应届毕业生的做法是,他们并不清楚接下来该做什么,只是不断重复向大语言模型提问来修复问题。
I think that with that last 30%, what you will often see junior engineers or interns or new grads doing is, you know, they they will not really know what to do next beyond just constantly reprinting the LLM to fix the issues.
如果模型无法解决,他们可能还没有掌握调试问题或定位问题根源所需的全部技能。
And if it's not able to do it, they're not necessarily gonna have all of those skills just yet for debugging the problem or understanding where the issues are.
因此,这凸显了拥有良好批判性思维和问题解决心态的重要性。
And so what this speaks to is the importance of having a really good critical thinking, problem solve solving mindset.
我们一直强调,这种能力对于进入计算机科学领域的人至关重要。
You know, we always talked about the importance of this for people who are going into computer science.
我认为这一点现在依然成立,但真正阅读代码、理解系统、弄清楚所有组件如何相互连接所需的细致和耐心依然必不可少。
I think that that remains now, but that diligence required to actually read the code, understand the system, understand how all of those pieces connect together.
我不认为这种要求会就此消失。
I I don't think that that necessarily goes away.
正如你之前所说,凭借我们今天拥有的工具和模型,几乎任何人都可以给工具一个高层次的提示,然后得到一个看似能运行的结果。
As you said earlier, with the tools that we have today and the models we have today, almost anybody can give a a high level prompt to a tool and have something, you know, that that seems like it works come out the back of it.
但我不会轻易在生产环境中信任这样的结果。
But I wouldn't necessarily trust that in production.
到目前为止,我已经看到太多这样的案例,系统只是稍微偏离了轨道。
Seeing too too many stories at this point of things just going a little bit off the rails.
这让我想起在AI工具出现之前的情况。
It reminds me when this was before AI tools.
我有一位工程师加入Uber时来自一家小型初创公司,是个新员工。
I I had an engineer who joined Uber who came from a smaller startup, and I a new joiner.
一周后,我就成了这位员工的经理。
So after a week, I was this person's manager.
我问了问他最近怎么样?
I asked, like, how are things going?
他显得非常沮丧。
And he was really distressed.
我说,哦,这真的很难。
I'm like, oh, it's really difficult.
我问他,哪里难?
I was like, what's difficult?
他说,我正在努力读完所有代码,但实在太多了。
He's like, I'm I'm trying to read all the code, and it's just too much.
我当时就问,你为什么要读完优步的所有代码啊?你知道的,那是我们的后端系统。
And I was like, why are why are you trying to read all the code of Uber, which was like, you know, our our our back end system.
那可是个移动应用啊。
It was like, you know, like, just so it was mobile app.
代码量超过了一百万行。
It was like more than a million lines of code.
他说,这是因为每当我加入一家新公司,我都会读完所有代码来全面了解它。
He's like, well, I do that because whenever I join a new company, I read all the code to understand everything.
我当时想,我明白你的想法,我觉得这很好。
And I was like I was like, I get what you're coming from, and I think that's great.
我只是想跟你解释一下这个代码库的运作方式。
I was just like, let me let me explain to you how the code base works.
你不应该读完所有代码,但你应该理解它的结构,知道去哪里找东西,因为这个代码库里有大约两三百名工程师在同时工作。
You shouldn't read all the code, but you should understand the structure, you know, where you can find things because this is, you know, on on code base where we had, I think, two or 300 engineers working on it.
我觉得这个人初衷非常好,就是他来到了一个新环境。
And I I thought this person had a really great intention, which is I'm coming to a new place.
他想在最初的几周里彻底理解它,而那些真正优秀的人就是这样做的。
I wanna understand that I'm gonna spend the first few weeks understanding, and those people excel.
我一直在想,我们又回到了这个问题:但你告诉我的是,你是否可以部分地将这项工作外包给大语言模型,但这有点靠运气,可能成功,也可能不成功。
And I I'm kind of thinking we keep getting back to this thing, but what I'm hearing from you is is if you can actually, to some extent, outsource this to an LM, which is a bit of a hit or miss or might it might or might not succeed.
但如果你这么做了,你就完全依赖它了,而一旦上下文窗口满了,或者模型状态不好——毕竟这些系统是非确定性的——你就陷入困境了。
But if you do, you're now hopelessly dependent on it, and at some point, when the context window fills up or when the model is not having a good day because these things are nondeterministic, you're kind of stuck.
你知道,你最好的做法是尝试一个新模型,或者清空上下文窗口,或者做点别的什么,但这种感觉并不像是你真正掌控了局面。
You know, your best thing is to try a new model or or empty the context window or, I don't know, do do something else, but it doesn't feel really feel like you're in control.
是的。
Yes.
对。
Yes.
你说得完全正确。
You're absolutely right.
而且我认为,无论你是通过Vibe编码进入这个新世界的,还是作为一名资深工程师,一直在逐步优化你的AI工作流程,都有几点每个人都应该牢记,这能帮助你获得最佳结果。
And I think that whether your gateway into this new world was Vibe coding or you are a senior engineer and you've been evolving your workflow for AI, there there are a few things I think that everybody should keep in mind that can help you get the best outcomes.
阿迪刚刚提到了获得最佳结果。
Adi just mentioned getting the best outcomes.
这就是我目前在AI和Vibe编码中看到的情况。
Here's what I'm seeing with AI and Vive coding.
这些工具能为你带来惊人的效率。
These tools can give you incredible velocity.
你可以比以前快得多地发布功能。
You can ship features a lot faster than before.
但如果没有精准性,速度只会让你发布更多东西,而不一定是正确的东西。
But velocity without precision means you're just shipping more things, not necessarily the right things.
你怎么知道你构建的东西真的有效?
How do you know if what you built actually works?
那个新的结账流程是提升了转化率,还是造成了下降?
Did that new checkout flow improve conversion or hurt it?
你发布的新功能是帮助了用户留存,还是导致了流失?
Is the feature you shipped helping retention or causing a drop off?
如果你在发布和衡量时缺乏精准性,你就是在盲目做决策。
Without precision in how you roll out a measure you're making decisions blind.
这就是Statsig发挥作用的地方。
That's where Statsig comes in.
Statsig是本季的赞助合作伙伴,他们打造了一套精准工具包,与你的AI加速速度相匹配。
Statsig is our presenting partner for the season and they built a precision toolkit that matches your AI accelerated velocity.
这就是精准性的体现。
Here's what precision looks like.
你将一个功能推送给10%的用户,在受控环境中观察它是否提升了或降低了你的关键指标。
You ship a feature to 10% of users in a controlled environment and see if it's moving your metrics up or down.
如果转化率下降,你能及早发现并在影响全体用户前回滚。
If conversion drops, you catch it early and roll back before it affects everyone.
你在与代码部署相同的速度下,做出精准、数据驱动的决策。
You are making precise, data driven decisions at the same pace you are shipping code.
以Graphite为例。
Take Graphite as an example.
他们通过Statsig将精细化控制和快速迭代融入开发流程。
They build granular control and rapid iteration into their development workflow using Statsig.
当他们上线新功能时,内置的分析工具会精确显示它对关键指标的影响。
When they roll out a new feature, built in analytics show exactly how it affects their key metrics.
他们可以清楚地看到用户参与度是否提升、功能是否引发错误,或用户是否流失。
They can see if engagement is up, if the feature is causing errors, or if users are dropping off.
他们通过功能开关和指标协同工作,任何时候都在运行超过三百个这样的控制发布。
They do this with feature gates and metrics working together, and they're running over three hundreds of these controls rollouts at any given time.
在生产事故中,这种方法将他们的故障解决时间缩短了50%以上,因为他们能快速识别出导致问题的功能开关并立即修复。
During production incidents, this approach cut their resolution times by over 50% because they could quickly identify which feature flag was causing issues and fix it instantly.
大多数团队将不同的系统拼凑在一起,等待查询结果,并试图关联不匹配的用户群体。
Most teams stitch together separate systems, wait on queries, and try to correlate user segments that don't match.
等他们知道某个功能是否有效时,已经转向下一个功能了。
By the time they know if something worked, they've already moved on to the next feature.
使用 Statsig,你所有功能都集中在一个地方。
With Static, you have everything in one place.
功能开关、实验和分析,使用的是同一套用户数据。
Feature flags, experimentation, and analytics with the same user data.
Statsig 提供丰富的免费套餐供你起步,团队专业版定价每月150美元起。
Statsig has a generous free tier to get started, and pro pricing for teams starts at $150 per month.
要了解更多信息并获取三十天企业版试用,请访问 statsig.com/pragmatic。
To learn more and get a thirty day enterprise trial, go to statsig.com/pragmatic.
有了这些,让我们回到关于人工智能和开发流程的讨论。
With this, let's get back to the conversation about AI and development workflows.
你要明白,模型的上下文窗口通常是有限的。
Understand that, you know, models tend to have finite context windows.
随着时间推移,它们的容量一直在变大。
They've been getting larger over time.
你可能需要在某种程度上培养一种项目经理的思维。
You probably need to, at some level, adopt, sort of a project manager mindset.
你知道的?
You know?
把任务拆分成小的、可验证的模块。
Break tasks into small verifiable chunks.
我见过很多人会把所有东西一股脑儿丢给大语言模型,然后说:嘿。
I've seen a lot of people who will, like, throw throw, you know, the kitchen sink at the LLM and say, hey.
是的。
Yes.
一次性构建所有这些需求。
Build build all of these requirements at once.
但这并不一定效果最好。
And that doesn't necessarily work the best.
所以,把任务拆分成小的、可验证的模块,明确期望,并准备好与AI反复迭代。
So, you know, small verifiable chunks, clear expectations, and be prepared to iterate with the AI.
别以为一次输入就能获得最佳结果,因为这很可能不行。
Don't just feel like one shotting is is gonna give you the best outcome because it it probably isn't.
这种分解方式其实和规划冲刺或编写伪代码很相似,就像我们过去常做的那样,它能降低上下文丢失和错误累积的风险。
And that decomposition is really pretty similar to planning a sprint or writing pseudocode, the type of thing that we would do in the the older days, and it reduces the risk of context loss and and compounding errors.
我认为,即使在AI编程的时代,许多软件工程的最佳实践依然历久弥新。
I think that a lot of best practices in software engineering remain timeless even with AI coding.
所以,重视模块化、可测试的代码,坚持代码审查——AI会带来一些新习惯,比如关注输入输出的约束条件、提供足够的上下文,但这并不意味着你无法从中获得优质输出。
So, caring about modular, testable code, enforcing those code reviews, you know, AI is gonna introduce a few new habits, like thinking about the input and output constraints and seeding enough context, but that doesn't mean that you can't get good output from it.
这意味着你必须保持高度的严谨性,确保人类始终参与其中,从而为成功做好准备。
It does mean that you're gonna have to apply a level of diligence with that human in the loop to make sure that you are setting yourself up for success.
你越是把责任推给LLM,事情就越有可能失控。
The more that you sort of give give up your responsibilities to the LLM, the higher the risk is that something's gonna go off the rails.
是的。
Yeah.
我从一位工程师那里听到一件事,实际上是Armen Roccher说的,他是一位资深工程师,Flask和许多开源框架的创建者,他告诉我他观察到那些对自己的工作有很强掌控力和信心的工程师有一个有趣的现象。
And one thing that I heard from an engineer, actually, it was Armen Roccher, who's a long time century engineer, the creator of Flask and a bunch of open source frameworks, and he was telling me that he's observed something interesting with engineers who are firmly in control and very confident in their work.
他说他看到这些人在使用AI方面取得了更多成功,而那些感觉自己对工作、对任务没有太多掌控力,只是被动接受工单分配,并且有点‘世界在控制我’心态的人则不然。
He said that he sees they're just seeing a lot more success with AI, and the people who feel that they don't have that much control over their work, over their tasks, they're just assigned tickets, and and they also have a bit of a, like, you know, the world's controlling me mindset.
他们现在对AI及其影响感到非常恐慌,而我们讨论这个话题时我突然想到一点很有趣,因为从对话中我能感觉到,你的很多建议归根结底是要掌控局面、理解所有细节、保持自信——你要知道即使这个工具被拿走了,你也能继续推进工作,只是速度会慢一些。只要保持这种心态,一切都会变得更容易。
They're freaking out a lot more about AI and what it will do, and this was so interesting of of it just came to me as as we're talking about it, because what what I'm sensing from a conversation is, again, a lot of your advice boils down to be in charge, understand everything, be confident, you know, that if this thing gets taken away, you can make progress, like, no problem, it'll just be a bit slower, and as long as you have this mindset, it feels like everything is easier.
而且正如你所说,你仍然会仔细阅读思考过程,更喜欢那些能向你解释原理的模型,这样你之后还可以回顾查看——事实上你也经常这么做。
And and and keeping this, like, you know, you're as you said, like, you still read through the thinking, you prefer the models where it explains to you, and then you can go back if you wish, and you often do it.
你会通读内容来确保自己真正学到东西。
You read through to make sure to learn.
再说了,这其实还挺有意思的。
Plus, it's kind of fun.
展开剩余字幕(还有 402 条)
你一直在专业上持续学习。
You keep learning professionally.
你每天都在不断进步。
You keep getting better every day.
当然。
Absolutely.
完全正确。
Absolutely right.
我想到一点,AI不过是你的工具箱里的另一种工具。
I I'm I'm reminded of, you know, AI is just another tool in your tool belt.
你知道,随着时间推移,工程和开发者体验在每一代都在不断改善。
You know, we we've gone we've gone through so many different moments over time of engineering and developer experience getting a little bit better with with every generation.
当我刚入行的时候,还记得当模板出现时我有多兴奋。
You know, when I when I when I was coming up, I remembered getting excited when templates became a thing.
你是说,你可以用模板生成代码?
You could you could gen generate code with templates, you mean?
哦,不。
Oh, no.
只是下载一些模板来获取灵感,用于界面设计,或者作为起点
Just just downloading templates for ideas, for UI, for, you know, starting
在网页上。
off in on on the web.
对吧?
Right?
是的。
Yeah.
在网页上。
On the web.
而且,我觉得这只不过是些最简单的东西。
And I, like, this this was just the the simplest of things.
就是一个ZIP文件。
It was like a ZIP file.
对吧?
Right?
是别人创建的。
Somebody else had created it.
但好吧。
But, okay.
所以我改进了我的起点。
So I've I've improved my starting point.
然后我们有了更强大的命令行界面、脚手架工具之类的。
And then we got stronger command line interfaces, scaffolding, that type of thing.
于是你就不必再担心具体的起点了。
And then you didn't have to worry about the exact starting point.
我觉得这只是让我们向前迈进了一小步。
And I feel like this is just taking us a few steps forward.
它让我们更容易启动一个基本可用的解决方案,但仍然要求你真正理解自己写入代码库并交付给用户的内容,归根结底,你不能推卸责任。
Like, it's making it easier for us to bootstrap a solution that that kind of works, but still requires you to really understand what you are putting into your code base shipping out to users and and not, you know, getting rid of your responsibilities at the end of the day.
我发现,至少在过去一两年里,对我而言,回归第一性原理总是能带来很大帮助。
I find that, at least for me in the last year or two, going back to first principles, as always, like, has helped a lot.
我最近与谷歌DeepMind团队更紧密地合作,研究Gemini及其编程能力,这让我重新认识到许多技术背后的运作机制。
I've been, working a little bit more closely, with the Google DeepMind team, on Gemini and, its coding capabilities, and that has been a really good reminder for me of just understanding how a lot of these things work behind the scenes.
如果你还记得,训练数据到底是什么?
If you remember that, you know, what is what is training data?
它很可能是基于GitHub或开放网络上那些许可宽松的代码,而这些代码中的模式往往反映的是最低共同标准。
Well, it's very likely gonna be looking at permissively licensed, you know, code that's on GitHub or or out on the open web, the patterns in that code are probably gonna be reflective of, in many cases, like, lowest common denominator.
那些只是能运行的东西,它们会是最安全、性能最高、最易访问的吗?
Things that maybe just work, are they gonna be the most secure, the most high performance, the most accessible?
可能不会。
Possibly not.
因此,如果你记得训练数据本身仍需大量工作,才能让系统达到真正可用的生产质量水平。
And so if you remember that the training data itself, still requires a lot of work to, like, actually get things to a place where, you know, it maybe is of production quality.
当你使用大语言模型时,就会开始适当降低自己的期望值。
You sort of start start to set your expectations a little bit lower when when working with LLMs.
你意识到,是的,它很可能比我自己从别处复制粘贴代码片段做得更好,这很明显。
You realize, like, yeah, it will probably do a better job than me just copying and pasting snippets of code from somewhere else, obviously.
但我仍然很可能需要在此基础上进行一定程度的手动工作或仔细检查,才能获得最佳结果。
But I still very likely need to do a level of manual work or a level of diligence on top of this to get the best outputs.
是的。
Yeah.
这让我想起大约十年前,我们大量使用 Stack Overflow,因为当你搜索某个问题时,答案就在那里。
It reminds me a little bit of ten years ago or so, ten five, ten years ago, we used a lot of Stack Overflow because when you search for something, it was there.
比如,对于邮箱验证,你会搜索‘如何验证邮箱地址?’
And so, for example, for email validation, like, you would search, like, how do I validate an email address?
当时有一个 Stack Overflow 的问题,有二十个回答,其中一个评分最高,是一个正则表达式。
There was a Stack Overflow question, and it had, like, 20 answers, one of them was top rated, it was a regular expression.
而我做的,我想很多人也这么做,就是直接复制粘贴,因为我懒得去仔细定义邮箱的正则表达式,那比简单的东西复杂多了。
And what what I did, and I think what a lot of people did, is I just copied and pasted because I cannot be bothered to define exactly the regular expression of emails, which is a lot more complicated than just things.
所以我只是随便用了一下,如果只是用于不重要的地方,它确实能凑合用。
So I just kind of and if it was for nothing important, it it kinda worked.
但当时确实有人提出批评和警告,指出其中一些——虽然不是这个具体例子——存在安全问题或未考虑到边缘情况。
But there were then complaints and, like, flags raised that a a few of them, not this specific example, but they were insecure or they didn't account for edge cases.
很多开发者在心不在焉、觉得无所谓或者明明知道更好的做法时,还是会这么做。
And a lot of devs, again, when you were in the mindless mode or it didn't matter or you know better, you did that.
我想我们在更大规模上也会遇到同样的问题。
And I guess we're we're we're gonna have the same thing at larger scale.
比如,这个bug为什么会发生?你回头去看历史记录时就会发现。
Like, why did the bug bug happen, and you're gonna look back at the history.
是的。
Yeah.
有人提交了一个看起来不错的大型请求,结果发现它是AI生成的。
Someone just looks good to me for for that big poor request that was in the end generated by an AI.
我觉得这只是一个很小的点,属于附带讨论,但我确实见过不少情况,现在有人会说:嘿。
That I think that this is this is very much a smaller point, a side discussion point, but I I've seen a number of cases where people will now say, you know, hey.
如果我能自己用提示生成一个稍微小一点的解决方案,那我还需要使用第三方库吗?这让我立刻想起了当年复制粘贴Stack Overflow热门回答的情形。
Do I do I still need to use third party libraries if I can just prompt a very slightly smaller version of a solution myself, which reminded me exactly of the Stack Overflow copy pasting the top response thing.
如果你是一名资深工程师,你会意识到:等等。
And what you re if you were a senior engineer, what you realized is, well, hold on.
这也意味着你现在需要承担起确保这些代码在未来对安全问题、各种平台问题都具备鲁棒性的责任。
That also means that you are now taking on the responsibility of making sure that this is future proof for security issues, for all sorts of platform issues that could happen.
如果你依赖某个库,那么这些修复可能更容易在一个集中点进行,然后部署给所有人。
If you're relying on a library, it's perhaps easier for there to be a central point of leverage where those fixes can be made and then deployed out to people.
如果你自己在代码库中维护所有这些不同的模式,那就意味着你也承担了这份责任。
If you own all of these different patterns in your code base yourself, that also means that you're taking on that responsibility.
这完全可以接受,但我有时看到人们并没有意识到,这需要额外付出一点精力。
Can be totally okay, but it's something that I I sometimes see people just not being mindful of of requiring a little bit of extra
我觉得,这时候我们只需要提醒自己,这不过是工程问题而已。
And I I feel this is where we just need to remind ourselves that it's just engineering.
对吧?
Right?
这是一种权衡。
It's trade off.
你是否愿意承担维护这个东西的责任和风险,比如它可能存在缺失的边界情况,或者无法正常或安全运行?
Do you take on the responsibility and the risk of of maintaining this thing and the fact that it might have missing edge cases or whatever or might not work correctly or securely?
还是选择依赖一个本身也有问题的第三方库?
Or do take on a dependency, which has its own problems.
对吧?
Right?
现在确实如此。
There's now Yeah.
依赖项的安全风险等等。
Dependency security risks, etcetera.
但说到软件工程的需求,有哪些新的工作流程,是一些我们以前作为软件工程师无法做到、但现在可以借助这些AI工具进行尝试的全新方法?
But speaking of the need for software engineering, what are some new workflows, some some things that we have not been able to do before as software engineers that we can now experiment with, that you you might be trying out with with these AI tools that is is just like is brand new?
是的。
Yeah.
对我来说,最让我期待看到发展的,是异步后台编码代理这一概念。
I think for me, the the thing that I'm most excited about seeing evolve is this idea of asynchronous background coding agents.
目前有几个团队正在探索这些想法,比如 Jules、codecs,还有 codecs。
A number of teams playing around with these ideas at the moment, Jules, codecs, the codecs.
我们还看到 GitHub 也在尝试一些类似的想法。
We also see, you know, GitHub experimenting with some of these ideas as well.
我认为,能够将部分待办事项委托出去,并让系统异步地完成这些任务,是一个非常有趣的想法。
I think that the idea of you being able to delegate parts of your backlog and have a system be able to implement that in you know, asynchronously is is a very interesting idea.
如果我们能以一种易于人类验证的方式避免合并冲突,再次回到‘人在环中’的理念,我觉得这非常有意思。
If we can do that without merge conflicts in a way that is easily human verifiable so, again, going back to that human in the loop, I think that's very interesting.
我发现,现在这种情况已经相当成熟了:如果你让一个智能体负责编写或更新你的测试,或者多个智能体协同工作,试图将你的代码库从某个库的版本迁移到另一个版本,或者从某个依赖项的版本升级到另一个版本,它们现在在这方面已经相当不错了。
I have been finding that that is very, very, very much already in a place where if you are having one agent work on writing or updating your tests, or you have a number of agents working together on trying to migrate your code base from one version of a library to another or, you know, a version of a dependency to another, that they're pretty okay at doing that kind of work right now.
对于更小的改动,比如我们每个人都要做的添加深色模式这类任务,如果能将这类小改动委托给异步智能体,未来它们会变得非常出色。
Smaller changes, like, there there are lots of things that, you know, we we all have to do, like adding dark mode, for for example, like smaller kinds of changes where maybe being able to delegate those kinds of changes to asynchronous agents are are gonna, you know, get get very, very good.
我对这一点感到兴奋。
I'm excited about that.
我认为,关于作为这场交响乐的指挥者,究竟什么样的交互界面才是合适的,以及你同时管理多少项任务才是现实的,这些问题的答案还有待观察。
I think that the jury's still out on exactly what is the surface for being able to you know, if if you are the conductor of this orchestra, what is the right surface for you being able to manage all of these things, and what is a realistic number of tasks for you to be managing at the same time?
因为,你知道,就连我,还有不少人都展示过,嘿。
Because, you know, e even I, like a number of people have shown off, like, hey.
是的。
Yeah.
我开了二十多个终端,其中一半在运行Claude代码,另一半在运行Gemini,看起来挺搞笑的,但事实上你的注意力是有限的。
I've got, like, 20 different terminals open, and I have Claude code running in half of them, and then Gemini running in and and it's it looks it's funny, but the reality is that you only have a finite amount of attention.
如果你真的想在代码审查和每个工作流程中投入精力,你可能只能同时处理几件事。
And if you are going to be actually putting in diligence into your code reviews and into each of these workflows, you are probably only going to be able to do a couple of things at the same time.
你知道,这一切最终还是回到多任务处理的最佳实践。
You know, it all comes back to to multitasking best practices.
但我对这个很感兴趣。
But I'm interested in that.
我很想看看这会走向哪里。
I'm interested in seeing where that goes.
另一件非常有趣的事情是氛围设计。
Another thing that's very interesting is is vibe designing.
我看到产品工程和产品开发的这一部分正在发生一些变化。
I'm seeing that part of product, you know, product engineering, product development evolving a little bit.
看到Figma的MCP正朝着这个方向迈进,这令人兴奋,这些工具能让设计师和开发者更紧密地合作,或者至少让设计师能够将自己的构想转化为可运行的原型,一种更接近代码、可以投入生产、而不仅仅是一个一次性演示的东西?
It was very exciting to see, you know, Figma's MCP moving a little bit closer in this direction, things that allow designers and developers to work more closely together or to at least enable designers to be able to take their vision and turn it into a functional prototype, something perhaps a little bit closer to code that can then be productionized and and is not just a one off demo?
是的。
Yeah.
我听说Shopify的一位工程主管或设计负责人提到,她团队里的每一位设计师——不是Shopify所有设计师——都在使用Cursor,他们先创建一个Figma设计,然后让Cursor来实现它,再展示给工程师看。
I I I heard an engineering lead or design leader at Shopify said that her team, every designer on her team, so not all of Shopify, has Cursor, and what they do is they create a Figma design, and then they ask Cursor to implement it, and then they show it to engineers.
这并不是说直接上线,而是我们现在有了一个可以互动的东西,而不是过去那种仅仅分享Figma设计的做法。
And this is not saying ship it, It's just more we now have something interactive that we can work with as opposed to just what they used to do, which is sharing a Figma design.
这真是我以前没听过的做法。
And I was like, this is something I've not heard before.
就像是,是的。
Like Yeah.
真的。
Truly.
我的意思是,所有设计师,或者至少是使用开发者工具的团队里的设计师,我无法想象设计师会用 Visual Studio Code,我的意思是,我或许能想象他们能打开它,但根本不可能想象他们真的会用,因为这根本不是为他们设计的。
Like like, all designers or at least on a team using the developer tool, like, I couldn't imagine designers using Visual Studio Code for I mean, I can imagine them being able to open it, but I couldn't imagine them it's just not built for them.
所以听到这个真的非常有趣。
So this was really, really interesting to hear.
再说一遍,这并不是什么供应商的广告。
Again, this wasn't some vendor advertisement or anything.
是的。
Yeah.
向 Shopify 团队致敬。
Shout out to the Shopify team.
说实话,我觉得他们中有不少人非常愿意分享团队中行之有效的方法,我很喜欢关注他们的故事。
Honestly, feel like a number of them have been very open to sharing what's been working out well for their teams, and I've enjoyed following their story.
我认为,这些模式能否更广泛地推广,将部分取决于培训、治理,以及明确区分原型代码和生产代码的界限。
I think that, you know, more of these patterns spreading is gonna depend a little bit on on training, on governance, on, like, clear boundaries between what is prototype code in production.
但已经能够把静态设计转化为半功能原型,这已经非常酷了。
But already being able to turn something static into a semi functional prototype is very cool.
我们会看到每个人都使用Cursor吗?
Are we gonna see everybody using Cursor?
我不确定。
I I don't I don't know.
我认为至少对我来说,我会看到人们通过他们最常使用的工具,或者工具之间的桥梁不断改进,来实现相同的结果,但我仍然觉得这非常令人兴奋。
I I think that I at least for me, I I see folks being able to accomplish the same outcomes from the tools that they spend the most time in or the bridges between tools getting better over time, but I still think it's very, very exciting.
同样地,我们也看到很多关于产品经理和工程经理角色变化的精彩讨论。
In the same way, you know, we're also seeing lots of good conversations about PM and EM roles changing.
产品经理可能会花更多时间在问题定义、指标和代理策略上。
PMs maybe, you know, spending more time on problem framing and metrics and policies for agents.
工程经理则会花更多时间在评估、安全审查以及真正帮助团队自信地使用AI上。
EMs spending more time on evals and safety reviews and really enabling their teams to work with AI confidently.
这不会改变对结果的责任归属,但我看到很多关于产品工程中‘品味’重要性的良好讨论,而这将是区分人的关键。
It won't change accountability for outcomes, but I am seeing a lot of good discussions about the need for taste in product engineering where that's gonna be what differentiates people.
因为如果任何人都能看看你构建的东西,并通过提示实现类似的功能,那么‘品味’这一部分在未来将继续成为人们关注的重点。
Because if anybody can, you know, look at what you've built and can use prompts to accomplish, you know, a similar set of functionality, the taste piece is gonna continue to be very interesting for folks to focus on in the future.
你和我之前讨论过初级和高级工程师的问题。
You and I have talked about sort of juniors and seniors.
我觉得,对于新毕业生和资深工程师来说,未来会很有意思。
I think that, you know, there's gonna be interesting times for new grads, versus seniors.
你知道,AI确实提高了入门门槛,但也提升了上限。
You know, AI definitely raises the floor, but it also raises the ceiling too.
初级工程师能够更快地上手,但那些能撰写规范、分解任务、理解系统架构、有效评审的资深工程师,我认为他们会变得更加宝贵。
And, juniors are gonna be able to get moving faster, but, seniors who can, you know, write specs, decompose work, understand system architecture, review effectively, I think that they're gonna become even more valuable.
我们之前谈到的最后那30%,我觉得是杠杆效应。
And that last 30% that we talked about, I think it's leverage.
不是单纯的琐碎工作,而是真正的杠杆效应。
Not just busy work, but actually, I think it's leverage.
很多调查都显示,目前人们对信任的态度是谨慎而乐观的,但这种谨慎正说明了人类监督仍需保持核心地位。
And, you know, a lot of surveys have been showing that trust is in a a cautious but optimistic place at the moment, but that cautious piece speaks to the need for that human oversight remaining pretty central.
是的。
Yeah.
当我想到并行代理这个概念时,我刚刚在想,从开发者角度来看,这种事以前从未发生过。
And if I think about, I was just thinking that when it comes to this idea of parallel agent, on one end, I don't think it's ever been done in the sense that as a developer, you were never able to do this.
我的意思是,我们以前根本无法用自然语言启动对话,让机器直接生成能编译的代码。
I mean, we we couldn't even kick off and talk with natural language to a machine that would spit out code that actually compiles.
我觉得这也是全新的,但更重要的是,你能同时用多个代理来完成——这在编程领域以前从未出现过。当你处于工作流中,专注于一个问题时,一旦停下来,就会切换到另一个任务,你的上下文几乎就像栈被清空了一样,然后你加载新的内容。
Like, I think this is new as well, but the fact that you can do it with multiple, on one end, it's not happened before on programming is a very, you know, you're in the flow, you work on one problem, when you stop working on it, you switch over, you get your context almost like the stack clears, you know, you load the new thing.
这种感觉确实有点像。
It it kinda feels like it.
对吧?
Right?
但另一方面,当我回想起我认识的那些最优秀的资深工程师,他们的日常是怎样的呢?他们通常和几个中级工程师、可能还有一些实习生或新毕业生组成团队,各自处理自己的任务。
But on the other, when I think back to who are the best senior engineers I know and what do they their days look like, well, they're on a team with a few mid level, may maybe some interns or new grads, and they're working on their stuff.
然后,他们往往是那个收到Slack消息的人,消息写着:嘿。
And then they're the ones who get the Slack ping saying, hey.
你能帮我解除阻塞吗?
Could you please unblock me?
所以他们会切换上下文,审查代码,批评它,或者专门安排时间反复审查。
So they context switch, review the code, you know, like like, criticize it, or they block out time and they're review, review, review.
而且,对于每一位资深工程师——通常他们也是技术负责人——都会带几个下属,他们不是代理,而是真人,但他们会审查他们的工作,并在站会上、计划会议上稍微引导他们,给予提醒和指导。
And, like, for every kind of senior slash often these are tech leads, they have, like, a few people who are you know, they're not agents, they're people, but they they just review their work and they kind of orchestrate them a little bit on the stand up, you know, they're in the planning meeting, they nudge them, they mentor them.
所以某种程度上,我觉得我们资深工程师已经在做这件事了。如果我有一根魔法棒,问:几年后谁最有可能管理多个代理?
So in some sense, I feel like we seniors already do this, and if if I had a magic wand saying, like, who's who would I expect in a few years' time to be able to manage multiple agents?
肯定是资深工程师。
Well, the senior for sure.
至于新人,我觉得对他们来说这可能太勉强了,而且他们本来也不被期望具备这种能力,因为他们缺乏经验。
Like, new grads, probably, like, I mean, I I feel that will be a stretch for them, but they're not expected to have that, and they don't have the expertise.
所以我很好奇,这些技能是否在某种程度上是可迁移的?为什么这位资深工程师能做得这么好?
So I I wonder if some of these skills are somewhat transferable in the sense that and, you know, that senior, why could that senior do that well?
因为他理解了代码库。
Because he understood the code base.
他知道什么是好的代码。
They knew what good looked like.
他们总是非常细致地进行代码审查。
They were always thorough on their reviews.
他们从不让任何问题溜走。
They never let things slip.
他们会指出哪怕是最微小的细节。
They called out even the smallest thing.
我完全同意你的观点。
I completely agree with you.
而且我认为,团队中的开发者教育也可能为此发生演变。
And I and I think that there's a lot to be said about how developer education in Teams may also evolve for this moment.
回想我刚入行的时候,导师制一直是个重要话题,我们经常讨论,特别是对于刚加入新团队的人,结对编程的重要性。
Historically, I I remember when I was coming up, you know, mentorship was always a big topic, and we talked about, you know, especially for folks, who are joining a new team, the importance of, like, pair programming.
我想我们会看到类似‘三人编程’的情况,即一位初级开发者、一位资深开发者和AI共同协作。
I think we're gonna see, you know, perhaps even situations of of trio programming where it's a junior senior and the AI.
也许资深开发者会要求你解释AI生成的代码,或者引导你理解这段代码如何与系统的其他部分关联。
And maybe the senior is going to be there asking you to explain the code that the AI is generating in some way or walking you through how that code perhaps connects to other parts of the system.
而且,再次强调,把它当作工具箱中的额外工具,帮助提升对整个应用程序如何运作的信心和认知。
And, really, again, using it as an additional tool, in their arsenal, to be able to help, build up confidence and awareness, of how of how the full app actually works.
我们还看到一些关于潜在新角色或角色优化的有趣讨论,比如前线工程师。
We're also seeing some interesting discussion about, you know, potentially, new roles or or refinements of roles, things like forward deployed engineers.
我注意到人们对那些更贴近客户的开发者感兴趣,他们能利用AI快速开发功能,同时反馈需求。
I'm seeing interest in, you know, developers who are a little bit more embedded with customers, who can build features rapidly with AI while feeding back requirements.
这类情况可能会模糊开发者、产品经理和设计师角色之间的界限。
And that type of thing might blur the lines between, you know, the developer, PM, and designer roles a little bit.
我很想知道这些趋势最终会走向何方。
I'm interested to see where where that, may end up going.
我也很感兴趣,从广义上讲,AI工程将如何改变我们对教育的思维方式。
And I'm also interested in how, you know, just generally speaking, AI engineering is going to evolve how, you know, we approach education.
无论你是在高中还是大学,我们会不会教人们提示词和上下文工程的最佳实践?
Whether you're in high school or you're in college, like, are are we gonna be teaching people prompt and context engineering best practices?
这一切到底会是什么样子?
What what does that all actually look like?
我们如何继续帮助人们以系统设计和工程的思维来思考?
How do we continue to enable people to think with systems design and engineering in mind?
但我对教育这一方面的发展非常期待。
But I'm I'm very excited where the education side of this goes.
我们之前讨论过的一个领域是代码审查,它真的非常重要。
So one area that we've talked about was code reviews and how it's really important.
这是一个瓶颈,我们应该审查代码。
It's it's a bottleneck, and and we should review the code.
我已经注意到自己的一种倾向:当我使用这些AI工具时,无论是ClotCode、代理,还是自动补全功能,我都会习惯性地点击、接受,甚至直接接受所有建议,尤其是在处理那些并非至关重要的任务时,因为这些任务看起来很简单。
One thing that I'm kind of noticing on myself already is when I use these AI tools, may that be ClotCode or or agents or or even just the autocomplete, I have a tendency to do tap tap or accept or just, like, accept all the things, especially when I'm working on something that, I mean, it's it's not the most critical thing in the world, and it's kind of it's easy.
尤其是当我开始信任这些工具大多数时候都能正确完成任务后,我知道最终我还是要审查的。
And especially after I started to trust that it gets it right most of the time, in the end, I know I'm gonna review.
但我发现自己在批判性思考上有所减弱。
But I find myself losing a little bit of criticality.
我没有以前那么挑剔了,比如第二天、第三天,当我刚接触这些工具、还不信任它们的时候,我的态度可没这么松懈。
I'm not as critical, you know, the second day and the third day and and when I was the first time when I didn't trust this thing.
我有点担心,在代码审查中,同样的情况也可能发生。
And I worry a little bit that with code reviews, the same could happen.
你知道,LGTM,看起来没问题。
You know, LGTM looks good to me.
我明白,这是谷歌的一个隐患,而且被内置在你们的代码审查工具中,据我了解,这是一个非常有趣的工具。
I mean, I understand that's a Google hazard and and built in as a as a as a feature in in your code review tool, which is a really fun tool, as I understand.
但确实存在这种风险。
But there is this risk.
当然,一直以来都存在这种风险,就是你只是觉得工作量太大,
There's always been this risk, of course, that that, like, you just kind of, like, it's a lot of work.
看起来没问题,但你并没有认真审视。
It kinda looks good, and you're not looking critically.
你觉得,尤其是在正规的团队中,我们该如何应对或对抗这种敷衍了事的审查行为,特别是当我们自己写的代码并不多的时候?
How do you think, especially on on on, you know, like, proper teams, we could battle or or or we could do this kind of fighting against, like, yes, giving it a proper review, especially if we haven't written the code that much?
因为我觉得,写代码的时候,你至少会有两次审查。
Because I feel with writing the code, you have, like, two reviews.
一是你在写自己的代码。
One is you're writing your own code.
你亲手敲出代码,虽然我们现在不常这么做,然后别人在知道这是你写的代码的情况下进行审查。
You're typing it out, which we're not doing as much anymore, and then someone else gives a review knowing that it was you who typed it out.
我的意思是,写代码总是比阅读和审查代码更有趣。
I mean, it's always it's always more fun to to write code than to to read and and review it.
是的。
Yeah.
有一点。
A little bit.
对吧?
Right?
对。
Yeah.
我认为我们工作中的越来越多部分将变成阅读和审查代码。
And I I I think more and more of our job is going to become about reading and reviewing code.
我曾尝试向大家提出一些想法。
There are a few ideas that I've I've tried to suggest to folks.
比如,对于某些功能或特定的星期几,你可以有意地尝试不依赖AI或大语言模型,只是看看:好吧。
Things like, you know, for certain features or certain days of the week, maybe you intentionally try to not lean on using AI or an LLM and just try to see like, okay.
我还能不能自己解决一些这些问题,以保持你的批判性思维能力,并迫使你思考:好吧?
Well, can I can I still solve some of these problems myself to preserve your critical thinking skills and force you to think about, okay?
假设所有的顶级大语言模型提供商一整天都宕机了,你会怎么做?
Well, let's say that all of the top LLM providers were down for the day.
你会怎么办?
What would you do?
开个玩笑,我想我会说,是的。
Being cheeky, you know, I would probably say, like, yeah.
我就直接用Ollama和本地模型,完全没问题。
I'm just I'm just gonna go, you know, use Olama and a local model, and I'll be totally fine.
我会找到一些备用方案。
I will find some fallback.
但现实是,我认为对于我们来说,能够独立思考事物的工作原理、不依赖AI就能解决问题,仍然会非常重要。
But the reality is that I do think that it's gonna continue to be very important for us to be able to think through, how things work, be able to problem solve without necessarily, you know, relying on the AI.
这些模型会继续变得越来越好。
The the models are going to continue getting better.
它们从你的代码库中获取足够上下文的能力也会持续提升。
Their ability to take in sufficient context from your code base is going to continue getting better.
但在我看来,在你能完全信任AI在任何情况下都能正确应对你提出的各种需求之前,还需要相当长的时间。
But it is going to take quite some time, in my opinion, before you're going to be able to fully trust that in every situation, whatever requirements you throw at it, it's gonna be able to get it right.
如果你卡住了,尝试了五次、十次还是没能解决问题,你就得自己来解决这个问题。
And if you get stuck, if you're trying things out, and you've tried it five, ten times, and it still hasn't solved the problem, you're gonna have to solve the problem yourself.
所以我认为,主动创造一些情境来锻炼和反复测试自己的批判性思维能力,将会非常重要。
So I think that, being able to force yourself into situations where you're testing and retesting your critical thinking skills are gonna be important.
我还觉得,在这方面做一些博弈论式的思考会有些价值。
I also think that there's a little bit of value in, you know, doing some game theory around this.
团队或个人可能会越来越依赖AI来完成更多的代码审查,以跟上快速变化的节奏。
Teams or individual people are probably going to start leaning on AI to do more of the code reviews to keep up with the, you know, pace and and velocity of change coming in.
这些工作流程会是什么样子?
What are those workflows going to look like?
如果你有一个代理说,是的。
If you have an agent that's saying, like, yeah.
我审查了这个PR,看起来可以合并了。
I reviewed this PR, and it looks good to merge in.
你真的会信任它吗?还是会亲自进行人工审查,即使你的时间投入可能比以往更少?
Are you actually gonna trust it, or are you gonna go and do a human level review even if it take you know, is maybe more shallow than you historically would have done?
或者你愿意花上十到二十分钟来完成审查。
Or maybe you're okay with spending ten, twenty minutes or something on on the review.
那么,这种工作方式会是什么样子?
Like, what does that work will look like?
就我而言,即使一个代理告诉我某件事可以合并,这也是一种信号。
In my case, even if an agent an agent telling me that something looks good to merge is a signal.
这类似于一种信号,比如:好吧。
It's similar to a signal of like, okay.
也许我团队里的一名初级成员也给出了 LGTM。
Well, maybe a a junior person on my team has also, you know, given this in LGTM.
但如果足够关键,我可能还是会回去检查。
I'm still gonna probably go back if it's critical enough.
或者 CI/CD 通过了所有测试。
Or the CICD passes all the tests.
对吧?
Right?
状态是绿色的。
It's it's green.
所有测试都通过了。
All tests pass.
没错。
Exactly.
没错。
Exactly.
这只是一个信号。
It's it's a signal.
信号很有用,但你仍然需要运用自己的判断标准,仔细检查,确保自己有信心。
Signals are useful, but you still want to apply, you know, your lens on quality to it and and take a look through and just make sure that you're you're confident.
像拥有这些测试、你和你的团队讨论过的各种质量检查点,把这些都落实到位,这些都是建立信心的好信号。
Things like having those tests, having, you know, whatever quality gates that you you and your team discuss, like, having those in place, all of these are good signals for building up confidence.
因此,你拥有的信号越多,就越能增强信心,确保合并代码时不会出问题,我认为这是好的。
So the more signals that you have can build up to build up confidence that things aren't gonna go off the rails when you merge in, I think that's good.
但我尽量有意识地确保自己不会完全依赖AI来做所有事情。
But I try to, you know, be very intentional with making sure that I'm not leaning on AI for absolutely everything.
我可能会在日常生活的许多方面使用AI,包括AI编程,但我仍然会确保,无论有多少任务——比如20%、30%或任何比例——并不一定需要AI,我都会尽量用自己的大脑去解决这些问题。
I may use it for many aspects of my life on a day to day, including AI coding, but I still try to make sure that I'm you know, whether it's 20 or 30% or whatever amount of my tasks don't necessarily require AI, I still try to make sure that I'm using my brain, to to solve those problems myself.
我认为这种主动性——主动保持批判性思维能力——会对人们有所帮助。
And I think that intentionality, like, just be proactive with maintaining your critical thinking skills, I think that's gonna help people.
是的。
Yeah.
关于这些事情中的一点,你仍然要亲力亲为,我想到两个例子。
And one of these things of like, you're still hands on two things came to my mind.
其中一个就是最近上线的 Cloud Code。
One was a Cloud Code actually recently shipped.
你可以切换模式。
You can change modes.
你可以开启‘解释模式’,它会详细解释内容。
You can have Explosatory Mode where it explains things.
还有一个叫‘学习模式’,它会暂停并让你自己完成某部分,我觉得这非常巧妙。
And you have a thing called Learning Mode, which is it pauses and says, you do this part, which I thought was really clever.
我确实为我正在开发的一个项目开启了这个功能。
I actually turned it on for for something that I was building.
它没有像我预期的那样工作,因为它给了我一个非常奇怪的任务,但我看到了它的潜力。
It didn't work as I expected because it gave me a really weird task to do, but I see the potential.
我其实有点想更多地依赖它,也希望其他工具也能将这种功能纳入开发者工具中。
And I actually I actually am tempted to lean a bit more on that, and I think it's I hope other tools will also do this as part of the developer.
我觉得我确实想知道我能不能做到。
Like, I I feel I do want to know that I can do it.
我能做,但如果不做,我怎么知道我是不是做对了呢?
I I can do it, but how am I gonna know if I'm if I'm not doing it?
当然,你会稍微摆弄一下
Of course, you fiddle around a little bit with
我觉得这个想法太棒了。
I think that is such a fantastic idea.
如果你是新人,或者刚接触一个不熟悉的代码库,别急着去尝试提供价值,直接催生一个新功能。
And if somebody is a junior or you are coming into a code base that you're not familiar with, fight that, feeling of the first thing I'm gonna do is try to provide value, and I'm gonna just prompt a new feature into existence.
不如先用大语言模型来解释一下这个代码库是怎么运作的,花点时间沉浸其中,好好理解这个代码库的丰富内涵。
Maybe use the LLM to just explain how the codebase works, and just spend time, like, soaking yourself up in the richness of, like, what is the codebase?
它是怎么工作的?
How does it work?
所有部分是如何相互连接的?在开始催生功能之前,先搞清楚这些。
How does everything connect together before you start prompting things into existence?
我认为把它用作学习工具是非常强大的。
I think that using it as a learning tool is is a very powerful thing.
我们需要更多的这种做法。
We need we need more of.
你提到的这一点,新员工使用学习工具,这也是很重要的一点。
And this is also something, what you said, new new new joiners using a learning tool.
我听到一些公司说,新员工的入职速度变快了。
I'm hearing from a few companies that they're seeing new joiners onboard faster.
那些能够使用这些AI工具来解释内容、梳理代码库的新人,把这些工具当作一个值得信赖的人。
The ones where they can use these AI tools to explain stuff to them, outline the cloud base is is just a a kind of a trusted person.
你可以24小时随时提问,就像问一位资深工程师一样,我的意思是,你随时都能问,但显然你并不想频繁打扰。
Twenty four seven, you can ask questions on, like, a senior senior engineer who I mean, you you can ask questions anytime, but, obviously, you don't wanna do it.
毕竟,一天只有八小时工作时间。
It's, like, you know, eight hours of the eight hour working day.
你会给自己设定界限的。
Like, you you're you're gonna keep your limits.
有趣的是,这种变化改变了许多使用这些工具的工作场所的氛围。
And it's it's interesting how that that has changed the dynamics at the at a bunch of workplaces that do have these tools.
确实如此。
Absolutely.
我认为,我希望将AI作为学习工具的做法能成为一种更普遍的标准。
I I I think that, you know, my my hope is that it's gonna become a much more standard thing, treating AI as a learning tool.
这不仅仅适用于理解新的代码库。
And it's it's not just for understanding, you know, a new code base.
它对于理解编程概念、框架或架构模式也非常有用。
It can be very useful for understanding programming concepts or frameworks or architectural patterns.
有时我想把一个功能从一个截然不同或使用不同编程语言的代码库迁移到另一个代码库。
There are times when I wanna be able to bring a feature over from one code base that is very different or written in a different programming language over to another.
我发现,在这些情况下,AI对于帮助我理解一个代码库并找到将其内容迁移到新代码库的路径是不可或缺的。
And I have found AI, very much indispensable for those situations of helping me understand one code base and the path to being able to bring over something, to to a new one.
因此,鼓励你的团队尝试AI工具,分享最佳实践,让使用AI作为学习工具成为常态,我认为这对你作为领导者和管理者来说将大有裨益。
And so encouraging your team to experiment with AI tools, sharing their best practices, making it a regular thing that people know it's okay to use it as a learning tool, I I think it's just gonna be great for you as as as leads and and and managers.
你也是一个团队的管理者。
And you're you're also a manager of of a team.
作为其中的一部分,你当然要进行绩效评估和晋升,帮助人们在职业上更好地成长。
And as part of this, obviously, you you do performance reviews, promotions, but help people basically professionally get better.
自从这些工具出现以来的过去三到四年里,你对优秀且扎实的软件工程师的定义,或者你在团队中看到的定义,发生了怎样的变化?
How do you think the kind of your definition or what you're seeing on the team, a definition of a really standout solid software engineer has changed in the last three to four years since these tools have come out?
有什么新的变化?又有什么是保持不变的?
What is new and and what is the same?
我认为新的变化在于终身学习的重要性——我始终认为这一点至关重要。
I think that what is new is the importance you know, we one of the things that I have found has always held true is the importance of being a lifelong learner.
这一点一直都没有改变。
That has always remained true true.
无论框架如何更替、工具如何变化,行业如何发展。
Doesn't matter if frameworks come and go, tools change, you know, the industry evolves.
保持终身学习的态度,乐于尝试新事物,敢于失败,并不断积累技能,我认为这依然非常重要。
Being a lifelong learner and being very open to trying out new things, failing, building up those skills, I think that that remains very, very important.
我团队中那些早期就能成功利用AI进行编码和产品工程的人,都是带着这种心态的:我乐于学习新事物,愿意尝试,并拥有成长型思维。
The people on my team that I think were the most successful early on at leveraging AI for coding and for product engineering were the ones that went in with this mindset of, I'm happy to learn new things to try out and to have this growth mindset.
如果没成功,也没关系。
And if it doesn't work, that's fine.
至少我尝试过了。
At least I've tried it out.
至少我理解了其中的限制,未来也许会为不同的使用场景尝试不同的模型。
At least I understand, the constraints, and maybe I'll try out different models for these different use cases in the future.
我认为这一直是一个非常重要且一贯的特质。
I think that that has been very much a consistent, thing that's been important.
我觉得,作为团队负责人,现在正是你帮助团队度过这一阶段的时候,要展现出你自身也愿意学习。
I feel like if you are a lead, now is the time for you to be helping your team through this moment in terms of showing that you're okay with learning as well.
我每周都会做的一件事是,花大量时间阅读,我非常喜欢阅读。
One of the things that I do every week, actually, is I spend a lot of time I love reading.
我花很多时间阅读。
I spend a lot of time reading.
我当然会经常阅读你的通讯。
I will, of course, read your newsletter a lot.
我会阅读大量不同的论文、白皮书、博客,观看视频和课程,关注每周AI和AI工程领域的新动态,并将这些内容整理成通讯发给我的团队。
I will read a number of different papers, white papers, blogs, watch videos, watch courses, read announcements about what is new in AI, what is new in AI engineering during the week, and I will surface those things to my team in a newsletter.
我也会为你的团队制作一份内部通讯吗?
I I will also surface those an internal newsletter for your team?
我有一份内部通讯。
I've got an internal newsletter.
我每周一都会写它。
I I write it every Monday.
所以我会在本次对话结束后继续写它。
So I'll be I'll be writing it after after this.
我会包含一些我正在尝试的项目。
And I will include, like, what am I hacking on?
我正在写些什么?
What am I writing?
我在想什么?
What am I thinking?
我认为我们的团队真正需要注意哪些事情?
What are the things that I think are important for our team to actually pay attention to?
在这个时代,你知道,你看到这么多人难以跟上进度,如果你在推特或其他社交媒体上关注动态,可能会感觉非常
And in this time where, you know, you you see so many people struggling to stay up to date, if you follow along on on Twitter or other social networks, it can feel very
令人不知所措。
overwhelming.
是的。
Yeah.
因为每隔几个小时,就感觉有什么东西从根本上发生了变化。
Because every few hours, it feels like something has changed in a fundamental way.
对。
Yeah.
能够筛选这些信息,帮助人们专注于真正重要的事情,我认为这正是当前领导层应该做的,特别是如果你能引导大家关注,嘿。
And being able to sift through that and help people to just pay attention to, like, what is actually important, I think that's a great thing for leadership to be doing right now, especially if you can guide folks towards, hey.
也许可以多花点时间研究这个,而不是那个。
Maybe spend a little bit more time poking at this rather than that.
我只是想说,我觉得这很符合伊斯兰教的风格,因为你仍然更贴近行业本身。
I just want to say, I think it's Islam dunk because you're also staying closer to, you know, the the industry.
比如从技术层面来说,说你亲力亲为可能有点夸张,但通过持续关注这些,你已经非常接近了。
Like, to being technical, maybe it's a stretch to say hands on, but you're pretty close to that just by keeping up with all of this.
是的。
Yeah.
对。
Yeah.
而且我知道,我会让团队里的其他人来发表意见,但我总体上收到的反馈都很好。
And I've you you know, I I I'll I'll defer to, you know, people on my my team to to to say things, but I think that would I've generally had good feedback about this.
我甚至收到过其他高管说:嘿。
I've even had, like, other execs saying, hey.
实际上,我发现很难跟上这些进展,而你的通讯稿也在帮助我度过这个阶段。
Actually, I'm finding it really hard to stay on top of this, and your newsletter is helping me navigate this moment as well.
所以我认为,作为团队负责人,能够以你感到舒适或时间允许的任何程度跟上当前的发展,这对你的团队来说会是非常有力的,也能帮助你保持自己的技能相对敏锐。
And so I I think that as a lead, being able to stay on top of what is happening at whatever level you are comfortable with or that your bandwidth allows, I think that that can be a really powerful thing for your team and will help you just keep your your own skills relatively sharp.
我们之前聊了很多关于AI辅助工程的话题。
You know, we've been talking a lot about AI assisted engineering.
如果你们团队需要构建AI功能,很多这类内容对他们来说也会继续相关,因为你能够帮助他们厘清:在AI领域,哪些行业动态真正与他们的工作相关,哪些并不重要。
If your team do have to build out, like, AI features, a lot of this stuff is also gonna continue to be relevant, for them too because you can help connect the dots between what is happening in the industry where AI is concerned that is actually important to their work versus what is not.
尤其是在当下,这尤其重要,因为可能有些事情是他们过去从未需要考虑过的。
And that's especially I think it's exceptionally important in this moment where maybe there are things that they have not had to historically think about.
比如,嘿。
Like, oh, hey.
模型X在图像生成方面非常出色,但模型Y在生成声音方面更厉害。
Well, model x is really good at image generation, but model y is really good at generating sound.
我这只是随便举例。
I'm I'm just making things up.
但我认为,你能以更具体的方式指出这些机会,会非常有用,这样你的团队就可以自行深入研究,而不会从零开始。
But I think that it it is really useful for you to be able to, maybe highlight some of these opportunities in a more concrete way, and then your team can go off and and spend time digging into it themselves, but they're not starting from a blank slate.
而且,我想你只是在展示,看吧。
Plus, I guess you're you're just showing that, look.
看吧。
Look.
我在学习。
I'm learning.
我花时间阅读、理解和消化。
I'm spending time reading, understanding, digesting.
我在业余时间做些事情,这相当于表明这样做是可以的。
I'm doing some stuff on the side, which kind of gives the permission that it's okay to do it.
而且,说实话,每个人情况不同,但我想,鉴于我们现在正经历这项技术的重大变革,它是一个新工具,拥有许多新功能。
And if anything, I mean, you know, everyone for themselves, but I would assume that right now, because we are having a big change in in this technology, it's it's a new tool, a lot of capabilities.
在大多数公司和团队中,除非你正处于周五紧急交付的高压状态,否则让工程师花点时间实验、探索一下‘我能不能用这个东西?’应该是可以的。
It should be okay at most companies, and most teams, unless you're like has done crunch time shipping something like on Friday to for for engineers to spend some time experimenting, figuring out, hey, can I use this thing?
它对我有用吗?
Will it work for me?
你知道吗,当我再次与Shopify的同事们交流时,他们经常这么做,最终,有些人可能以为会发生的情况是:人们会做更少的工作。
You know, when I talk with, again, the the folks at Shopify, they do a lot of this, and and in the end, actually, what what some people think might happen is, like, well, people do less work.
但实际上,发生的是他们做的工作量和以前一样,只是更有动力了。
Actually, what happens is they do the same work as they did before, but they're way more motivated.
他们尝试了很多新东西。
They tried a bunch of new stuff.
有些尝试没成功,你可能会觉得这是浪费,但其实并不是。
Some of it doesn't work, and it's kind of a a would think it's a waste, but it's actually not.
这是一种学习过程,现在他们对哪些方法有效、哪些无效有了更大的信心。
It was learning, and now they're a lot more confident about what works, what doesn't.
你知道,他们会很自信地说:好吧。
You know, they'll they'll confidently say, like, okay.
我们不会用AI来生成代码库的这一部分,但用于原型设计是很好的,等等。
We're we're not gonna use AI for to generate this part of the code base for prototyping is great and so on.
所以我觉得,是的,每个人都在摸索,因此不获得许可几乎是种浪费,而有什么比你自己也这么做更能获得许可呢?
So I feel like, yeah, everyone's figuring things out, so it's it's almost a waste to not get permission, and how how how how better way to get permission than to show that you're doing this as well?
是的。
Yes.
是的。
Yes.
当然。
Absolutely.
人工智能是一种工具。
AI is a tool.
我认为,能够压缩工作量的工具,也可能带来清晰的时刻,而且尝试某些类型的想法比以往任何时候都更快。
Tools that can compress work, I think, can can also lead to good moments of clarity, and it is faster than ever to try out certain classes of ideas.
我认为,这种效率有时也能凸显我们人类品质的重要性,比如在判断我们应该推进什么时。
And I think that that efficiency can also sometimes highlight the importance of our human qualities when it comes to, like, judging What what should we be moving forward with?
我们应该忽略什么?
What should we be ignoring?
我们应该最小化什么?
What should we be minimizing?
我认为,在当下尝试拥抱人工智能,弄清楚什么对你和你的团队最有效,是充分利用时间的好方法。
I think that trying to embrace AI in this moment and figure out what, you know, what works well for you you and your teams is is a great use of time.
我想说,如果您的观众中有企业界的人士,尤其是我知道,经历过这段旅程后,可能会有一些团队觉得,哎呀,感觉初创公司比我们行动快得多,或者他们能使用所有这些优秀的新工具和模型,而我们却还在等待企业友好版的这些工具。
I did wanna say, if there are folks in your audience who are in enterprise, especially, I know that having gone through this journey, there may be teams who feel like, oh, man, it feels like startups are able to move, you know, so much faster than we are, or they're able to use all of these great new tools and these models, but we are still waiting on the enterprise friendly version of these things.
我曾与一些团队交流过,他们有时会觉得,我们在等待。
And I've talked to teams where they can sometimes feel like, we're we're waiting.
我们在等待。
We're waiting.
我们在等待能够尝试更多这些工具。
We're waiting to be able to try out more of these tools.
我在我团队里最终做的,是几年前我们也同样在等待公司官方认可的方式,但这并没有阻止我们学习。
What I ended up doing in my team was we were similarly you know, a couple of years ago now, we we were similarly waiting for the company embraced official way of doing things, but that didn't stop us from being able to learn.
所以我鼓励大家,我们很多人都在周末搞一些副项目,对吧?
So I encourage people, well, a lot of us are hacking on side projects, right, at the weekends.
我们可以尝试任何第三方工具、第三方模型,或者我们自己的模型。
We can try out whatever, you know, third party tools, third party models, our own models.
我们可以尝试和学习,这对你来说不一定要成为很大的障碍。
Like, we can try out and and learn, and that doesn't have to be a big blocker for you.
所以你仍然可以协助你的团队踏上这段旅程,而无需过多地等待。
So you can still, you know, help your team along this journey without necessarily having to to do a lot of that waiting.
所以只是想让大家知道。
So just wanted to let folks know.
通往拥抱这个时代的方式有很多。
There there are many paths to being able to embrace this moment.
是的。
Yeah.
我认为共识基本上是,这些工具将会广泛普及。
And I I think the consensus is pretty much that these tools will be widespread.
它们不断变化,而且已经对许多团队的代码库产生了贡献,人们正在使用它们。
They keep changing, and they are already contributing to a lot of teams' code base and people are using it.
所以不如直接使用它们,因为最终这需要时间。
So might as well just, you know, use it and and because it takes time in the end.
所以你越早开始,无论怎样都会有大量的学习要完成。
So the earlier you start, the you'll have plenty of learning to do regardless.
是的。
Yes.
完全正确。
Absolutely right.
作为总结,我有几个快速的问题,我会直接抛出来,然后你告诉我你第一反应是什么。
So as closing, I just have a few rapid questions, so I'll just fire them, and then you you tell me what what comes to mind.
你最喜欢的编程语言是什么?为什么?
What's your favorite programming language and why?
我最喜欢的编程语言是 JavaScript。
My favorite programming language is JavaScript.
这是一个非常有偏见的答案。
This is a very biased answer.
我本来以为你会这么说,但我不确定
I I thought you might say this, but I wasn't Of
当然。
course.
你写过关于My的书
You wrote books about My
我最喜欢的编程语言是JavaScript,这并不是出于个人原因。
favorite programming language is JavaScript, and it's it's not for the personal reasons.
可能还有更好的编程语言。
There are probably better programming languages.
我喜欢JavaScript,因为它让地球上任何人都能无需门槛地构建并发布网页内容。
I like JavaScript because it enables anybody on the planet to be able to build and ship something to the web in a way that doesn't require gatekeepers.
它非常开放,我认为这种理念非常自由。
It it's very open, and I think that there's something very liberating about that idea.
所以这可能是我最喜欢JavaScript的原因之一。
So that that is one of the reasons why I like JavaScript probably the most.
我喜欢它。
I I like it.
我总是很惊讶,当一个软件工程师说喜欢JavaScript的时候,因为我们都知道,与其他语言相比,它有很多限制,而且也已经有不少关于它的书籍出版了。
I I'm I'm always surprised when a software engineer says JavaScript because we know that compared to other languages, it it has a lot of limitations, and, you know, there's been books written about it as well.
但我无法不同意他的观点。
But I I cannot disagree with it.
我真的很喜欢它。
I I I love it.
这是事实。
It is true.
你最喜欢用什么工具?它有什么功能?
What's a tool that you really like using, and what does it do?
我觉得我目前最喜爱的工具之一,当然我有偏见。
I would say that one of my favorite tools at the moment, and I and I'm biased.
我也写过一本关于这个工具的书。
I have a I have a book out about this as well.
它可能是 boltbolt.new。
It's probably boltbolt.new.
Bolt.new 是一种用于快速搭建应用的 Vibe 编码脚手架工具,用户可以使用它。
Bolt dot new is one of those Vibe coding scaffolding tools that people can use.
他们最近刚刚增加了对自定义智能体的支持。
They very recently added support actually for being able to use custom agents.
因此,你可以使用 Claude Code 来构建你的 Vibe 编码应用,而且生成的结果通常质量很高,设计也很出色。
So you can use Claude Code, for example, to build your Vibe coded app, and, the the output is generally very high quality, great designs.
所以我一直很喜欢这个工具,而且这个团队在提供一些非常棒的集成方面,可以说走在了前沿。
So I've I've been really enjoying that, and and the team have been, I I would say, on on the edge of of offering some really great integrations.
我一直很欣赏这个想法:许多 Vibe 编码平台现在开始关注集成层的问题。
So I've been I've been liking this idea that many Vibe coding platforms are now starting to think about the integration layer.
那么,我们如何自动化地解决你需要使用像 Superbase 或身份验证提供商这类工具的需求呢?
So how can we automate the idea of you needing to use, you know, like, a super base or an authentication provider or these other things?
当然,你仍然需要留意生成的所有代码,但能减少这些初始设置的障碍,我觉得非常棒。
You still need to pay, of course, attention to all of the code that's being generated, but being able to remove more of that setup friction, I think, is amazing.
关于 Bolt,还有一个有趣的小知识。
And I guess the fun fact on Bold.
New 这个项目最初是一家名为 Stackblitz 的公司开发的,他们打造了一个非常棒的在线编辑器,功能先进,后来他们转向了 bold.new。
New is they started off as a company called Stackblitz, who built a really cool online editor, really advanced, and then they moved over from that to bold.new.
而且,背后有一群真正精通技术的软件工程师。
So and there are software engineers behind it, again, who really know their craft.
是的。
Yes.
是的。
Yes.
当然。
Absolutely.
最后,你推荐哪一本书?
And finally, what's a book that you would recommend?
我推荐的这本书,我认为它以一种让我非常信服的方式,涵盖了软件工程师的职业发展路径和最佳实践。
So the book I'm gonna recommend is one that I think covers, I would say, career paths and best practices for software engineers in a in a way that I found very compelling.
这本书是你写的。
It is by you.
这是《软件工程师指南》。
It's the software engineer's guidebook.
当然,我这是在迎合观众,但这本书确实非常出色。
And, of course, I'm I'm playing to the crowd, but it it is generally gen genuinely a very, very sharp book.
根据我读过的所有评论,其他人也认为这是一本极佳的读物。
From from all the reviews that I've read about it, other people have also found it to be an excellent read.
它就放在我桌上,不过我们刚才没提到这个。
It's it's on my desk, but we we didn't talk about this, by the way.
所以这个推荐对我来说就像对其他人一样,完全是意外。
So this recommendation came just as a surprise to me as as others.
谢谢。
Thank you.
这确实是一本非常出色的书。
Genuinely an an excellent an excellent book.
如果我不推荐这本书的话,我想如果你现在想更多了解人工智能工程的基础知识,有一本叫《AI工程》的书,作者是黄智,也值得一看。
I guess if I if I wasn't going to, of course, you know, recommend that one, I think that if you are trying to learn more about the foundational aspects of AI engineering in this moment, there's a great book called AI Engineering by Chip Huyen that is also worth taking a look at.
这本书评价非常高,内容非常全面,我也推荐大家去看看。
Very, very well reviewed, a very, very thorough book, and I I also recommend folks check that
好的。
out.
这本书真的非常好。
It's such a good book.
我觉得如果你掌握了其中的概念,那你就已经很不错了。
I I I feel if if you know the concepts there, you're pretty well off.
如果你还不了解这些概念,那你可能还在摸索中。
And if you don't know them, you're probably gonna be, you know, still finding your way.
所以我强烈推荐这本书。
So big plus one for that.
阿迪,这次交流太棒了。
Adi, this has been great.
非常感谢你参与这次对话,这真是一次非常精彩的交流。
Thanks so much for for doing this and this really awesome conversation.
谢谢。
Well, thank you.
我真的很感激。
I I really appreciate it.
我希望,如果你对这个领域感兴趣,你知道的,《超越Vibe编码》现在已经由O'Reilly出版了。
I hope the folks you know, if if you are interested in this space, Beyond Vibe Coding is out now from O'Reilly.
希望它能对一些人有所帮助。
Hopefully, it'll be useful to some people.
但和你进行这次对话真的非常愉快。
But it's been a pleasure having this conversation with you.
是的。
Yeah.
而且我一直在读这本书。
And I I've I've been reading the book.
我非常喜欢它对实用性的深入探讨,所以我也非常推荐这本书。
I I really like how it goes into the practicality, so I I can also very much recommend it.
谢谢。
Thank you.
希望你们在与Adios Mani的对话中,享受了超越氛围编码的乐趣(双关语)。
I hope you enjoyed going beyond vibe coding, pun intended, with Adios Mani.
我从这次对话中学到的一点是,作为工程师,我们持续理解大语言模型到底做什么以及为什么如此重要。
One of the things I took away from this conversation is how it's really important that as an engineer, we keep understanding exactly what LLM does and why.
如果我们不理解,就停下来,弄清楚它,然后再继续。
And if we don't understand it, we just stop, understand it, and then move on.
只要你理解了大语言模型,你就是掌控者。
As long as you understand the LLM, you are in charge.
但一旦你停止理解,它就掌握了主导权,而你可能会变得无助,不知所措。
But once you stop understanding, it's in charge and you can kind of become helpless and out of your depth.
如需了解更多关于如何快速掌握AI工程的技巧,请查看我在《务实工程师》上撰写的深度文章,链接已在节目说明中提供。
For more tips on how to get up to speed with AI engineering, check out deep dives in the pragmatic engineer that I wrote, which are linked to the show notes below.
如果你喜欢这个播客,请在你最喜欢的播客平台和YouTube上订阅。
If you've enjoyed this podcast, please do subscribe on your favorite podcast platform and on YouTube.
如果你也为本节目留下评分,特别感谢你。
A special thank you if you also leave a rating for the show.
谢谢,我们下期再见。
Thanks, and see you in the next one.
关于 Bayt 播客
Bayt 提供中文+原文双语音频和字幕,帮助你打破语言障碍,轻松听懂全球优质播客。