Design Engineering with Maggie Appleton
频道: The Pragmatic Engineer
视频: https://www.youtube.com/watch?v=KZSzF0KEFRg
原文语言: en
统计: 共 232 轮 · Maggie 110 · Gergely 101
[0:00] Maggie
like you have an idea in your head and sure I could go into Claude code and be like, "Hey Claude, here's an idea I have." It's like a stack [music] of cards and it's an accordion, but it's much faster to just get a piece of pen or pencil on the desk next to me and draw that with my hands. And then you can look at it. It doesn't go away on your screen. It can sit on your desk and you can like the next day be like, "Oh yes, I remember." Like you have to understand the materials you're building with in any design role. If you're designing for the web and you don't understand performance or like how is your app fetching data and what's the loading time and what if there's race conditions, you'll end up with bad design solutions. I'm hoping agents actually help solve this because then designers using agents can step more into the engineering side. So, you can play around with like layouts and [music] ideas, but you can't get a sense until it's live in the browser of how this is going to feel and like how much scroll you need to do here. Whenever I'm designing something visual, it's so much easier to have live variables, which again would not have been possible before.
……比如你脑子里有个想法,当然,我可以打开 Claude Code 跟它说:「嘿 Claude,我有个想法。」——它就像一叠卡片,又是个手风琴式的折叠结构——但直接拿起我手边桌上的笔或铅笔、用手把它画出来要快得多。画出来以后你能看着它,它不会从屏幕上消失;它可以一直摆在你桌上,第二天你一看:「哦对,我想起来了。」说到底,做任何设计岗位,你都得懂你用来造东西的材料。如果你做 Web 设计,却不懂性能,不懂你的 app 怎么取数据、加载要多久、万一出现竞态条件怎么办,最后拿出来的就会是糟糕的设计方案。我其实希望 agent 能帮忙解决这个问题,因为这样一来,用 agent 的设计师就能更多地踏进工程那一侧。所以,你可以摆弄各种布局和想法,但不等它真正在浏览器里跑起来,你就没法体会它用起来是什么感觉、这里到底要滚动多少。每当我设计视觉上的东西,有实时可调的变量就容易太多了——这在以前同样是做不到的。
[0:52] Gergely
You did a talk titled one developer, two dozen agents, zero alignment. Why we need collaborative engineering?
你做过一场演讲,题目叫「One Developer, Two Dozen Agents, Zero Alignment」(一个开发者,二十几个 agent,零对齐)。为什么我们需要协作式工程?
[0:58]
Us alone with the agent, we can go really fast. The software is always built on a team. The biggest gap seems to be like we have agentic coding tools, but what makes for a great designer or a great design engineer and what can us software engineers learn from them? Maggie Appleton is one of the most thoughtful design engineers I know. She's worked as an illustrator, as a designer at an AI startup, and is currently prototyping at GitHub. Next, today we talk about what is a design engineer, and why there's often a tension between engineering and [music] design, the tools she's used before and now, and why pen and pencil is not going away, even with agents. Do you still need a designer when AI can generate 20 high fidelity prototypes, and is [music] AI design obvious to spot? And many more. If you're an engineer wanting to know where design is important and how to get better at design yourself, this episode [music] is for you. This episode is presented by Turbopuffer Vector and Full Text Search built on object storage. [music] It's fast, cheap, and extremely scalable. Today's episode will be about design and design engineering. And so I wanted to share something visually interesting about our season sponsor, Anticysis.
Maggie: 我们单独跟 agent 一起干,可以跑得飞快。但软件从来都是一个团队造出来的。最大的缺口似乎在于:我们有了 agentic 编程工具,但是……
Gergely: 怎样才算一位出色的设计师、一位出色的设计工程师?我们这些软件工程师又能从他们身上学到什么?Maggie Appleton 是我认识的最有思想的设计工程师之一。她当过插画师,在一家 AI 创业公司做过设计师,目前在 GitHub Next 做原型。今天我们会聊:设计工程师到底是什么;为什么工程和设计之间常常存在张力;她过去和现在用的工具;以及为什么即便有了 agent,纸和笔也不会消失。当 AI 能生成 20 个高保真原型,你还需要设计师吗?AI 做出来的设计是不是一眼就能认出来?还有很多别的话题。如果你是工程师,想知道设计在哪些地方重要、自己又该怎么把设计做得更好,这期就是为你准备的。本期节目由 turbopuffer 呈现——构建在对象存储之上的向量与全文检索服务,速度快、成本低、扩展性极强。今天这期讲的是设计和设计工程,所以我想跟大家分享一点我们本季赞助商 Antithesis 在视觉上很有意思的东西。
[2:05] Gergely
We already know that antithesis verifies your system correctness by running your whole system in hostile simulation and finding bugs. Here's a UI for casualty analysis. You can open a report for a bug and see the probability of a bug occurring throughout the timeline of the simulation. In this case, we can see that at virtual time 25, something happened that makes this bug close to 100% to occur. So, we can jump to this point in virtual time simulation to read the logs. This kind of bug probability visualization is one that I've never seen before. There's also this neat log explorer. You can filter on error messages and then visualize how common or uncommon the error is over time. For example, here's looking for failing linearization failures, the purple line, and you can understand how rare or common a specific failure was. Again, I've yet to see this kind of error visualization, and I really like the innovation on the UI side. And finally, the simplified multiverse debugger. You can go back in time and replay a debug timeline. And you can inject bash commands at any time without affecting the playback of the bug. How cool is that? For example, we're listing files in the current directory, but as you can imagine, you can go debug the whole environment so much easier. I love how the team at Anticys are pushing what's possible with both debugging and verifying software. Head to antithesis.com/pragmatic to learn more. Maggie, welcome to the podcast.
我们已经知道,Antithesis 是通过把你的整个系统放进对抗性的模拟环境里运行、把 bug 找出来,来验证系统正确性的。这是一个做因果分析的界面:你可以打开某个 bug 的报告,看到在整条模拟时间线上这个 bug 发生的概率。在这个例子里,我们能看到在虚拟时间 25 发生了某件事,让这个 bug 几乎 100% 会出现。于是我们可以直接跳到模拟里的这个虚拟时间点去读日志。这种 bug 概率的可视化,我以前从没见过。还有一个很妙的日志浏览器:你可以按错误信息筛选,然后把这个错误随时间出现得是多是少可视化出来。比如这里查的是线性化(linearization)失败,也就是那条紫色的线,你能看出某一种特定的失败到底有多罕见、或者多常见。同样,这种错误可视化我也还没在别处见过,我很喜欢他们在 UI 上的创新。最后是简化版的多重宇宙调试器(multiverse debugger):你可以回到过去,重放一条调试时间线;还可以在任意时刻注入 bash 命令,而不影响这个 bug 的重放。是不是很酷?比如我们这里只是列出当前目录下的文件,但你可以想象,调试整个环境会变得容易得多。我很喜欢 Antithesis 团队在调试和验证软件这两件事上不断拓展可能性的做法。想了解更多,请访问 antithesis.com/pragmatic。Maggie,欢迎来到节目。
[3:26] Maggie
Thanks. I'm thrilled to be here.
谢谢,非常高兴能来。
[3:27] Gergely
I've had so many guests on on on the podcast. Uh, no one had quite the introductory story into tech like you. How did you get into tech? And you came from a very different background, right?
我这档播客请过非常多嘉宾,呃,但没有谁的入行故事能跟你的比。你是怎么进入科技行业的?你的背景跟大家很不一样,对吧?
[3:38] Maggie
Yes. Yeah. Um, I mean, I came in because it was where the money was, I guess. I mean, not pro [laughter] not really, but in the sense that like I in university, I studied cultural anthropology, which is like one my one true love. Like I adore cultural anthropology. I totally fell in love with it in university.
对,没错。嗯,我入行大概是因为钱在这边吧。我是说,也不全是(笑),不是真的这样,而是说——我大学读的是文化人类学,那算是我唯一的真爱。我超爱文化人类学,大学时就彻底爱上了它。
[3:52] Gergely
What is anthropology?
人类学到底是研究什么的?
[3:54] Maggie
Yeah, it's okay. Okay, it's the study of human beings, which sounds impossibly broad and like how could that be a discipline, but it does it in a particular way where you go and you live with people intensely in this thing called participant observation. Usually it was done kind of when the field was born of different cultures. Of course, it was like anthropologists from the west primarily going to places like Papa New Guinea or Australia and living among kind of traditional peoples and then realizing how different their cultures were. Not just like, oh, they eat different food, you know, they have different houses, but they have completely different understandings of like what color is. They don't they have completely different understandings of time. It was it was kind of alongside the birth of psychology like understanding how flexible is the human mind about constructing understandings of the world. And anthropology is really one of these eye opening subjects when you get into it because you can kind of get into like medical anthropology or the anthropology of sex and gender and you just find out how extremely adaptable and fluid human beings are. And I loved it because I grew up as an expat kid overseas. So I think I was exposed early to lots of different cultures. And so it felt very natural to me to realize like oh the way things you know people do things at home you know quotequote home would be London for me but I left at age six is is completely different to the way they do it elsewhere. And there's no fixed way for humans to kind of construct a society or live life and the bounds of what we think is possible is much wider than we originally assume which is what I loved about it. So I I studied it, but of course come senior year kind of go right, what jobs are there available in cultural anthropology? [laughter]
好,嗯,好的。它研究的是人类——听起来宽泛得离谱,这怎么能算一门学科?但它有自己特定的做法:你要去跟人一起生活、深度浸入,这种方法叫参与式观察。这个学科刚诞生的时候,研究对象通常是各种不同的文化。当然,那时候主要是西方的人类学家去巴布亚新几内亚、澳大利亚这类地方,生活在一些传统民族当中,然后意识到他们的文化有多么不同。不只是「哦,他们吃的东西不一样,住的房子不一样」,而是他们对「颜色是什么」的理解完全不同,对时间的理解也完全不同。它差不多是跟心理学同时诞生的,都想弄清楚:人类心智在构建对世界的理解时到底有多灵活。人类学真的是那种一钻进去就让你大开眼界的学科,因为你可以深入到医学人类学、性与性别人类学之类的方向,然后发现人类的适应性和可塑性强得惊人。我爱它,是因为我是跟着外派家庭在海外长大的孩子,所以我觉得自己很早就接触了很多不同的文化。于是我很自然地意识到:哦,人们在「家」里做事的方式——所谓的「家」,对我来说是伦敦,不过我六岁就离开了——跟别的地方完全不一样。人类构建社会、过日子并没有什么固定的方式,我们以为可能的边界,比我们原先设想的要宽得多——这正是我爱它的地方。所以我就读了这个专业,可到了大四,你当然会开始想:好吧,文化人类学能找什么工作?(笑)
[5:17] Gergely
I guess living with natives isn't all that many.
我猜,「去跟原住民一起生活」这种工作机会应该不太多吧。
[5:21] Maggie
It's not very lucrative. Uh so the options were like go get a PhD and become a professor or the military hires lots of anthropologists to come up with torture techniques for people in different countries. So [laughter]
这可不怎么赚钱。呃,所以选项大概就是:要么去读个博士、当教授;要么去军队——军方会雇很多人类学家,去琢磨针对不同国家的人的酷刑手段。所以……(笑)
[5:33] Maggie
when presented with these options by our professors, we were like, "Okay, okay, we'll go think about that." And I had always loved design growing up. So I had been doing like I you know I was a kid of the 90s. I grew up on Neopets with HTML and CSS and MySpace and I learned HTML and CSS probably around 12 or 13 and knew how to do it but in the way where like there wasn't that much complexity to it in whatever this was 1999.
教授们把这些选项摆在我们面前时,我们的反应是:「好吧好吧,我们回去想想。」而我从小就一直喜欢设计。我当时就在做——你知道,我是 90 年代长大的孩子,玩着 Neopets 长大,接触 HTML、CSS 和 MySpace,大概十二三岁就学会了 HTML 和 CSS,也确实会写,不过那时候——大概是 1999 年吧——这东西本来也没多复杂。
[5:55] Gergely
Did you have a MySpace?
你有过 MySpace 主页吗?
[5:56] Maggie
I did. Oh. Oh yeah.
有啊。哦,当然有。
[5:57] Gergely
Oh. And you customized it with all the
哦,那你是不是还给它做了各种定制,加上那些……
[5:59] Maggie
crazy animations and like the little sparkle trail at the end of your cursor and like I think mine was quite goth at the time like but I learned a lot. But of course, at the time, the web was so new. It wasn't like people thought this was a career or you didn't really think of it that way. But I came out of university with this degree that wasn't necessarily employable. And I just started doing freelance web design work because that was how I knew how to make money. Like throughout school, I was doing IT tech work for the university and just naturally went into this because it was like, well, I need to pay rent somehow. And I gravitated towards illustration originally cuz I love drawing. So I was originally an illustrator for the first couple years. And the way that I went more into the tech side because you can kind of be an illustrator that's like, you know, editorial or you could go into branding or like all kinds of types. But I started um working for a a startup. I guess I wouldn't call it a startup. It was more like a design dev shop in Prague that was making UIUX apps for like SF startups at the time. They were doing work for like Tinder and Uber like in the early days like in their beginnings. So it was there I got exposed to UIU UX design and I was making the illustrations for these apps and doing logos and branding. But I like that was my first exposure to like oh there are people who design buttons and and sidebars and that's kind of interesting. I didn't end up going into that for a while but that was my first introduction to like what is product design in tech as a as a field.
……花里胡哨的动画,还有光标后面拖着的那一串小闪光。我记得我那个当时挺哥特风的。不过我从中学到了很多。当然,那时候互联网太新了,大家并不觉得这能当职业,你压根不会往那方面想。可我大学毕业时,手里拿的是一个不见得好找工作的学位,所以我就开始接自由职业的网页设计活儿,因为那是我知道的赚钱方式。上学那几年我一直在给学校做 IT 技术工作,所以就很自然地干上了这行——毕竟总得想办法交房租。一开始我更偏向插画,因为我爱画画,所以头几年我主要是插画师。至于我是怎么更多地转向技术这一侧的:插画师其实有很多种,你可以做编辑类插画,也可以去做品牌,各种类型都有。而我当时开始给一家,嗯,创业公司干活。其实我也不会管它叫创业公司,它更像是布拉格的一家设计加开发工作室,当时专门给旧金山的创业公司做 UI/UX 应用。他们给 Tinder、Uber 这些公司干过活,都是在它们刚起步的早期。我就是在那儿接触到 UI/UX 设计的,我给这些 app 画插画,做 logo 和品牌。那是我第一次意识到:哦,原来有人专门设计按钮和侧边栏,这还挺有意思的。之后有一阵子我并没有往那个方向走,但那是我第一次了解到,科技行业里的产品设计作为一个领域是怎么回事。
[7:15] Maggie
And eventually I joined this company called Egghehead which does developer education. So they taught JavaScript. Sure you've seen them around. Um and I was their illustrator for four years. And then I became an art director and like art directed other people's illustrations for them. And that was really where I learned JavaScript, React. Like that was I think my real front end engineering education was like doing illustrations for them. But in doing the illustrations, I had to understand the material I was illustrating, which turned out to be like React components and use effect and like JavaScript functions and uh in a weird way, I just ended up moving more into front-end engineering and visual design because it just felt like a natural move.
后来我加入了一家叫 Egghead 的公司,他们做开发者教育,主要教 JavaScript。你肯定见过他们。嗯,我在那儿当了四年插画师,后来成了艺术总监,负责给其他人的插画做艺术指导。我真正学会 JavaScript 和 React 就是在那儿——我觉得我真正的前端工程教育,就是给他们画插画。因为要画插画,我就得搞懂我画的是什么东西,结果那些东西就是 React 组件、useEffect、JavaScript 函数之类的。说来也怪,我就这么越来越多地转向了前端工程和视觉设计,因为那感觉就是水到渠成的一步。
[7:52] Gergely
You worked at Elicit as well, right? Was that before EAD?
你也在 Elicit 干过,对吧?那是在 Egghead 之前吗?
[7:56] Maggie
After.
之后。
[7:57] Gergely
That was after. Yeah. So, so you you you were at ead as as their learn design there and then elicit was an AI startup, right?
是在之后,好。所以你先是在 Egghead,在那儿……算是学了设计,然后 Elicit 是一家 AI 创业公司,对吧?
[8:06] Maggie
Yeah. Early. Pretty early. Well, okay.
对,早期的。挺早期的。嗯,好吧。
[8:08] Gergely
Pretty early. Yeah.
挺早期的,嗯。
[8:09] Maggie
I mean, it was like the founders there were really kind of incredible people and that one of them had been studying language models for 10 years. He had like seen the writing on the wall way before anyone else, but like kind of out of MIT like PhD kind of like you know machine learning stuff and kind of had this realization of like language models are going to revolutionize science. he was really big on like how could this speed up the scientific process. So elicit originally was um and it still is actually I mean they've they've expanded but at its core it is using language models to speed up the scientific literature review process which usually very manual slow thing of all these academics reading thousands of papers and extracting data about them into spreadsheets perfect for models like a perfect use case. So I joined them. I think it was late 2021, early 2022.
我是说,那里的几位创始人真的都是很了不起的人,其中一位已经研究语言模型 10 年了。他比任何人都早看清了大势——他算是 MIT 出身,读博,做的是机器学习那一类东西——然后意识到:语言模型会给科学带来革命。他特别在意的是,这东西怎么才能加快科研进程。所以 Elicit 最初是——其实现在也还是,他们业务扩展了,但核心没变——用语言模型来加速科学文献综述。这个过程通常非常依赖人工、非常慢:学者们要读成千上万篇论文,再把里面的数据提取到电子表格里。这对模型来说再合适不过,是个完美的用例。所以我就加入了他们,我记得是 2021 年底、2022 年初。
[8:52] Gergely
And and you were the only designer. There's no product manager. You were the founding designer.
而且你是唯一的设计师,也没有产品经理,你是创始设计师。
[8:56]
Yeah. Yeah. I think there were six of us in the beginning when I joined, maybe seven. I might have been the seventh. I forget. A very small team. And it stayed small most of the time I was there. And yeah, I was the only designer the whole time. And then we had [snorts] a PM at some point who left and then we didn't get another one. So there's no PM for quite a while. And it was a really wonderful experience cuz it was a classic early startup. Like it was like we were family. We would like stay together for weeks at a time during retreats. Like the founders had really strong conviction and they're really smart people and I trusted them so much. So it was sort of like get on board with the vision kind of deal. And it was there I really learned product design end to end I'd say in the terms of we had lots of users cuz we had a free prototype that was like very very popular. So you had all this data you could collect about what people were searching for and clicking on and what worked and what didn't and AB tests and and we just went really fast. Like we shipped a feature every week for a year. So it was like design, build, like ship it, measure, design, build, ship it, measure on repeat over and over for like the solid I think I was there a little over two years. And I had learned a ton in that time just about the core mechanics of product design in the sense of like really going from what are the user needs, what's their domain through to doing all the front-end engineering and like tying it all together. So it was a really wonderful experience. I learned a lot. It was intense. By the end of it, I was like step back from startups for a minute. So you got into design I guess kind of more like selftaught like figuring out there's a need for this. You worked at EKAD where you learned to design or explain developer concept educational concept for for developers. You worked at an AI startup as a designer. What does a
Maggie: 对,对。我加入的时候,一开始大概六个人,也可能七个,我可能是第七个,记不清了。团队非常小,我在那儿的大部分时间里也一直很小。是的,我从头到尾都是唯一的设计师。中间我们有过一个 PM,后来走了,之后就没再招,所以有挺长一段时间都没有 PM。那段经历真的很美好,因为那是一家典型的早期创业公司,我们就像一家人,搞集中团建(retreat)的时候会一起待上好几周。创始人们信念非常坚定,又都特别聪明,我非常信任他们,所以基本就是那种「上车吧,跟着愿景走」的状态。我真正端到端地学会产品设计,就是在那儿。我的意思是,我们用户很多,因为有一个免费原型非常非常受欢迎。所以你能收集到大量数据:大家在搜什么、点什么,什么管用、什么不管用,还有 A/B 测试。我们推进得特别快,整整一年,每周都上线一个功能。就是设计、开发、上线、度量,再设计、开发、上线、度量,一遍又一遍地循环,我记得我在那儿待了两年多一点。那段时间我在产品设计的核心机制上学到了大量东西——真正从「用户需求是什么、他们处在什么领域」出发,一路做到所有的前端工程,再把这一切串起来。所以那是一段非常美好的经历,我学到了很多,强度也很大。到最后我就想:先从创业公司退出来歇一阵吧。
Gergely: 所以你进入设计这行,我猜更像是自学的,自己摸索出这里有需求。你在 Egghead 干过,在那儿学会了设计——或者说讲解开发者概念、给开发者做教学内容。你又在一家 AI 创业公司当过设计师。那么,一个
[10:27] Gergely
designer do? [laughter] It's it's kind of a simple answer now that you've actually several roles and I I I get a sense that of course like there there's going to be the it depends but but at at startups that you've worked with that that you know how would you describe and of course many of us developers have worked with designers some have not at all
设计师到底是做什么的?(笑)这问题的答案听上去挺简单,不过你其实干过好几种角色,而且我也能想到,答案里当然少不了一句「看情况」。但就你待过的那些创业公司而言,你会怎么描述?当然,我们很多开发者跟设计师合作过,也有些人完全没合作过。
[10:48] Maggie
I mean I kind of describe it it's not that different to engineering it's it's problem solving but the materials are different is the way I would describe it is like you go through the same process of like you have defined defining what your problem is like are you sure this is the correct problem have you defined it well and scoped it well you know researching possible solutions doing wide exploration what were all the ways we could solve this what are the trade-offs of them you know prototyping solutions validating those are the right solutions do they work for users do they make sense I don't think it's that different to engineering in the sense that I do some of both in my job but it's just the material is different instead of working with code although nowadays with developers you're working in higher level kind of architecture data flow you're not necessarily writing the synt syntax. But at the time, what syntax are you going to use to write this problem? And with design, the materials are like space, size, weight, color, you know, things you'd see in an interface in terms of the visuals, motion, you know, prominence. Is this is this big enough? Are these the right words for the user to understand what this button's going to do? Like everything from copywriting to visual graphic design. But with product design, you're also dealing with what we would call nouns and verbs of a product. So, it's easy when your product is like a sneaker store. It's like the nouns are like sneaker, cart, money. [laughter]
我大概会这么形容:它跟工程没那么不一样,本质都是解决问题,只是用的材料不同。你走的是同一套流程:先定义你的问题是什么——你确定这是对的问题吗?定义清楚了吗?范围划好了吗?然后调研可能的解法,做大范围的探索:我们有哪些办法能解决它?各自的取舍是什么?再做原型、验证这些是不是对的解法:对用户管不管用?说不说得通?所以我觉得它跟工程没多大不同——我的工作里两样都会做一些——只是材料不一样,不是在跟代码打交道。当然,如今的开发者更多是在更高一层处理架构、数据流,不一定亲手写语法了。但在以前,问题就是:你要用什么语法把这个问题写出来?而做设计,材料是空间、尺寸、粗细、颜色,就是界面上你能看到的那些视觉层面的东西,还有动效、醒目程度。这个够不够大?这些措辞能不能让用户明白这个按钮会干什么?从文案到视觉平面设计,全都算在内。但做产品设计,你还要处理我们所说的产品的「名词」和「动词」。如果你的产品是个球鞋商店,那很简单,名词就是球鞋、购物车、钱。(笑)
[12:01] Maggie
If you're designing AWS, uh, the nouns get extremely difficult. Um, and I've primarily worked in what I'd call power user tools like scientists, developers, where the nouns are extremely hard because they get very abstract. It's sort of like what's the right container for a set of data or what's the right container or noun to point you to like, oh, this is your whatever set of data or like this set of data connects to that set of data or like here's a function that transforms this data into another set. need a a noun and verbs to give to users so they can understand how to manipulate whatever you're trying to get them to do. It's really difficult in dev tools sometimes because there's so much malleability in a way there isn't with stuff.
可要是你在设计 AWS,呃,名词就变得极其难定了。我主要做的是我称之为 power user(重度用户)工具的东西,用户是科学家、开发者,这类场景下名词极其难定,因为它们会变得非常抽象。比如说:一组数据该用什么样的容器来装?或者该用什么容器、什么名词来指代它——哦,这是你的某某数据集;或者这组数据和那组数据是连着的;又或者这里有个函数,能把这份数据转换成另一份。你得给用户一套名词和动词,让他们明白怎么去操作、完成你想让他们做的事。在开发者工具里这有时候真的很难,因为它的可塑性太强了,别的东西没有这种程度的可塑性。
[12:37] Gergely
What what is malleability?
可塑性具体指什么?
[12:38]
Uh like ability like it could take many different forms and shapes versus if you're designing things for the real world like I have friends who work for like government design. There's restrictions there where it's like you're trying to get someone to fill out a form. It's it can be a hard design challenge, but it's not complex in the same way versus like at the moment, right? I'm of course trying to design like agentic tools and it's like what are the nouns of agents? Like we don't know. There's like chat sessions. We have these things called plans. There's something called an MCP. There's skills. Like could we make new primitives that like connect a bunch of sessions all the way to a PR that becomes a new noun that contains it? Like there's all kinds of boundaries you could draw that would make the user think about your experience differently. And then you have to define what verbs can they take on which nouns, right? Can you sure edit, rename, delete? This is like classic CRUD stuff you have to figure out. But I don't know, can you like fork an agent session? What are the implications of that? Like I think the hard bit of product design is is designing a coherent system that takes all this complexity that could exist especially in something like DevTools and reducing it to the simplest possible form you can which is a very easy to say extremely hard to do every time to to like a really canonical set of nouns that the user can go okay I can point at that I understand what that's going to do I can when I click a button I don't get surprised at the outcome. This takes time to do this kind of like hard reduce it to its best most elegant form. This is so interesting because what you've described of like you know we have a new product that has not not existed before like a deaf tool in a digital space which lives in our head or inside of a computer with things that we just invented may that be an MCP or an
Maggie: 呃,就是说它能变成很多种不同的形态和样子。相比之下,如果你是在为现实世界做设计——比如我有朋友在做政府方面的设计——那里是有约束的,你要做的无非是让人把一张表填完。这可能是个很难的设计挑战,但它的复杂不是同一种复杂。反观现在,对吧?我现在当然是在设计 agentic 工具,那问题就来了:agent 的名词是什么?我们也不知道。有聊天会话,有一种我们叫 plan 的东西,有个叫 MCP 的东西,还有 skill。那我们能不能造一些新的原语,把一堆会话一路串到一个 PR,变成一个把它们都装进去的新名词?你可以划出各种各样的边界,每一种划法都会让用户换个方式去理解你的产品体验。然后你还得定义:用户能对哪些名词施加哪些动词,对吧?能不能编辑、重命名、删除?当然能,这是经典的 CRUD 那一套,你得想清楚。可是,我也说不准,你能 fork 一个 agent 会话吗?那又意味着什么?我觉得产品设计最难的部分,是设计一个连贯的系统:把所有可能存在的复杂性——尤其是在开发者工具这类东西里——化简成你能做到的最简形态。这事说起来容易,每次做起来都极难:要化简成一套真正规范的名词,让用户能说「好,我能指着那个东西,我明白它会干什么;我点一个按钮,结果不会让我意外」。要把它硬生生压缩成最好、最优雅的形态,是需要花时间的。
Gergely: 这太有意思了,因为你描述的情况是:我们有一个以前从没存在过的新产品,比如数字空间里的一个开发者工具,它存在于我们脑子里或者电脑里,里面装的都是我们刚发明出来的东西,不管是 MCP 还是
[14:14] Gergely
agentic scale and then thinking of how we find the right words so people can use it and it makes sense and it's and you're kind of I I just see that you're kind of drawing up a map in your your head which is not all that different to when you're building a new system as a software engineer And I remember talking with Ken Beck who talked about how uh with Ward Kunigam they they came up with with some of the basics of that might have been domain driven design or it might have been some uh some some some related concepts but they had a thesaurus in front of them trying to they searched for the right words on how to oh it was a design patterns
agent skill,然后再去想怎么找到合适的词,让人们能用、能理解、说得通。我就感觉你是在自己脑子里画一张地图,这跟软件工程师搭一个新系统时做的事其实没多大区别。我记得跟 Kent Beck 聊过,他讲过他和 Ward Cunningham 一起琢磨出了一些基础的东西——可能是领域驱动设计,也可能是某些相关的概念——他们面前摆着一本同义词词典,想要……他们到处找合适的词,来描述怎么……哦,是设计模式
[14:52] Gergely
design patterns later came out of it but they were trying to put a name on these constructs and these things and how which is which feels like a very similar thing to what you're describing.
设计模式是后来从这里面诞生的,但当时他们是在努力给这些构造、这些东西起名字,还有怎么……这跟你描述的事情感觉非常像。
[15:03] Maggie
Yeah. Yeah. Yeah. That's design. This is where I kind of get into sure there's types of design. Like you could be like there's interior design, there's brand design, there's product design, but product design when we talk about it in tech is actually software design and software design is engineering. It's actually the same skill. like you might be working with slightly different materials in the sense of one of you cares more about the colors and the size and the shadows and like the shape of things and the motion design but that person also has to understand like what's the shape of the database like what are these APIs like what is the data in the right place are we passing data through this component in the right way like they have to also understand
对,对,对。这就是设计。这也是我想说的:当然,设计有很多种,有室内设计、品牌设计、产品设计。但我们在科技行业里说的产品设计,其实就是软件设计,而软件设计就是工程。其实是同一种技能。你们用的材料可能稍有不同:其中一方更在意颜色、尺寸、阴影、东西的形状和动效设计,但这个人同样得懂数据库长什么样、这些 API 是什么样、数据有没有放在对的地方、我们是不是在以正确的方式把数据传过这个组件——他们也得懂
[15:36] Gergely
this is interesting because the designers I I I worked with years back at places like Uber and and at Skype you know they had their design tools which was sketch later Figma, they typically work with the product folks. They they did uh explorations or or UX prototypes. They often sat into user testing, but in the end they they had a design. They had they had visuals. They had animations. That was their thing. And they handed us over to us engineers together with the the PR or here's the product, here's how it's going to look. And then we built it. And we would build the UI, let's say, on mobile. And we would then go maybe sit with them or show them and they would say like, "Oh, this motion doesn't feel good." But my view of of designer is like well it was very visual and for example those designers maybe they didn't didn't need to but they didn't need to get involved in like how the database works and how the flows they were very much aware of the flows of the user journey.
这很有意思,因为我几年前在 Uber、在 Skype 这些地方合作过的设计师,他们有自己的设计工具——先是 Sketch,后来是 Figma——他们通常跟产品那边的人一起工作,做一些探索或者 UX 原型,也经常坐进用户测试里旁听,但最后他们交出来的是一份设计:有视觉稿,有动画,那是他们的本行。然后他们把这些连同 PRD 一起交给我们工程师,或者说就是「这是产品,这是它要长成的样子」。然后我们去把它做出来。比如说我们在移动端把 UI 实现出来,然后可能去找他们坐下来一起看,或者演示给他们看,他们会说「哦,这个动效感觉不对」。所以在我眼里,设计师嘛,就是非常偏视觉的。比如那些设计师,也许他们没必要——他们确实用不着去管数据库怎么运作、那些流程怎么走;不过用户旅程里的流程,他们是非常清楚的。
[16:29] Gergely
Yeah. So like is that type of design how would you characterize as as being different or is it just that they that their domain is a little bit different that's more at the business level that the more kind of mobile these were like mobile and web and and some of those
嗯。所以像这类设计,你会怎么形容它的不同?还是说只是他们的领域稍微不一样——更偏业务层面,更偏移动端那种……那些都是移动端、Web 之类的产品。
[16:44] Maggie
yeah I think it gets into kind of like how we label different parts of design like the kind of design I'm talking about is obviously biased by my experience which is much more design engineering stuff because it is like when I hear design engineer that's kind of a catchphrase now and what does that mean but I think of it as a designer who really engages is in the engineering and understands how the product works and it's required. It's not required in all domains. Again, if you're doing government forms, I don't think you need to understand the database. But if you're designing for developers or you're designing in a brand new field like AI where so much of how the product works is determined by what is possible on the back end and the shape of the data, then you do need to engage with it a lot. But if you're working on an app where actually a designer is probably better served by advocating for the user, I think that's a kind of more traditional philosophy of product design is like you represent the user and you represent trying to get the best experience possible for the user. And that means user interviews caring about flows like does this button feel big enough? Does it have the right words?
对,我觉得这就涉及到我们怎么给设计的不同分支贴标签了。我说的那种设计,显然带着我个人经历的偏向,更多是设计工程那一路。现在「设计工程师」算是个流行说法,大家会问它到底是什么意思。在我看来,它指的是真正投入到工程里、懂产品是怎么运作的设计师,而且这一点是必需的。当然,不是所有领域都需要。还是那句话,如果你做的是政府表单,我觉得你不需要懂数据库。但如果你是在为开发者做设计,或者是在 AI 这种全新的领域里做设计——产品怎么运作,很大程度上取决于后端能做到什么、数据长什么样——那你就确实得深度参与进去。但如果你做的是某个 app,设计师更适合的角色其实是替用户说话,我觉得那是一种更传统的产品设计理念:你代表用户,你代表着努力给用户争取最好的体验。那就意味着做用户访谈、关注流程:这个按钮看着够不够大?措辞对不对?
[17:42] Maggie
And then they can spend much more energy there if they don't have to care about the technical back end. like maybe it's actually irrelevant when really what you need to care about is like does this flow make sense to people. So that's not necessarily a different kind of designer, but it's you kind of think of the whole the stack, right? But expand it all the way out, not just back end and front end, but the interface and users and then the product in the context of a business and like a product in the context of an economy. Like there are people who lean way more on this side. And I'm I'm a bit more the straddling of the product design and the engineering. But you can have valid designers all along this and some people again, you know, just visuals or just animation. Like there's lots of niches. I just like a bit more of the the half engineering half design like slice of it.
如果他们不用操心技术后端,就能在这些地方投入多得多的精力。也许后端对他们来说确实无关紧要,他们真正要关心的是:这个流程对人来说说不说得通。所以这不一定是另一种设计师,而是你可以把它想成一整个技术栈,对吧?只不过要把它一路往外扩:不光是后端和前端,还有界面和用户,再往外是放在商业语境里的产品,乃至放在经济语境里的产品。有些人就更偏这一头。而我更多是横跨产品设计和工程两边的那种。但这条线上每个位置都可以有称职的设计师,有些人还是那样,只做视觉或者只做动画。细分方向有很多。我只是更喜欢一半工程、一半设计的那一块。
[18:22] Gergely
To help understand a bit more of what you do, can you talk about the tools that you use? Like you know as as engineers we're kind of used to our tools used to be the ID and the code editor and you know some of the hardcore people like Vim and and some of some of those things and these days of course it's changing a bit more but you know those are the tools used. What are your tools?
为了更好地理解你的工作,能聊聊你用的工具吗?你知道,我们工程师习惯的工具,过去就是 IDE 和代码编辑器,一些硬核的人会用 Vim 之类的。当然这些年变化多了一些,但大体上就是这些工具。你的工具都有哪些?
[18:38] Maggie
It changes all the time. I mean to some degree like some things stay constant like you're and you're use doing similar tasks but of course at the moment I'm trying to try everything because part of my job is like trying to figure out what GitHub should do next. That's what our team does.
一直在变。某种程度上有些东西是不变的,毕竟你做的活大体差不多。但眼下我当然是什么都要试一试,因为我的工作有一部分就是去搞清楚 GitHub 下一步(next)该做什么。这就是我们团队干的事。
[18:53] Gergely
That's actually the name right.
这其实就是你们团队的名字,对吧?
[18:53] Maggie
GitHub next. Hey that's like it was well named. Um so a lot of the time like we are just you know of course I'm trying out codeex and claude and like dog fooding stuff internally at GitHub. I've tried conductor amp. I mean name any agentic harness like open code uh pi I try them all. I do love codeex at the moment like I do think like openai is on to some really good stuff at least in their their design of their like desktop app is is beautiful. They've really thought it through. So I think they're doing some really good stuff. I still use paper and pen for like initial brainstorming.
GitHub Next。嘿,这名字确实起得好。嗯,所以很多时候我们就是……当然,我在试用 Codex 和 Claude,也在 GitHub 内部 dogfooding(先拿自家产品自己用)。我试过 Conductor、Amp,随便你说哪个 agentic harness,像 OpenCode,呃,pi,我全都试。我现在确实很喜欢 Codex,我确实觉得 OpenAI 摸到了一些很好的东西,至少他们那个桌面 app 的设计很漂亮,他们是真的把它想透了。所以我觉得他们在做一些很不错的事。不过最初的头脑风暴,我还是用纸和笔。
[19:24] Gergely
Yeah, you you have you have your notebooks here.
对,你把你的笔记本都带来了。
[19:26] Maggie
Yeah, I brought some along because notebooks aren't dead. I don't think they're going to be dead forever [laughter] forever. Uh, and I still use Figma because I know how to use it and I can do some brainstorming in it before I pass it off to an agent. But to be honest, there's a point where once you figured out what you need to build, which is actually all the work once you hand it off to an agent, it's not that implementation is solved, but we've reached a point where implementation is like good enough that if I speck it out really well and I and I list out how the agent should verify for me that it actually did the work, I can hand it to an agent and just like be like, "Right, let me know when you've got a PR up." You know, I don't really look at code that much anymore. I do look at PR code when I'm reviewing it, but skim skim skim, you know, okay, that looks sensible. Merge. [laughter] Um, so most of the work I find is everything leading up to telling the agent to implement something and then the PR review is kind of a separate piece of work. But like the bulk of my tools deal in this first section now versus we used to have the IDE, you know, once it was like, okay, you've decided this is the right thing to design. Now you actually start the work of like implementing it. It's kind of beautiful that that's no no longer part of it as much. I open VS Code sometimes but not really.
对,我带了几本过来,因为笔记本还没死。我觉得它们永远都不会死,(笑)永远。呃,我也还在用 Figma,因为我会用,而且在把活交给 agent 之前,我可以先在里面做些头脑风暴。但说实话,到了某个节点——一旦你想清楚了要做什么,而这其实才是全部的工作——你就把它交给 agent。倒不是说实现这件事已经被解决了,但我们已经到了实现「足够好」的阶段:如果我把 spec(规格说明)写得足够扎实,再列清楚 agent 该怎么替我验证它真的把活干完了,我就可以把它交给 agent,然后说一句「好,PR 提上来了告诉我」。你知道,我现在基本不怎么看代码了。评审 PR 的时候我确实会看代码,但也就是扫一眼、扫一眼、再扫一眼——嗯,看着挺合理。合并。(笑)所以我发现,大部分工作都在「告诉 agent 去实现某个东西」之前,然后 PR 评审算是另一块独立的工作。但我现在大部分工具都用在前面这一段。以前我们有 IDE,就是说,好,你已经确定这就是该设计的东西了,接下来才真正开始动手实现。现在这部分不再占那么大比重了,这其实挺美妙的。我偶尔会打开 VS Code,但其实不怎么用。
[20:34] Gergely
Yeah. But but beforehand you would prototype, right? Like you you build prototypes.
嗯。但在那之前你会做原型,对吧?你会搭原型。
[20:38] Maggie
Yeah. Yeah. Yeah. As part of the like what should we build? I include in this lots of prototyping and I I kind of have the privilege of being on a team where we don't have to build like production quality software. We are mostly trying to prototype and validate ideas. So we have a lower quality bar than someone shipping to proper github.com. That's a very high quality bar.
对,对,对。在「我们该做什么」这个阶段里,我会做大量原型。我算是有个特权:我所在的团队不需要做生产级质量的软件,我们主要是在做原型、验证想法。所以我们的质量门槛比那些往正式的 github.com 上发布东西的人要低。那边的质量门槛非常高。
[20:56] Gergely
Yeah. Which makes sense. I mean that's that's kind of you get the kind of you get the directional things right and then once it's as great you might build it or you might decide to build it.
嗯,这很合理。就是说,你们先把大方向摸对,等确认它确实好,可能就去做,也可能再决定要不要做。
[21:04] Maggie
Yeah. Yeah. But I definitely I mean we can hopefully show these later. I do I do a lot of stuff sketching. I mean even just interface design a lot of what you're doing is just drawing boxes and then being like does this slide over from the front from the bottom like if I click this button.
对,对。不过我确实……我是说,希望待会儿能给大家看看这些。我会画大量草图。哪怕只是界面设计,你做的很多事也就是画一堆方框,然后琢磨:如果我点了这个按钮,这个东西是从前面滑出来,还是从底部滑上来?
[21:17] Gergely
So this is like you kind of drawing up a how an interface you think could look like. So, so I see I see a mix of
所以这就像是你在画出一个你觉得界面可能长成的样子。我看到这里混着
[21:24] Gergely
of mix of UIs and we'll put these on onto the screen, but UIS description of of what they do. What like can you just talk to one of these or like one that that's interesting or memorable?
各种 UI——我们会把这些放到画面上——还有对它们作用的文字说明。你能挑其中一个讲讲吗?或者挑一个有意思的、让你印象深的?
[21:38] Maggie
Yeah. Yeah. So, this is a new I should explain the context. I'm prototyping at the moment something where my theory is like one of the bottlenecks with agents is planning is a really bad experience at the moment. Like at the moment you have a long chat with an agent you sometimes even in a CLI which is a pretty primitive interface and then the agent grills you by asking you a set of like choice A, B or C questions and it does this like hundred times over if you're using Matt Pox's grill me skill or whatever you like.
好,好。这是一个新的……我得先交代一下背景。我现在在做一个原型,我的理论是:agent 的瓶颈之一在于规划,眼下规划的体验真的很糟。现在的情况是,你跟 agent 进行一场很长的对话,有时甚至是在 CLI 里——那是个相当原始的界面——然后 agent 会拷问你,给你出一连串 A、B、C 选择题,要是你用的是 Matt Pocock 的「Grill Me」skill 之类的东西,它能问上一百遍。
[22:04]
He he he was just on a podcast and yes [laughter] uh and by question 20 you're like quite tired and your brain starts shutting down. [laughter] That was my exper I went through and I got 36 questions and I I was kind they were good but I was starting to get annoyed around like yeah like 20 or 25. I'm like
Gergely: 他前阵子刚上过播客,而且没错——(笑)
Maggie: 呃,然后到第 20 个问题的时候,你已经挺累了,脑子开始宕机。(笑)
Gergely: 我就是这个体验。我走了一遍,被问了 36 个问题,我有点……问题都问得挺好,但到大概第 20、25 个的时候我就开始烦了。我当时就想……
[22:20] Maggie
and also
而且……
[22:21] Gergely
and I had no idea when it would stop
而且我完全不知道它什么时候才会停。
[22:22] Maggie
right it's endless and like the human brain you get tired you can't make this many decisions in this short of time and also you don't have enough information about most of those decisions because it's given you a question and three options and it's told you number A is recommended then you just start being like yep a a enter a I agree with you. So this is not an ideal experience. This gets into like uh agents love to output reams and reams of text and that's an ideal output for agents but it is not an ideal input for humans. So we have a mismatch with like what do humans need to be able to digest large amounts of information and truly understand it and be able to make informed decisions that is not the interface for this. So I'm trying to explore how would we make an interface that got us to do better planning and better decision-m but in a way that was easier for us to comprehend. So, this is what I'm prototyping at the moment. And part of this is like, okay, it's going to be multiplayer because of course everything should be with your team planning together.
对,它没完没了。人的大脑会累,你没法在这么短的时间里做这么多决定。而且大多数决定你都没有足够的信息,因为它就给你一个问题、三个选项,还告诉你推荐选 A,然后你就开始:行,A,A,回车,A,我同意你。所以这不是理想的体验。这就说到了——agent 特别爱输出一大段又一大段的文字,这对 agent 来说是理想的输出,但对人来说并不是理想的输入。所以这里有个错配:人要能消化大量信息、真正理解它、做出有依据的决策,到底需要什么?现在这种界面可不是干这个的。所以我在探索,怎么做出一种界面,让我们能更好地做规划、更好地做决策,同时又更容易理解。这就是我目前在做原型的东西。其中一部分是:好,它得是多人协作的,因为当然了,所有规划都应该是跟团队一起做的。
[23:14] Gergely
Yeah. So, several people can do it together.
对。所以几个人可以一起做。
[23:17] Maggie
Exactly. Um, but also just like how do you make it so that you have more space for each decision? So, I'm trying to prototype like, okay, so first of all, this has to definitely happen in a guey, not in a CLI.
没错。嗯,不过也在想:怎么让每个决策都有更多空间?所以我在做原型,好,首先,这件事肯定得在 GUI(图形界面)里做,而不是在 CLI 里。
[23:28] Gergely
So, these are just like rough ideas of how you could have more space or
所以这些就是一些粗略的想法,关于怎么能有更多空间,或者……
[23:31] Maggie
Exactly. So, I'm thinking of it as like each decision maybe has its own little mini document or card. And [clears throat] depending on the decision, some of them maybe you can just have three multiple choices. That's fine. It's maybe a simple decision, right? A B or C.
没错。我的想法是,每个决策也许都有自己的一份迷你小文档,或者一张卡片。然后看具体是什么决策,有些可能给三个选项就行,这没问题,可能就是个简单的决策,对吧?A、B 还是 C。
[23:43] Maggie
But sometimes it'll ask me things like do you think the borders should be like gray 10%, 12% or 15%. And I'm like, well, show show me this is a visual question. Or sometimes it's like, how do you want the architecture to be structured? And I'm like, well, show me an architecture diagram. Show me a data flow diagram. Show me a state machine. I'm trying to prototype like decisions that have come with diagrams and prototypes and HTML embedded in them so that depending on what question is being asked, it shows me the correct interface to make that decision. So what I meant prototyping here is like okay, you've got a plan that's a big document. you've maybe got these little decision docs embedded within them that can you can expand to see more of and then looking at like I think each decision should have a human assigned to it who made that decision so that you have an audit trail later
但有时候它会问我这种问题:你觉得边框应该用 10%、12% 还是 15% 的灰?我就想,你倒是给我看看啊,这是个视觉问题。又或者它问:你希望架构怎么组织?我就想,那给我看架构图啊,给我看数据流图,给我看状态机。我在做的原型,是让决策自带嵌入的图表、原型和 HTML,这样根据问的是什么问题,它就给我展示做这个决策该用的那种界面。所以我在这儿做的原型大概是:好,你有一份计划,是一份很大的文档,里面也许嵌着这些小小的决策文档,可以展开看更多内容。然后我还在琢磨,我觉得每个决策都应该挂上一个做出这个决定的人,这样以后就有审计记录可查。
[24:27] Maggie
not necessarily to hunt people down but to be like okay why why did we make this decision about the back end well let's go see okay Luke made that decision like 6 months ago let's go open up his decision card and be like what information did he have available in order to make this decision hopefully this becomes useful later but here I'm just sketching what are the possible shapes this could take is this like a stack of cards that expands on the screen. Is this like all one big linear thing? Are we like swiping through stuff like it's Tinder? Like what what interfaces are are going to be useful for this? So, this is a lot of the sketching is just trying to figure out like possible possible shapes of things. I have all kinds. Oh, these are like characters cuz I was trying to make an ESP character.
倒不一定是为了追着人问责,而是可以说:好,我们当初为什么在后端做了这个决定?去看看——哦,是 Luke 大概 6 个月前做的决定,那就打开他的决策卡片看看:他当时手上有哪些信息,才做出了这个决定?希望这个以后能派上用场。不过在这儿,我只是在画草图,琢磨它可能长成什么形态:是一叠在屏幕上展开的卡片?还是一整条线性的东西?还是像刷 Tinder 那样滑来滑去?到底什么样的界面适合干这个?所以很多草图就是在试着摸索各种可能的形态。我这儿什么都有。哦,这些是一些小角色,因为我当时想做一个 ESP 小角色。
[25:03] Gergely
Can you show the character?
能给我们看看那个角色吗?
[25:04] Maggie
Well, this is like, do you know Oh, this is like my kid scribbling all over my notebook. This is like, you know, ESP32s. Do you know Steve Ruiz has like sold everyone on buying an ESP32? It's like this little device with a screen and a very small microchip that has Wi-Fi and Bluetooth. And so I was designing this little character who like tells me the weather and like I'm trying to hook it up to my agent so it can be like you have this much capacity left before your reset limit happens. So like this is just all kinds of things happen like it's a mix of like like some serious stuff and some fun stuff.
嗯,这个是——你知道吗——哦,这是我家孩子在我本子上乱涂的。这个是,你知道的,ESP32。你知不知道 Steve Ruiz 已经把所有人都安利去买 ESP32 了?它是个小设备,带一块屏幕和一颗很小的芯片,有 Wi-Fi 和蓝牙。所以我就在设计这个小角色,它会告诉我天气,我还想把它接到我的 agent 上,让它能提醒我:在额度重置之前,你还剩这么多用量。所以这本子里什么都有,既有正经东西,也有好玩的东西。
[25:31] Maggie
Yeah. Yeah. And I can show like um the whole thing with notebooks and thinking on paper. I think all designers do this, but coming from illustration, the reason I do this is because I started in a world where you have to draw everything to like figure out what you're going to do. So, when I was an illustrator, I had tons of these notebooks where you're figuring out like what's the composition? What's the physical shape of things? Like, how are you working out like the shape of the grass in a scene? And so, I think I started problem solving on paper like very early on in my career, like figuring out compositions and layouts.
对,对。我还可以给你看看,嗯,关于笔记本、在纸上思考这整件事。我觉得所有设计师都会这么做,但我是插画出身,我这么做是因为,我起步的那个世界里,你得把所有东西都画出来,才能想清楚自己要做什么。所以我当插画师的时候,有成堆这样的本子,在里面琢磨:构图是什么样?东西的实体形状是什么样?比如一个场景里的草,形状要怎么处理?所以我觉得,我在职业生涯很早期就开始在纸上解决问题了,琢磨构图和布局。
[26:02]
Was this was it was this in college? When was this? I think I was working for Egghhead when I was doing this.
Gergely: 这是……是在大学的时候吗?什么时候画的?
Maggie: 我记得是我在 Egghead 工作的时候画的。
[26:08] Gergely
And you drew all of these?
这些全是你画的?
[26:09] Maggie
Yeah. Yeah. I trained with um I was in LA for a while, which is a terrible place to live, but with I trained with like people who are concept artists on films, and they have a really beautiful way of working that's that's very technical. It's very like constructing things from 3D shapes and like drawing in space.
对,对。我跟着……嗯,我在洛杉矶待过一阵子,那地方住着真是糟透了,不过我在那儿跟着一些电影概念美术师学过,他们有一套非常漂亮的工作方法,技术性很强,基本就是用 3D 形体去搭建东西,在空间里作画。
[26:25] Gergely
Because these are really 3D.
因为这些真的很有 3D 感。
[26:26] Maggie
Yeah. Yeah. Um and then [clears throat] and they kind of just teach you how to do like landscapes and layouts. They loved their way of teaching and it's very again it's very technical. It's very like engineering you have to understand like with robotics like different types of joints you could like put together a robot in so that you could actually draw a robot that was believable. There was a lot of like understanding reality in order to believably draw reality. So I think doing this set me up to when I moved into like UI design to do a lot of this kind of sketching because
对,对。嗯,然后他们会教你怎么画风景和场景布局。他们那套教法很棒,而且同样,技术性非常强,非常像工程。比如画机器人,你得了解各种不同类型的关节,知道机器人可以怎么拼装起来,这样你才能真的画出一个让人信服的机器人。很大一部分功夫是先理解现实,才能把现实画得可信。所以我觉得这段经历给我打好了底子,后来我转去做 UI 设计时,就会大量画这类草图,因为……
[26:55] Gergely
it just comes naturally. I mean these are a little bit easier to sketch [laughter] as well in terms of the user interfaces.
这对你来说再自然不过了。我是说,就用户界面来说,这些画起来也确实要简单一点(笑)。
[27:01] Maggie
Yeah. But then I think it's like then it helps you think on paper that all of this is just sort of like you have an idea in your head and sure I could like go into Claude code and be like, "Hey Claude, here's an idea I have. It's like a stack of cards and it's an accordion." But it's much faster to just get a piece of pen like pen or pencil on the desk next to me and draw that with my hands. It's like way fewer effort. So I feel like people online keep being like, "Oh, like everyone's just going to prompt everything to create." But but you need something that is like quick feedback and very loose in the early stages to figure out the shape of something before you can put into words what you want an agent to do.
对。不过我觉得,它还能帮你在纸上思考。说到底就是:你脑子里有个想法,当然,我可以打开 Claude Code 跟它说:「嘿 Claude,我有个想法,是一叠卡片,做成手风琴式折叠的。」但直接拿起我桌边的钢笔或铅笔,用手画出来要快得多,省力太多了。所以我感觉网上总有人在说:「哦,以后大家做什么都只要写 prompt 就行了。」可是在早期阶段,你需要一种反馈很快、非常松散的东西,先摸清一个东西大概是什么形状,然后才能用语言讲清楚你想让 agent 做什么。
[27:37] Gergely
And also it's visual. It's not text.
而且它是视觉的,不是文字。
[27:38] Gergely
And is it is it not a bit more satisfying doing it with your hand?
那用手画,是不是……是不是也更有满足感一点?
[27:41]
So much better. Yeah. And then you can look at it. It doesn't go away on your screen. It can sit on your desk and you can like the next day be like, "Oh yes, I remember I was trying to like figure out what shape this this feature should be." Or like you can draw like data diagrams, whatever you want. It's it doesn't have to be visual, but it's just a way of externalizing thoughts before they're then they're not linguistic. I think this is like a key thing is like again agents only accept text as inputs. Okay, they can read images. Like I do take in photos and put them in, but they're not as good at images. They're very bad at special spatial reasoning. They're very bad at visual design. I mean, trying to get them to do design, they just make mistakes where like they just don't put spacing around things and things are the wrong size and they make text overlap. They can't see, right? like trying to explain a visual idea in text to an agent is really challenging um and it doesn't work very well. So I find I still end up doing a lot of my design without agents up front because all it is is thinking through the visual the visual pieces of it and then when I'm like okay I know this is the shape of the thing I want then I can tell an agent to do it but I find it hard to like involve it earlier in a way that I think some people on Twitter are claiming they do but I'm skeptical. But but this is interesting because even in software design and I'm talking about architecture design some of the I guess most productive sessions I've observed have been imperson around the whiteboard. Yeah. where people again we're talking about like components, databases, networking connections, retry logics, whatever, you know, like these things you could describe or or you could put it in a computer, but when you put it on a board, when someone puts it on there and then someone else takes and you know, they kind of they're forced to
Maggie: 好太多了。对。而且你还能看着它,它不会像屏幕上的东西那样说没就没。它可以一直摆在你桌上,第二天你还能想起来:「哦对,我记得我当时在琢磨这个功能该是什么形状。」或者你也可以画数据图,想画什么都行。它不一定非得是视觉的,它就是一种在想法还没变成语言之前、先把它外化出来的方式。我觉得这是个关键:agent 还是只接受文字输入。好吧,它们也能读图,我确实会拍照传进去,但它们处理图像没那么在行,空间推理非常差,视觉设计也非常差。我是说,你让它们做设计,它们就是会出错:元素周围不留间距,东西尺寸不对,文字叠在一起。它们看不见,对吧?想用文字向 agent 解释一个视觉上的想法真的很难,效果也不太好。所以我发现,前期的很多设计我最后还是不用 agent 来做,因为这个阶段全是在把视觉上的那些部分想清楚。等我心里有数了——好,我要的东西就是这个形状——我再让 agent 去做。但要在更早的阶段就让它参与进来,我觉得挺难的;Twitter 上有些人声称自己做到了,但我持怀疑态度。
Gergely: 不过这点挺有意思,因为即便在软件设计里——我说的是架构设计——我观察到的最高效的一些讨论,都是大家面对面围着白板进行的。对。大家在那儿——再说一遍,我们聊的是组件、数据库、网络连接、重试逻辑之类的东西——这些你可以用嘴描述,也可以放进电脑里,但当你把它画到白板上,一个人画上去,另一个人接过笔,你知道的,他们某种程度上就被迫
[29:16] Gergely
take their ideas into a 2D space cuz we we don't do 3D like we I know you can draw like cool 3D but we cannot. So just boxes and arrows. someone does that and the other people understand and they go in and they add their own thing or they circle or they add new components and even in digital space I think my was a good example they became so popular because they figured out a way to do collaborative
把各自的想法搬到一个二维空间里,因为我们不画 3D——我知道你能画很酷的 3D,但我们不行,所以就是方框加箭头。有人画出来,其他人就看懂了,然后上去加上自己的东西,或者画个圈,或者加上新组件。就算在数字空间里也是这样,我觉得 Miro 就是个好例子,它之所以那么火,是因为它找到了一种做协作式
[29:41] Gergely
whiteboarding for you know like you don't have to be in the same room but they give you somewhat similar tools. Yeah. So I I I wonder if if this whole thing of of getting your ideas either to a to a physical medium which I think for us engineers it's the whiteboard for for you it's the the notebook may maybe it just helps maybe rethink or solidify or also it it does it does have a forcing function about the the verbs the the shapes that you
白板的办法,你知道,大家不用待在同一个房间里,但它给你的工具差不多。嗯。所以我在想,把想法落到一个实体媒介上这整件事——对我们工程师来说是白板,对你来说是笔记本——也许它就是能帮你重新思考,或者把想法固定下来,又或者,它确实有一种倒逼作用,逼你去想清楚那些动词、那些形状,你……
[30:06] Maggie
Yeah. Yeah. Yeah. And this gets into kind of like the interfaces we have to agents right now are so primitive. I think we know this right. We're all like a couple years into this entire thing which is is wild. Maybe 5 years. I forget when GPT4 came out. Was it three or four years ago?
对,对,对。这就说到了——我们现在跟 agent 打交道的界面实在太原始了。我想大家都清楚这一点,对吧。这整件事我们也才搞了两三年,想想真挺疯狂的。也许 5 年?我忘了 GPT-4 是什么时候出来的,是三年前还是四年前?
[30:20] Gergely
Uh Chad GPT 3.5 came out in the 3 years. Four years four years November 2022.
呃,ChatGPT 3.5 出来是在……三年前。四年,四年,2022 年 11 月。
[30:27] Maggie
Yeah. Yeah. Yeah. This when I was at elicit and then because we were debating doing a chat interface and then they did it and we were like oh they like stole our idea [laughter]
对对对。那会儿我在 Elicit,我们当时正在讨论要不要做一个聊天界面,结果他们先做出来了,我们就说:哎,他们偷了我们的点子(笑)。
[30:36] Maggie
is necessarily competing with them. But that is no time at all and it's kind of wild we've made it as far as we have. But it's also like I always say software design is an extremely young field. Like what are we 60 years into it at most? So even that we haven't figured out a lot of things about how to design the best interfaces for people and machines to like communicate with each other and agents barely at all. I feel like there's this like there's this world that agents live in. There's like weights and models and skills and MCPS. And then you have your human side that is like physicality and texture and light and materials and all these things agents don't understand. And trying to find like artifacts that allow us to meet in the middle and create stuff together is like the really hard challenge cuz you've got two totally different types of beings. Not that agents are conscious beings. I'm not in that camp. But they're a type of intelligence that like wants to think and act in a certain way that is not the way humans want to think and act. And it's hard to like translate between the two. I just find myself very frustrated that they can't sort of, you know, be looking over my shoulder, looking at my notebook, and be understanding what I'm drawing and like helping me move my ideas along. This is like the eventual dream is they understand space and light and shape and lines and and you know, but I think we're quite a ways away from that.
……一定在跟他们竞争。不过这点时间根本不算什么,我们能走到今天这一步,想想挺疯狂的。但也像我常说的,软件设计是个极其年轻的领域,我们满打满算也就干了 60 年吧?所以就连怎么设计出最好的界面、让人和机器互相沟通,我们都还有很多没搞明白,至于人和 agent 之间,更是几乎还没开始摸索。我感觉 agent 活在这样一个世界里:权重、模型、skill、MCP。然后是人类这一边:实体感、质感、光线、材料,所有这些 agent 不懂的东西。要找到某种载体(artifact),让我们能在中间会合、一起创造东西,这才是真正的难题,因为你面对的是两种完全不同的存在。倒不是说 agent 是有意识的存在,我不站那一派。但它们是一种智能,倾向于用某种特定的方式去思考和行动,而那不是人类想要的思考和行动方式,两者之间很难互相翻译。它们没法——你懂的——从我肩膀后面看过来,看着我的笔记本,理解我在画什么,帮我把想法往前推,这一点让我特别沮丧。最终的梦想是它们能理解空间、光、形状和线条之类的,但我觉得我们离那一步还挺远。
[31:47] Gergely
So, one thing we would talk about your notebooks and digital tools, but one thing that you've you've uh posted about recently is woodworking. You said [laughter] you said you're I I'm at the stage of my software design journey. Well, no, I'm at that stage of software design where you start taking woodworking courses. Can can you tell me a little bit about that experience?
我们聊了你的笔记本和数字工具,不过你最近发帖聊过的一件事是木工。你说(笑),你说你……「我正处在我软件设计之路的这个阶段」——哦不对,是「我已经到了软件设计这行里开始去上木工课的那个阶段」。能跟我讲讲这段经历吗?
[32:05] Maggie
Well, the little bit of the joke is like I just feel at some point every engineer you have a choice of things you can get into because you you feel like you're like disembodied from the world of working in software. So, you have to pick ceramics, um bread baking, you can maybe pick like motorcycle repair or something, but woodworking is a pretty popular one because it's like engineering. There's a lot of like measurement and being precise. Um, so yeah, I'm learning woodworking because I bought a house here and all the houses in London are very old. So you buy a house that needs a lot of work. That is like always what happens. Maybe the same in Amsterdam, I think. Old housing stock.
嗯,这话有点开玩笑的成分。我就是觉得,每个工程师到了某个时候,都会有几样东西可以选着去投入,因为做软件做久了,你会觉得自己好像跟身体、跟实体世界脱节了。所以你得挑一样:陶艺,嗯,烤面包,也许还可以选修摩托车之类的,但木工是挺热门的一个,因为它很像工程,要做大量测量,要很精确。嗯,所以对,我在学木工,是因为我在这边买了房子,伦敦的房子都很老,所以你买下的房子总是需要大修一番,一向都是这样。我猜阿姆斯特丹可能也一样吧,房子都挺老的。
[32:34] Maggie
So then you suddenly become like, oh, I need to learn like DIY skills, which I was, you know, Claude chat GBT very helpful coaches in this regard along with YouTube and Instagram like you can learn a lot. But I just was like, oh, there's so many things I need solutions to that I need to figure out how to make. I need to like make shelves here. I need to like fix this banister. So, I was like, well, I have no DIY skills, no woodworking, but I just signed up for a course being like, well, I'll learn. I'm pretty sure I can like I'm not too old. I can acquire new skills and I'm sure find lots of parallels to software, but in a more satisfying way where you actually like touch the thing you make.
于是你一下子就变成:哦,我得学点 DIY 技能了。在这方面,你知道,Claude、ChatGPT 都是很有用的教练,再加上 YouTube 和 Instagram,能学到很多东西。但我就觉得,哦,有这么多事情需要解决方案,我得搞清楚怎么做出来:这儿要做几个架子,那儿要修楼梯扶手。所以我就想,好吧,我没有任何 DIY 技能,也不会木工,但我还是报了个课,心想:我会学会的。我挺确定我可以——我还没老到学不动,我能掌握新技能,而且肯定能发现很多跟软件相通的地方,只不过是以一种更让人满足的方式:你真的能摸到自己做出来的东西。
[33:08] Gergely
One thing that you've talked about, you've been talking about is the concept of of uh design engineers for from a few years ago. you posted. I'll I'll quote you. Uh I'm having a strong should I just become a full-blown design engineer day. I'm not even sure what it means, but I just want to touch a lots of code and solve tangible problems on screens and make beautiful animated stuff.
你聊过、也一直在聊的一个概念,是「设计工程师」,从几年前就开始了。你发过一条帖子,我直接引用一下:「今天是那种特别强烈地想『我要不干脆去当个彻头彻尾的设计工程师算了』的一天。我都不太确定那意味着什么,但我就是想多碰代码,去解决屏幕上实实在在的问题,做些漂亮的动效。」
[33:29] Maggie
Yeah.
对。
[33:29] Gergely
And then you went over and you tried to collect names of people who you knew who you felt were kind of doing this design engineering. Now that was a few years ago.
后来你还专门去收集了一批人名,都是你认识的、你觉得算是在做这种设计工程的人。那已经是几年前的事了。
[33:37] Maggie
Yeah.
嗯。
[33:38] Gergely
What have you figured out about design engineers if they exist? What they do? where what places they work in.
关于设计工程师,你现在摸清楚了什么?如果真有这种人的话——他们做什么?都在什么样的地方工作?
[33:47] Maggie
Yeah, I think they do exist. I think Twitter might have a different definition or like I think there's a lot of people where not that I should call it X. Sorry, X. Um,
对,我觉得这种人确实存在。我觉得 Twitter 上的定义可能不太一样,或者说,我觉得有很多人……哦,我是不是该叫它 X 了。抱歉,是 X。嗯,
[33:56] Gergely
Twitter X all the same
Twitter 也好 X 也好,都一样。
[33:57] Maggie
on X. I feel like a lot of people who get called design engineers or who present themselves as design engineers actually are like very good micro interaction designers. Like little like here's a cool hover effect on a button and like here's a cool loading transition state. And those things are definitely cool. I don't consider that design engineering because you could achieve most of those things by just telling an agent to do those without looking at a single piece of code. To me, that's just like very like advanced sophisticated like motion design and and visual design. And that's cool, but I don't consider that design engineering because I don't think that's like a full job for you to do that as a career. [laughter] But design engineering now what like the people who I think of as good design engineers do the kind of thing I was talking about before where you step much more into the engineering side of work. So you're still a designer. You're still caring about like product nouns and verbs and like the visual design but then you really work with engineers closely or and or are like directly involved in implementing and writing code yourself and you fully understand well you know not fully you don't have to be like full full stack but like you have a deep understanding of the technical the technical architecture of the product you're building. you really are like okay given the shape of the backend data what is possible in the interface like that sort of design work you know given given what models are capable of and what kind of skill like custom skills we're building into this product like how do I explain to users what the capabilities of this product are like truly digging into the technicals and not living in the world of like just user interviews and the market and like what color is the sidebar but caring much more and working much more closely with the engineers and almost always I
在 X 上,我感觉很多被称作设计工程师、或者自我标榜为设计工程师的人,其实是非常出色的微交互设计师。就是那种小东西:瞧,按钮上一个很酷的悬停效果;瞧,一个很酷的加载过渡状态。这些东西当然很酷,但我不认为那是设计工程,因为这些东西大多数你直接吩咐 agent 去做就能实现,一行代码都不用看。在我看来,那只是非常高阶、非常精致的动效设计和视觉设计。这很酷,但我不把它算作设计工程,因为我不觉得这能撑起一份完整的工作,让你当成职业去干。(笑)而设计工程呢,我心目中那些优秀的设计工程师,做的是我之前说的那种事:你会更多地跨进工程那一侧的工作。所以你仍然是设计师,仍然在意产品里的名词和动词、在意视觉设计,但你会跟工程师紧密合作,或者说同时还直接参与实现、自己写代码。你完全理解——好吧,也不用完全,你不必是那种十足的全栈——但你对自己在做的这个产品的技术架构有很深的理解。你会真的去想:好,既然后端数据长这个样子,界面上能做到什么?就是那一类设计工作。又或者,考虑到模型能做到什么、我们往这个产品里内置了什么样的 skill,也就是自定义 skill,我该怎么向用户解释这个产品具备哪些能力?就是真正钻进技术层面,而不是只活在用户访谈、市场、侧边栏该用什么颜色那个世界里,而是更在意工程、跟工程师合作得紧密得多,而且几乎总是,我
[35:35] Maggie
feel like implementing a lot of it yourself. Like I've always done my own front end work just cuz it's easier. And then the engineers I work with are usually thrilled cuz they hate CSS. And then they [clears throat] get to go work on like the more interesting difficult stuff. I'd say it's like the syncing or like the the the like back of the front end work, you know, like the more logic stuff. They really get to engage in that and they don't have to worry about like is this the right border radius on something like I don't think they they very rarely care and I do care. So it's always worked out well to kind of do that. So I just define it as someone who's like deeply into the engineering side of the design.
觉得,要自己动手实现其中很大一部分。我一直都是自己做前端的活,就因为这样更省事。跟我合作的工程师通常也乐坏了,因为他们讨厌写 CSS。然后他们就能去做那些更有意思、更有难度的东西,比如数据同步,或者说前端里偏后面那一层的活,你知道的,就是更偏逻辑的东西。他们可以真正投入进去,不用操心某个东西的圆角对不对——我觉得他们很少在乎这个,而我在乎。所以一直以来这么分工都挺顺的。所以我就把它定义为:深度投入到设计中工程那一面的人。
[36:09]
What's in your past positions, current positions through friends who are also designers? What have you seen great engineering and design collaboration look like? May that be with designers or design engineers? I mean, I do find being a design engineer, I've always had amazing collaborations with engineers because again, you do the bit they didn't ever want to do. And you take away what I assume is most of the tension between designers and engineers that I've never experienced because I've always been a front-end person, but I've heard of people, you know, there being the tension where you have like someone's made some perfect Figma file and the engineer hasn't implemented it exactly to spec.
Gergely: 在你以前和现在的岗位上,或者从同样做设计的朋友那里,你见过的优秀的工程与设计协作是什么样的?不管是跟设计师还是跟设计工程师的协作。
Maggie: 我确实发现,作为设计工程师,我跟工程师的合作一直都特别好,因为还是那句话,你做的正是他们从来都不想做的那部分。而且你把设计师和工程师之间——我猜——大部分的矛盾都化解掉了。这种矛盾我自己从没经历过,因为我一直是做前端的人,但我听别人说过,就是那种矛盾:有人做了一份完美的 Figma 文件,结果工程师没有严格按 spec 实现出来。
[36:44] Gergely
Yes, I've [laughter] been there. Yeah.
对,这我经历过。(笑)是的。
[36:46] Gergely
Yeah. And obviously there's a tension there because because someone made something
嗯。显然这里面是有矛盾的,因为有人做出了一个东西,
[36:50] Gergely
and immediately
然后马上,
[36:51] Gergely
there's a nice gradient and it's it's it's and it's and it's mobile and doing gradients would absolutely wreck the scroll performance. And again these are like we're talking about like years back when when this was a thing.
上面有个漂亮的渐变,而且这、这、这是在移动端,做渐变绝对会把滚动性能搞崩。再强调一下,我们说的是好几年前的事了,那时候这还真是个问题。
[37:01] Gergely
Yeah. And now you're going back like can I can you just do a single color or you try to explain like what you can do with your either performance limitations or think about lowend devices on Android or iOS versus Android where a designer might be more into the iOS world and again a good designer would not but there there's often times the engineer would come like all right we have constraints here
嗯。然后你就得回头去问:能不能……你能不能就用一个纯色?或者你得试着解释,受性能限制你能做到什么;或者得考虑 Android 上的低端机,或者 iOS 和 Android 的差别——设计师可能更沉浸在 iOS 的世界里,当然,好的设计师不会这样。但很多时候,工程师会跑来说:好吧,我们这里有约束,
[37:22] Maggie
right
对。
[37:23] Gergely
uh for whatever reason
呃,不管是出于什么原因。
[37:24] Maggie
yeah I think this gets into like I don't want to blame the designers because I think it's a failure of tools because the design tools that everyone used to Sketch and Figma, these like pixel mockups, they have no relationship to the constraints of the medium, which is like whatever you're building for iOS or desktop or the web. Like you have to understand like the materials you're building with in any design role. Like yes,
嗯,我觉得这就涉及到……我不想怪设计师,因为我觉得这是工具的失败。大家以前用的那些设计工具,Sketch 和 Figma,做出来的这些像素级效果图,跟媒介本身的约束毫无关系——媒介就是你要做的东西所面向的平台,iOS、桌面端或者 Web。做任何设计工作,你都得了解你用来造东西的材料。就像,没错,
[37:44] Maggie
a table designer would not like be oblivious to like how oak performs in certain contexts, right? Or like how pine dents in a certain way. And in the same way, I think if you're designing for the web and you don't understand like performance or like how how is how is your app like fetching data and what's the loading time and what if there's race conditions? Like I think if you're oblivious to that, you'll you'll end up with bad design solutions and then with really bad relationships. Yeah. So I'm hoping agents actually help solve this, right? Because really then designers using agents can step more into the engineering side and also use agents as a coach and like a learning tool and say, "Okay, the engineers come back and told me that we have this like error state. I've never heard of in my life. Like explain to me why that error state would occur, you know, and help me build a state machine, right? Like there's like all these new tools available. But those old frictions I have to assume were just like toolbased things. And I would say designers that are maybe stuck in the past who don't want to let go of like, oh, I make pixel mockups. I don't know if anyone's there anymore, but if they still are, I mean, you're just Yeah, I can't imagine that relationship going well in the future.
一个设计桌子的人,不会不清楚橡木在某些环境下会有什么表现,对吧?或者松木会怎样被压出凹痕。同样的道理,我觉得如果你在为 Web 做设计,却不懂性能,不懂你的应用是怎么拉取数据的、加载要多久、万一出现竞态条件怎么办——如果你对这些一无所知,最后就会得出糟糕的设计方案,跟工程师的关系也会搞得很僵。嗯,所以我其实希望 agent 能帮忙解决这个问题,对吧?因为这样一来,用 agent 的设计师就能更多地跨进工程那一侧,还能把 agent 当教练、当学习工具,跟它说:「好,工程师回来告诉我,我们有这么一个错误状态,我这辈子都没听说过。给我讲讲为什么会出现这种错误状态,再帮我搭一个状态机。」对吧?现在有这么多新工具可以用。而以前那些摩擦,我只能认为都是工具造成的。我会说,那些可能还停留在过去、放不下「哦,我是做像素级效果图的」这种想法的设计师——我不知道现在还有没有人停在那儿,但如果还有的话,那你就……嗯,我很难想象这种合作关系将来还能顺利。
[38:47] Gergely
And then you you mentioned Figma. Figma was such a popular tool for a while that that was the interface between engineers and designers. Uh how do you use Figma today or or how have you used it in in the past?
你刚才提到了 Figma。有一阵子 Figma 火到它干脆成了工程师和设计师之间的那层接口。呃,你现在是怎么用 Figma 的?或者说,你过去是怎么用它的?
[38:59] Maggie
I think I've always used it like not to get to high fidelity markups at all. I think to get like the rough shape of things past a notebook. So like a notebook you can be like okay the shape of it is like this but it's such a rough sketch and Figma is useful I find for being like okay exactly what color is like the right amount of contrast to like draw attention to this element on the page or like exactly what size does this text need to be to like flow well. But then you I would never take it too high fidelity because of course everything always looks different. I mean I primarily design for the web. Everything looks different in the browser, right? Depends on the font rendering and all this kind of stuff and responsiveness and when exactly your break points. So I would always take it into browsers pretty early on. You get like medium fidelity in Figma like the shape of it and then you take it into a prototype and then you can really tweak and refine. And of course with agents now it's just like I point an agent at my Figma [clears throat] mockup and I'm like just get all of that in there and then and then uh make you know what's called a jig which is where you get like little sliders and variables attached to like a little a jig
我觉得我一直都不是拿它来做高保真效果图的,完全不是。我是用它把东西的大致形态,推进到比笔记本更进一步的程度。在笔记本上,你可以说:好,它大概是这个形状,但那只是个非常粗糙的草图。而我发现 Figma 的用处在于能把细节定准:到底用什么颜色,对比度才刚好能把注意力引到页面上这个元素上?或者这段文字到底要多大字号,读起来才顺?但我从不会把它做得太高保真,因为东西最后看起来总会不一样。我主要是为 Web 做设计,在浏览器里一切看起来都不一样,对吧?这取决于字体渲染之类的一堆东西,还有响应式,还有你的断点具体设在哪儿。所以我总是很早就把它搬进浏览器。在 Figma 里做到中等保真,把形态定下来,然后搬进原型里,在那儿你才能真正地微调、打磨。当然,现在有了 agent,就变成我让 agent 对着我的 Figma 稿,跟它说:把这些全都给我弄进去,然后,呃,再做一个所谓的 jig(木工夹具:帮你把某一道工序做准的辅助工具),就是给它挂上一些小滑块和变量,挂在一个小小的……一个 jig 上。
[39:57] Maggie
a jig comes from woodworking or you make like a little device that helps you do one specific job. So with design when you're working uh on a live prototype you say like okay here are the variables I'm not sure about. I'm not sure about like my my headline size. I'm not sure about these colors. give me sliders and color pickers and like all these things or like the animation curve I'm not sure about. Give me and then I'll and then I'll tweak it live and then when I have the values just right in the live version then we'll commit those to be the actual values much faster. It's like build your own Figma as needed.
jig 这个说法来自木工,就是你做一个小装置,专门帮你完成某一项特定的活。放到设计上,当你在一个实时运行的原型上干活时,你就说:好,这些是我拿不准的变量。我拿不准标题字号,拿不准这几个颜色,给我滑块、取色器之类的东西;或者动画曲线我也拿不准,给我……然后我就实时去调,等我在实时版本里把数值调到刚刚好,我们再把它们定为正式的值,这样快得多。这就像是按需给自己造一个 Figma。
[40:27]
And inside of GitHub, how do designers work? How do yourself and other designers work? Cuz it's a bigger organization. You're building a tool for developers with bunch of bunch of different parts. I mean, I don't spend that much time with like the GitHub design or proper. I know some people in there, but No,
Gergely: 那在 GitHub 内部,设计师是怎么工作的?你自己和其他设计师是怎么干活的?毕竟这是个更大的组织,你们在给开发者做工具,还有一大堆不同的组成部分。
Maggie: 其实我跟 GitHub 正儿八经的设计团队待在一起的时间并不多。那边我认识一些人,但是没有——
[40:43] Gergely
because you're next.
因为你在 Next 嘛。
[40:44] Maggie
So, the GitHub Next team is a little bit isolated. Like, we still have good relationships with the rest of the org, but a little bit by design, we're supposed to be kind of like the R&D team out on the side kind of doing weird stuff and then trying to convince the rest of the or what like that we're right and they should like pay attention and do our thing, which is a whole different politics thing. So, I like kind of see the designers, but they I think they have a very different job to me and that like they have to like uphold quality standards and they're working on like a big design system and like an old Ruby on Rails app. Like they've got very different constraints to me.
是的,GitHub Next 团队有点游离在外。我们跟组织里其他部门的关系还是挺好的,但这多少是有意为之:我们本来就该是那种待在一边、做些奇奇怪怪东西的 R&D 团队,然后努力说服组织里的其他人,证明我们是对的,他们应该重视起来、照我们的思路去做——那又完全是另一套政治问题了。所以我算是能看到那些设计师,但我觉得他们的工作跟我很不一样,在于他们得守住质量标准,他们在做一个庞大的设计系统,还有一个老旧的 Ruby on Rails 应用。他们面对的约束跟我非常不同。
[41:13] Gergely
Yeah. And they have like millions or or or even more like tens of millions of customers who like that's now a different thing. They've been used to certain things or finding certain things or certain patterns.
对。而且他们有几百万,甚至更多,几千万的客户,那就完全是另一回事了。这些客户已经习惯了某些东西,习惯了在某个地方找到某样东西,习惯了某些模式。
[41:23] Maggie
Exactly. Exactly. changing anything on.com is like a whole political thing because because customers expect you know them to come in and they have critical workflows you can't move their button but the team I work on there's me and one other guy who are both design engineers so we both like do engineering work but we are more the design people and everyone else is much more engineer like and they're all really senior so it's fun to work with them cuz like they've seen everything they like know how to architect an app but we don't work that differently to engineers I find I mean we're putting in PRs the same as them we're like working in the same tools and materials it's it's much more that thing of like what bits of the app we care about. I of course care about the interface part and then like my engineer partners of course care about like the back end and the data flow and everything. So same tools but different like um considerations I guess.
没错,没错。在 .com 主站上改任何东西,都是一件牵扯一大堆政治的事,因为客户有他们的预期,你知道的,他们进来就是要干活的,有关键的工作流要跑,你不能挪动他们的按钮。但我所在的团队里,有我和另一个人,我们俩都是设计工程师,所以我们都干工程的活,但更偏设计那一边;其他人都更偏工程师,而且个个都非常资深,所以跟他们一起工作很有意思,因为他们什么都见过,知道一个应用该怎么架构。不过我发现,我们的工作方式跟工程师其实没多大区别:我们跟他们一样提 PR,用的是同样的工具和材料。区别更多在于,我们各自关心应用的哪些部分。我当然关心界面那部分,而我的工程师搭档们当然关心后端、数据流之类的一切。所以,工具相同,只是,嗯,考量不同吧。
[42:06] Gergely
I wanted to take some time to mention our presenting sponsor Turbopuffer. Turbopuffer couldn't be a better sponsor for this episode as they have what I think is one of the most refreshing brands in tech right now. Turbopuffer's co-founder Simon describes their brand as hardcore and whimsical and their design perfectly reflects this. Turbuffer the database is extremely hardcore AI infrastructure. It supports critical search workloads for Entropic, Notion, Bridgewater, Cognition, and many more of the largest and fastest growing AI companies in the world. They take reliability, performance, and scalability very seriously. But Turboper, the team, refuses to be another sterile, boring enterprise tech company. Just look at their website. It's exactly what you would want the website for a database to look like. It's simple, modest, and transparent. They even put the limits on the homepage, but it also isn't boring. It's nice to look at. It's very well thought out, and their little asai diagrams perfectly blend hardcore engineering with whimsical design. Plus, if you've ever tried to generate a good Askai diagram with AI, you'll quickly realize that they create all of these by hand, not with AI. Turbopuffer's brand is the perfect reflection of who they are and that's why it works so well. The brand is hardcore and whimsical and so is the team. I highly recommend Turbopuffer not only as the extremely scalable search engine for AI but also as a group of people that will go to exceptional lengths to deliver for their customers.
我想花点时间介绍一下我们的冠名赞助商 turbopuffer。turbopuffer 再适合赞助这一期不过了,因为在我看来,他们拥有当下科技圈最让人耳目一新的品牌之一。turbopuffer 的联合创始人 Simon 把他们的品牌形容为「硬核又俏皮」,他们的设计也完美体现了这一点。turbopuffer 这个数据库是极其硬核的 AI 基础设施,为 Anthropic、Notion、Bridgewater、Cognition 等众多全球规模最大、增长最快的 AI 公司支撑着关键的搜索负载。他们对可靠性、性能和可扩展性都非常较真。但 turbopuffer 这个团队,拒绝成为又一家死板无趣的企业级科技公司。看看他们的网站就知道了,那正是你心目中一个数据库的网站该有的样子:简洁、低调、透明,他们甚至把各项限制直接写在了首页上。但它也一点都不无聊,看着很舒服,处处都经过深思熟虑,那些小小的 ASCII 图把硬核工程和俏皮设计融合得恰到好处。而且,如果你试过用 AI 生成一张像样的 ASCII 图,很快就会意识到,他们这些图全是手工画的,不是 AI 画的。turbopuffer 的品牌完美映照了他们是谁,这也正是它如此奏效的原因:品牌既硬核又俏皮,团队也是如此。我强烈推荐 turbopuffer,不只因为它是为 AI 打造的、扩展性极强的搜索引擎,也因为这是一群愿意为客户竭尽全力的人。
[43:32] Gergely
You can check them out at turbopuffer.com/pragmatic. I also want to mention our season sponsor entire. Maggie mentioned that as a design engineer, she's still putting in PRs the same as everyone else. And every one of those PRs is pushed to Git hosting, but there is a problem with Git agents. Git is increasingly becoming a bottleneck for modern agent heavy software development. Devs are creating more code with agents. These agents are pushing more code and many devs are running parallel agents that are pushing even more code. GitHub is clearly struggling to keep up and has frequent outages. So what is the solution? Entire was founded by GitHub's last CEO Thomas Dunca and here we built git hosting for the agenda from scratch. Entire was built to be very fast and have your repos regionally close to you to reduce latency allowing for fleets of agents to push in parallel. And Entire's performance is next level. The repo can handle 418 pushes per second. And that's up to 89 times faster than every other competitor on the market. When GitHub is down, you can still keep working and you don't need to migrate away from GitHub. You just sign up to entire and the platform mirrors your repo. Oh, and one more thing. Have you ever wondered what prompt resulted in this code being generated? I find that the prompt and conversation with the agents carries more information than the PR itself.
可以去 turbopuffer.com/pragmatic 了解一下他们。我还想介绍一下我们的季度赞助商 Entire。Maggie 刚才提到,作为设计工程师,她跟其他人一样也在提 PR。每一个 PR 都会被推送到 Git 托管平台上,但 Git 一碰上 agent 就出问题了:在如今重度依赖 agent 的软件开发里,Git 正越来越成为瓶颈。开发者用 agent 写出更多代码,这些 agent 推送更多代码,还有很多开发者在并行跑多个 agent,推送的代码就更多了。GitHub 显然已经跟不上,还频频宕机。那解决办法是什么?Entire 由 GitHub 的最后一任 CEO Thomas Dohmke 创办,他为 agent 时代从零重建了 Git 托管。Entire 生来就追求极快,并让你的仓库在地域上离你更近以降低延迟,好让成群的 agent 能并行推送。Entire 的性能是另一个量级的:一个仓库每秒能处理 418 次推送,比市面上其他所有竞品最多快 89 倍。GitHub 宕机的时候,你照样能继续干活,而且不需要从 GitHub 迁走,只要注册 Entire,平台就会镜像你的仓库。哦,还有一件事。你有没有想过,这段代码到底是哪个 prompt 生成的?我发现,跟 agent 之间的 prompt 和对话,承载的信息比 PR 本身还要多。
[44:49] Gergely
Entire captures all the prompt history with your agent right in the repo. Easy to check back. And it's got a pretty innovative UI to show all of this. If you're looking for get hosting that works even when GitHub is down, head to entire.io/pragmatic, install the CLI, and mirror your repo with a click. I've already done it. Oh, and did I mention that it works with any agent and is open source? And then with LM since they came out, how has your design process changed? You've already mentioned how it's now a lot easier. You can like for example, if if you either have an interface design, you can you can ask plot or or codeex or or any any other agent to implement it. But what has changed like between the notebook, between your mockups, between the prototype that gets there, what parts are easier and maybe what parts are trickier?
Entire 会把你和 agent 之间的全部 prompt 历史直接存进仓库里,回头查起来很方便,而且它用来展示这些内容的 UI 相当有新意。如果你在找一个 GitHub 宕机时也照样能用的 Git 托管服务,就去 entire.io/pragmatic,装上 CLI,一键镜像你的仓库。我自己已经这么做了。哦对了,我提过吗?它适配任何 agent,而且是开源的。那么,LLM 出现以来,你的设计流程发生了哪些变化?你刚才已经提到,现在做事容易多了。比如说,你手上有一份界面设计,就可以让 Claude、Codex 或者随便哪个 agent 去把它实现出来。但从笔记本,到你的 mockup,再到最终做出来的原型,这中间到底变了什么?哪些环节变容易了,又有哪些环节可能反而更棘手了?
[45:37] Maggie
It's definitely all faster and it definitely all feels a bit easier. I will say like I definitely remember not suffering through like like making elaborate prototypes in Figma because that was going to be faster than like building more complex things in the web and then trying to show them to users with these like Figma clickthrough prototypes that obviously like everything is faked. Oh, I I remember that like on the the user thing and then sometimes you have to like have these weird things that click here and then
肯定是全都变快了,也确实感觉都更容易了一点。我得说,我清楚记得以前受过的那些罪:在 Figma 里吭哧吭哧地做精细的原型,因为那比在网页上真把复杂的东西搭出来要快;然后再拿着这种 Figma 可点击原型给用户看,而里面的一切显然都是假的。哦,我还记得,做用户测试那会儿,有时候你还得弄一些很别扭的东西,点这儿,然后
[46:02] Maggie
so you're like in these user interviews and like the user's trying to click something that you haven't hooked up to like a like a fake new screen and the whole thing just feels a bit insincere and then even when you did make prototypes you you couldn't spend any time making them look nice. So then sometimes the users would get like
于是你坐在用户访谈里,用户想点某个东西,而你压根没把它连到一个假的新页面上,整件事就显得有点不真诚。而且就算你真做了原型,也根本没时间把它们做得好看。所以有时候,用户会
[46:16] Maggie
bit distracted or confused by the fact it looked
有点分心,或者困惑,因为它看起来
[46:19] Maggie
terrible. But you're like, "Yeah, but we only we only had a few days and then we've got to move on to the next prototype." And now I wouldn't have that problem at all. Right? Like now I can build something that really looks quite sophisticated and not with the agents doing it on their own. They need a lot of direction I find to make something that I would think was an acceptable interface,
太糟糕了。可你心里想的是:「是啊,可我们只有几天时间,做完就得接着做下一个原型了。」而现在我完全不会有这个问题了,对吧?现在我能做出看起来相当精致的东西——当然不是 agent 自己做出来的。我发现,要做出一个我认为过得去的界面,它们需要大量的指引,
[46:35] Maggie
but it's [clears throat] so much faster. Sometimes I have even mocked up quite high fidelity stuff in Figma and then just been like, "Hey agent, here's the Figma file. You know, goal mode. You play right, take screenshots. If it doesn't look like the Figma, keep going. Keep looping until it looks exactly like the Figma and it'll get there." And so that was just like I can run that overnight. I don't have to do anything in the morning. The interface is pretty much there as I speced out. Like
但就是快太多了。有时候我甚至会先在 Figma 里做好相当高保真的稿子,然后直接说:「嘿 agent,这是 Figma 文件。你懂的,goal mode。用 Playwright 截图,要是跟 Figma 不一样,就接着改。一直循环,直到跟 Figma 一模一样为止。」它最后真能做到。所以我可以让它跑一整晚,第二天早上什么都不用管,界面基本就是按我定的规格做出来了。就是
[46:59] Gergely
and and to you I guess this was grunt work, right?
对你来说,我猜这些都算是体力活吧?
[47:01] Maggie
Oh, totally. It's totally cuz you're like this isn't complex. This is like okay again we're building another sidebar, right? Let's get the React components and like but
哦,完全是。完全是,因为你心里清楚这没什么复杂的,就是:好吧,又要做一个侧边栏了,对吧?把 React 组件拿过来,然后……不过
[47:09] Gergely
and and you don't really care about the cool quality or tech depth or any of like it's going to be throw away anyway, right? Like if if if it works because of that because then you'll build it and if it doesn't work like great, [laughter]
而且你也不太在乎代码质量、技术债这些,反正最后都是要扔掉的,对吧?就是说,要是验证成功了,那很好,因为之后你会正经把它做出来;要是不成,也挺好,(笑)
[47:19] Maggie
doesn't matter. So prototyping is a whole different game now. I feel like you can prototype much more ambitious things. And then I do love the whole jig thing. It feels like this malleable software thing where like you can make the software whatever you want it to be where I'm not constrained by Figma's available tools. I can be like okay I'm trying to make like this animated constellation map was something I recently did. Like what speed are the stars moving at? Like what zoom level are we at? Like
无所谓。所以现在做原型完全是另一种玩法了。我觉得你可以做野心大得多的原型。另外,我是真的很喜欢 jig 这一整套做法。它感觉就像 malleable software(可塑软件)那种东西:软件你想让它变成什么样,它就能变成什么样,我不再受限于 Figma 现有的那些工具。我可以说:好,我想做一个——比如我最近做过的一个动态星座图——星星以什么速度移动?现在是什么缩放级别?还有
[47:41] Gergely
you did that?
你做过这个?
[47:41] Maggie
Yeah. And like how much what degree is the gradient at on the screen? and you just put these all on little sliders and you just tweak it and then you think, "Oh, I I really want like a slight like green like grain over this." Tell the agent, you know, it's like it honestly feels like magic a lot of days. It's
对。还有,屏幕上的渐变是多少度?你把这些全都挂到小滑块上,然后就这么调,调着调着你会想:「哦,我真的想在上面加一层淡淡的……颗粒感。」跟 agent 说一声就行。说实话,很多时候感觉就像魔法一样。就是
[47:56] Gergely
Did you have that?
那个你手上有吗?
[47:57] Maggie
Oh, I might be able to pull it up. Yeah. Let's see. So, this is something I built for the new GitHub next like um website. We have a kind of basic one up, but I wanted something a bit fancier. We want to make it a little bit easier to like publish research frequently. So, I was playing around with some like, you know, some jazzy some jazzy homepages. Um, and this whole thing, this is like an animated like spinning constellation. And these are like some projects that the team's worked on over the years.
哦,我也许能调出来。嗯,我看看。这是我给新版 GitHub Next 网站做的东西。我们现在挂着一个比较基础的版本,但我想要个更花哨一点的。我们希望能更方便、更频繁地发布研究成果,所以我就在折腾一些,你懂的,挺炫的首页。嗯,这一整个东西是一个会旋转的动态星座,上面这些是团队这些年做过的一些项目。
[48:20] Gergely
Amazing.
太棒了。
[48:20] Maggie
And like this kind of thing to prototype this, right? Of course, I started with a sketch and notebook, but then made a bunch of jigs where I was like, okay, what colors the background and like how fast is this map spinning? And then there's a bunch of like phys cool physics on the stars that I didn't have to do any physics, you know, I didn't have to know anything about that. Um, you know, how how big are these when you hover over them? And then I did this like cool scroll effect down into the proper page. Um, and all of that, right? I didn't write any code. I made a bunch of different jigs and and tweaked and adjust exactly.
像这种东西,要给它做原型,对吧?我当然是先在笔记本上画了草图,然后做了一堆 jig,比如:好,背景用什么颜色?这张图转得多快?然后星星身上还有一堆很酷的物理效果,但物理部分我完全不用自己做,你懂的,那些东西我一点都不用懂。嗯,还有,鼠标悬停时它们放大到多大?然后我还做了一个很酷的滚动效果,往下一滚就进入正式页面。嗯,所有这些,对吧?我一行代码都没写。我就是做了一堆不同的 jig,然后调啊调,调到恰到好处。
[48:51] Gergely
And so these were like just imagine these were like things on the screen. For example, the color you could go from like blue, green, red, and then you figure out all right, you like this the most, the sizes, all of those. Right.
所以这些就是——大家可以想象一下——屏幕上的一个个调节项。比如颜色,你可以在蓝、绿、红之间来回切,然后你会发现:好,这个最喜欢。尺寸也一样,所有这些都是,对吧?
[49:02] Maggie
Exactly. I can be like make me a slider um for controlling the animation variables on the constellation experiment. So, we'll let that work. But that's the kind of it's like really simple. If you tell it like make me controls or make me a slider for whatever it is you're trying to do, just think about like okay, what are the ways I need to like tweak this to make it work? It's pretty good about just making them. I mean, I have a sil skill so it like knows how to like make them so that they look decent, right? and and based on your preferences, you know, what you figured out works.
没错。我可以直接说:「给我做个滑块,嗯,用来控制星座实验里的动画变量。」好,让它先跑着。不过就是这样,真的很简单。你跟它说「给我做些控件」,或者针对你想做的随便什么东西说「给我做个滑块」,你只需要想清楚:好,我需要从哪些方面去调,才能把它调对?它在把这些东西做出来这件事上挺靠谱的。当然,我有一个 skill,所以它知道怎么把这些控件做得像样,对吧?而且是按你的偏好来,也就是你自己摸索出来、确认管用的那些。
[49:36] Maggie
Yeah. Yeah. Um but then it's great. Just hooks it up and then you can just kind of like play with it and it's it's a whole different way to design. It's very um you know Brett Victor like the live programming stuff. Um Brett Victor was he's he's an engineer also a designer. I mean he's off doing some crazy stuff now. He did a set of talks between I don't know it was like 2010 2013. One of them's like, "Stop drawing dead fish." And it's about how like programming is not a a very live medium. Like, you know, you code in the editor, you do your whole build, and then you like look at it in the browser or wherever it is. And these two things feel very disconnected, and it's very hard to like
对,对。嗯,不过接下来就很棒了。它直接把控件接上,然后你就可以随便把玩,这完全是另一种做设计的方式。这很有,嗯,你知道的,Bret Victor 那种味道,就是实时编程(live programming)那一套。嗯,Bret Victor 是个工程师,同时也是设计师。他现在跑去搞一些很疯狂的东西了。他做过一系列演讲,我记不太清了,大概是 2010 到 2013 年之间。其中一个叫《Stop Drawing Dead Fish》(别再画死鱼),讲的是编程其实不是一种很「实时」的媒介。你知道的,你在编辑器里写代码,跑完整个构建,然后再去浏览器或者别的什么地方看效果。这两件事感觉非常割裂,而且很难——
[50:10] Maggie
you're tweaking variables in code, and then you have to go see the effect. And it's not a direct connection.
你在代码里改变量,然后还得跑去看效果,两者之间没有直接的连接。
[50:15] Maggie
And so his whole thing was like you need to have instant direct feedback at all times to be able to like look at the artifact you're making and directly tweak it. And it's like this kind of stuff come to life. like now we finally can do it, but before you couldn't do that. There was like no programming system in existence that could give you like a live preview of every possible variable or or thing. Like the closest we have is like dev tools in the browser.
所以他的核心主张就是:你需要时时刻刻都有即时、直接的反馈,能看着你正在做的东西,直接上手调它。而现在,这类东西终于成真了——我们终于做得到了,以前可做不到。那时根本不存在哪个编程系统,能让你对每一个可能的变量、每一样东西都实时预览。我们有过的最接近的东西,大概就是浏览器里的 DevTools。
[50:37] Gergely
Well, another topic which is very related to to this one while we're waiting for it. One thing that with AI, of course, you're saying it's easier to build stuff, but with AI it's also easier to design. When I was asking people like how they work with designers, an engineer replied something which I hear a lot more which is I I'll quote this this person Amir as an engineer I ask cloud design to generate 20 high high fidelity alternatives and I keep it trading till I land at a perfect design. It's very enjoyable and feels much faster than interacting with a design team.
好,趁着等它跑的工夫,聊另一个跟这个很相关的话题。有了 AI,当然,你刚才说的是做东西变容易了,但有了 AI,做设计也变容易了。我之前问大家是怎么跟设计师协作的,有位工程师的回复是我现在越来越常听到的那种,我直接引用这位 Amir 的话:「作为工程师,我会让 Claude Design 生成 20 个高保真的备选方案,然后不断迭代,直到得出一个完美的设计。这个过程很享受,而且感觉比跟设计团队打交道快多了。」
[51:04] Gergely
So it it is a thing saying oh I have these tools
所以确实有这么一种声音:哦,我有这些工具了,
[51:08]
I don't necessarily need a designer like I can just ask for all these like and in this case it will just give me 20 alternatives. I'll choose the perfect one and boom, I'm done. As someone who is a designer, what's your t take on on this? And and by the way, this is not the first time. I think there's always the thing like do we need designers? Do we as as engineers, do we need product managers? And of course, you know, product managers will also ask, do we need engineers and so on? [laughter] But what do you think where could this be valid? What could people be missing? I think in cases where you don't have a designer to hand and you're trying to like validate a product or like prove a hypothesis, but you need an interface for it. It's great to just use a model to be like, sure, make me 20 high fidelity designs. I'm sure I might look at those designs and be like, well, like it all depends on taste, too, right? Like I might look at them and think, okay, well, the these look obviously generated by AI to me, and I don't know that they're going to do the job that they need to do it. Again, it depends on the context. If it's something simple, needs a button and a sidebar, fine. But if it's like, you know, we have some new primitive we're trying to make figure out the shape of, that's when you really need a designer to come in and like really it's just someone who's assigned to like think through the prop problem properly, like put in the brain work and be like, okay, do the experiments, like show them to users, like figure out what people actually understand and don't. I think that's really like the labor a designer should come in and do. But I think it's completely fine for for developers without access to one to like use models as much as they can. But when models do designs for me, I of course just look at them and think that is terrible quality. [laughter] That is awful. Even to the extent of like I
Gergely: 我不一定需要设计师了,我直接开口要就行,像这个例子,它会直接给我 20 个备选,我挑出最完美的那个,砰,搞定。你自己就是设计师,你怎么看这件事?顺便说一句,这也不是头一回了。我觉得一直都有这种论调:我们还需要设计师吗?我们作为工程师,还需要产品经理吗?当然了,产品经理也会问:我们还需要工程师吗?诸如此类。(笑)不过你怎么看?这种说法在哪些情况下站得住?大家可能忽略了什么?
Maggie: 我觉得,如果你手边没有设计师,又想验证一个产品、或者证明一个假设,但需要一个界面来做这件事,那直接用模型说「行,给我做 20 个高保真设计」挺好的。当然,我自己看那些设计可能会觉得——说到底这也取决于品味,对吧?我可能看一眼就会想:好吧,在我看来这些明显是 AI 生成的,我也不确定它们能不能完成它们该完成的任务。还是那句话,看场景。如果是简单的东西,要一个按钮加一个侧边栏,没问题。但如果是,你知道的,我们在做某种新的原语(primitive),要去摸清它该长成什么样,那才是真正需要设计师进场的时候。说白了,就是需要有一个人专门负责把问题好好想透,把脑力活干了:好,做实验,拿给用户看,弄清楚大家到底哪些能看懂、哪些看不懂。我觉得这才是设计师真正应该进来干的活。但对于接触不到设计师的开发者来说,尽可能多地用模型,我觉得完全没问题。不过模型给我做的设计,我当然是一看就觉得质量太差了。(笑)太糟糕了。甚至到了这种程度,我
[52:38] Maggie
think they've been prompted with some what we would call like universal design principles, but they sort of don't don't understand nuance and context. And then I think they like stick to them too strictly. So like I find the agents want to put a label on everything in the interface.
觉得它们被灌输过一些我们所谓的「通用设计原则」,但它们不太懂细微差别和上下文,而且我觉得它们执行这些原则时太死板了。比如我发现,agent 总想给界面上的每样东西都加一个标签(label)。
[52:53] Gergely
Label meaning
标签是指?
[52:54]
like a small bit of text. Like there might be like a little button that's like to close the sidebar and we would usually use an icon button for that because most people are trained that this little button near the sidebar means it'll close it and they'll experiment with it and they'll click it and they'll figure out that is correctly what it does. But the agent will write close sidebar or close modal in the top right hand of the modal and you're like there's now a lot of text on this page [laughter] and and they'll just like put like four lines of instructional text over a button and just things where you're like I understand in the model's mind it's thinking oh this is how we like make the interface explainable to the human you know but actually it's really bad design. [laughter] Now talking about the UX and UI for AI, what do you think UX and good UX and and UI looks like? And I know this is a bigger question, but so far what have you learned of of what works and and what doesn't? I I think when it comes to this like like what is the ideal UI of AI which is like a very a big question I don't know that we'll figure out the answer to for a while but but it's something like some things haven't changed like in terms of what is good interface design for software it's there's still a lot of principles here like what what formats do we have to show users like data you know it's like dashboards and sidebars and documents like there's a lot of things that haven't changed we actually had a good story from this about this from elicit where the app was like helping doing scientists like extract data from papers and they were very used to doing this in Excel spreadsheets. They get a big Excel spreadsheet, put the papers in one on each row and then they'd extract each piece of data into the cells, right?
Maggie: 就是一小段文字。比如可能有个用来关闭侧边栏的小按钮,我们通常会用一个图标按钮来做,因为大多数人都已经被训练出来了,知道侧边栏旁边这个小按钮就是用来关掉它的,他们会试一试、点一下,然后发现它确实就是干这个的。但 agent 会在弹窗右上角写上「关闭侧边栏」或者「关闭弹窗」,你就会觉得:这页面上的字也太多了吧。(笑)它们还会在一个按钮上面放四行说明文字,诸如此类,让你觉得:我明白,在模型的脑子里,它想的是「哦,这样就能让界面对人类来说好理解」,但实际上这是非常糟糕的设计。(笑)
Gergely: 说到 AI 的 UX 和 UI,你觉得好的 UX 和 UI 应该是什么样的?我知道这个问题比较大,但到目前为止,关于什么管用、什么不管用,你都学到了些什么?
Maggie: 我觉得说到这个——AI 的理想 UI 到底长什么样——这是个非常大的问题,我不觉得我们短期内能找到答案。但有些东西是没变的。就「什么是好的软件界面设计」而言,仍然有很多原则适用,比如我们有哪些形式可以把数据展示给用户:仪表盘、侧边栏、文档……有很多东西都没变。关于这一点,我们在 Elicit 其实有个很好的故事。当时这个应用是帮科学家从论文里提取数据的,而他们非常习惯在 Excel 表格里干这件事:拿一张很大的 Excel 表,每一行放一篇论文,然后把每一项数据提取出来填进单元格里,对吧?
[54:25] Maggie
Pretty standard process. But of course in the beginning of Alys we were like oh that's so old school. There must be some like much better interface for like you know seeing the data extracted from papers. So we tried all this crazy stuff. There was like infinite canvases with like cards spread everywhere. There was one that's like a bunch of cards that are all like linearly stacked. We were like maybe it's more like notion with these like composable documents with rich interfaces. Like we tried all this stuff and every user interview I did users were just like this is very confusing. Can I just have a table like every time? And so after a couple months of this like oh what's the new UI of uh of AI? We were like oh uh it's a table. Well [laughter] at least in our use case it turned out the interface people were using was the the best because it was the most familiar to them and it caused the least amount of like cognitive load for them to use the tool. So we were like right back to tables that's fine. Like it was good to go on that journey. But sometimes we have this notion of like the the UI of AI will be so wildly different from our current imaginings. And sometimes it's it's really not at all. It's like you can do more powerful things. I think there's lots of leverage, but I expect it to all be built with documents and sidebars and cards and tables and like all the all the classic things we've worked out do work and people know how to use.
很标准的流程。但当然,Elicit 刚起步的时候,我们觉得:哦,这也太老派了,肯定有某种好得多的界面,能用来查看从论文里提取出来的数据。于是我们试了各种疯狂的方案:有无限画布,卡片铺得到处都是;有一版是一堆卡片全部线性堆叠;我们还想过,也许它应该更像 Notion,做成那种界面丰富、可组合的文档。这些我们全都试过,而我做的每一场用户访谈里,用户的反应都是:「这太让人困惑了,我能不能就要一张表格?」每次都是这样。所以折腾了几个月「AI 的新 UI 是什么」之后,我们的结论是:哦,呃,是一张表格。(笑)至少在我们的用例里,结果证明大家原本在用的那种界面就是最好的,因为那是他们最熟悉的,用这个工具时认知负荷也最小。所以我们又回到了表格,这也挺好。走这一趟是值得的。但有时候我们会有这种想法,觉得 AI 的 UI 会跟我们现在能想象的截然不同。可有时候真的完全不是这样。你确实可以做更强大的事,我觉得这里面有很大的杠杆,但我预计它最终还是会用文档、侧边栏、卡片和表格来搭建——所有那些我们早已摸索出来、确实管用、大家也都会用的经典形式。
[55:38] Gergely
Yeah. It's interesting. Yeah. There's a cognitive load in learning any new UX UI paradigm. It can be confusing if your existing tools don't work like that because again people will still use operating systems and Google Sheets or Excel or Office documents etc. And and even if if like a small subset of people are like I don't know familiar with this newi new UI stuff. You remember like probably like parents or or grandparents teaching them how to use the phones the interfaces and and once they learned it they're good. But then do you really want to do that again?
是啊,挺有意思的。对。学习任何一种新的 UX/UI 范式都有认知负担。要是你现有的工具都不是那么用的,就很容易让人犯迷糊——因为说到底,大家还是会继续用操作系统、Google Sheets、Excel、Office 文档这些东西。就算有一小部分人,呃,我也说不好,对这套新 UI 挺熟……你还记得吧,大概就像教爸妈或者爷爷奶奶用手机、用那些界面:他们一旦学会了就没问题了。可你真的还想再来一遍吗?
[56:09] Maggie
Yeah. No. [clears throat]
是啊,不想。
[56:09] Gergely
It's interesting. [laughter] Yeah. So it will be something some there will be something similarish.
挺有意思的。(笑)是啊,所以最后会是某种……会有某种差不多的东西。
[56:13] Maggie
Yeah. It's kind of like how we started with chat bots, right? It's like chat bots were not the final form like as if we could look at codeex like there's a lot going on here there. Sure there's a chat window here but there's all kinds of things going on with git work trees over here and then we've got this whole interface and like I can do like annotations and debug in this. Like there's a lot of extra stuff where you take the the familiar primitive and you expand outwards from it. And we did similar things at elicit like there was still a table but then we baked a lot of stuff into the table and around it but you start with with familiar primitives. So here I can like
对,这有点像我们一开始从聊天机器人起步,对吧?聊天机器人并不是最终形态。比如我们看看 Codex,这里头东西可多了。没错,这儿有个聊天窗口,但那边还有各种 git worktree 相关的东西,然后还有这一整套界面,我还能在里面做批注、做调试。有很多额外的东西,都是先拿一个大家熟悉的原语,再从它往外扩展。我们在 Elicit 也做过类似的事:表格还是那个表格,只是我们往表格里面、表格周围塞进了很多东西。但起点都是大家熟悉的原语。所以这里我可以……
[56:43] Gergely
we have our jig ready.
我们的 jig 已经好了。
[56:44] Maggie
Well yeah let's let's expand this. So here's a jig. This is using um dial kit. Um this is built with this. So I can change the speed of the animation to see like oh is that too fast? Like is that too slow? Um the intensity is like the how much gravity is being applied to the stars here.
对,我们把它展开看看。这就是一个 jig,用的是,嗯,Dialkit,它就是拿这个搭的。我可以调动画的速度,看看:哦,是不是太快了?还是太慢了?嗯,这个强度(intensity)就是给这些星星施加多大的引力。
[56:59] Gergely
Oh wow.
哇哦。
[57:00] Maggie
Uh how much variation is there in the stars? See this is sizing and scroll. So this is like when I scroll down to have this zoom out like what's the resting height? Uh I think this is of the when this is here like the resting height of this
呃,星星之间的差异有多大?你看,这个是尺寸和滚动。就是说,我往下滚、让它缩小的时候,它停下来的高度是多少?呃,我想这个是……当它在这儿的时候,它停下来的高度
[57:12] Maggie
resting logo size. Let's see what's this. This is like I have some glass effects on the surface that it's like oh it's on the um
logo 停下来时的尺寸。我看看这个是什么。这个是……我在表面上加了些玻璃效果,就是,哦,它在那个,嗯
[57:19] Maggie
on the top top thing like that. How much is that glass effect like is but see that's too bright. Then you can't read the words all the way down here. You can barely tell it's glass. So there's some sort of like happy middleground you want to figure out like how much contrast between the background. So this is where
在最上面那个东西上,像这样。那个玻璃效果要多强呢——你看,这样就太亮了,底下这一路的字都看不清了。这样又几乎看不出是玻璃。所以你得找到一个恰到好处的中间点,比如跟背景之间要多大的对比度。所以这就是……
[57:35] Gergely
you you weren't kidding that this is like your own almost personal Figma if you will or or like design tool.
你还真没开玩笑,这简直就是你自己的私人 Figma,或者说私人设计工具。
[57:40] Maggie
Yeah. And then cuz it's really difficult to mock up static versions of this in Figma which I have done. Yeah. Like I was for a minute we were thinking maybe like a gray background
对。而且在 Figma 里做这种东西的静态稿真的很难——我做过。对。有那么一阵子,我们在考虑也许用灰色背景
[57:49] Maggie
trying to figure out how much like grain and stuff. Maybe like a wavy one. Yeah. And then I'm trying to figure out here like okay is it like halfway off the screen? Maybe there's like a slice out of it here. So, you can play around with like layouts and ideas, but you can't get a sense until it's live in the browser.
琢磨要加多少颗粒感之类的。也许来个波浪形的。对。然后我在这儿琢磨:好,它是不是一半露在屏幕外面?也许这里切掉一块。所以你可以摆弄各种布局和想法,但不在浏览器里真正跑起来,你是找不到感觉的。
[58:03] Gergely
Yeah.
嗯。
[58:04] Maggie
Of of how this is going to feel and like how much scroll you need to do here. Um
……这东西用起来会是什么感觉,还有这里需要滚动多少。嗯
[58:10] Maggie
like and then like the themes and the colors and textures and everything. So, I I work with this a lot now. Whenever I'm designing something visual, it's so much easier to have live variables, which again would not have been possible before. You could have built this by hand, I guess, in the olden days. It just would have been practical.
还有主题、颜色、质感,所有这些。所以我现在经常这么干。只要是在设计视觉上的东西,有实时可调的变量就容易太多了——这同样是以前做不到的。我想,放在过去你也能手工把它做出来,只是不太现实。
[58:25]
Just coding the thing itself was slow enough.
光是把东西本身写出来就已经够慢了。
[58:28] Gergely
One interesting thing you talked about is capability gaslighting. What is capability gaslighting?
你聊过一个很有意思的话题,叫能力煤气灯效应(capability gaslighting)。什么是能力煤气灯效应?
[58:34] Maggie
Okay. So, I think this is similar to like Ethan Mullik has this phrase um the jagged frontier. It's pretty much that, but I came up with capabilities gaslighting before I read his work. But so that people are familiar with the the concept. It's that models are really really good at some things and really bad at others. And it's really hard to predict when you give it a certain task which of those it's going to fall into. And then capabilities gaslighting was the feeling I got early on from using them where like they convince you they're so capable because they'll really impress you on one task and then you try them on something else and like they fail and you kind of feel like I feel like you kind of gaslight me like imagining that you're this extremely intelligent agent or model and then you like fall on your face and then sometimes I feel like they fail but I haven't totally noticed how badly they've failed because I still have this belief that like oh but you're a frontier model like Opus could never really get this wrong and totally does all the time. So, it's such an inconsistent experience. It and it's like it's so different to working with a human. Like, if you find a human who you feel is like really an expert in a in a topic and you work with them, it's it's very unusual for them to be inconsistent in their performance, right? Like it's very rare for them to suddenly forget all of their like expert knowledge on a topic. And if they did, you would be very like, are you having like a mental breakdown? Like this is very weird behavior. But this is how models like behave every day. like one day they will actually perform really well on a task and they could fail at that same task the next day because you prompted differently or they had different context available or like random whatever it is like stochcastic outputs they just didn't do as well. So I think it's hard to work with them because you
好。我觉得这跟 Ethan Mollick 提过的一个说法很像,嗯,叫「锯齿状前沿」(jagged frontier)。基本上就是一回事,只不过我想出「能力煤气灯效应」这个说法的时候,还没读过他的东西。先让大家了解一下这个概念:模型在某些事情上好得不得了,在另一些事情上又差得不行,而你交给它某个具体任务时,很难预测它会落在哪一边。而能力煤气灯效应,是我早期用这些模型时的一种感受:它们会让你相信它们能力超强,因为它们会在某个任务上让你惊艳,然后你拿别的事一试,它们就失败了。你会有种感觉——我感觉你有点像在对我搞煤气灯操纵,让我以为你是个超级聪明的 agent 或模型,结果你摔了个大跟头。还有些时候,我觉得它们失败了,但我根本没完全意识到它们错得有多离谱,因为我心里还揣着这么个信念:哦,可你是前沿模型啊,Opus 绝不可能真的在这上面出错——可它明明一天到晚都在出错。所以这是一种非常不稳定的体验。这跟和人合作太不一样了。比如你找到一个人,你觉得他在某个领域是真正的专家,你跟他合作,他的表现忽高忽低,这是非常少见的,对吧?他突然把自己在某个领域的专业知识全忘光,这种事极少发生。要是真发生了,你肯定会想:你是不是精神崩溃了?这行为也太怪了。可模型每天都是这副样子。今天它在某个任务上表现得确实很好,明天同样的任务它可能就搞砸了,因为你的 prompt 换了个写法,或者它手头的上下文不一样,或者随便什么原因——比如输出本身是随机的(stochastic),它就是没做好。所以我觉得跟它们合作很难,因为你
[1:00:03] Maggie
never quite know what you're going to get.
永远说不准会得到什么。
[1:00:05] Gergely
Yeah. It's I guess it's we just need to keep this in mind right because
是啊。我想,我们就是得把这一点记在心上,对吧,因为
[1:00:08] Gergely
and this is ongoing like of course we always say and we we have see that the models improve but you want to be skeptical.
而且这是个一直存在的问题。当然,我们总在说,也确实看到了模型在进步,但你还是得保持怀疑。
[1:00:15] Maggie
Yeah. Yeah. Of course, there's some baseline with Frontier models like they're not going to perform below a certain bit, but you know, of course, the models are changing all the time and people complain about this that you upgrade to a new model and it and it changes what it's good at or it change like it doesn't perform to your expectations of certain things. It's like it's hard to predict.
对,对。当然,前沿模型有个基本盘,表现不会低于某个水平。但你知道,模型一直在变,大家也常抱怨这一点:你升级到一个新模型,它擅长的东西就变了,或者在某些事情上达不到你的预期。反正就是很难预测。
[1:00:32] Gergely
You did a a talk titled one developer, two dozen agents, zero alignment, why we need collaborative engineering. Can you talk about just this observation like one developer, two dozen agents, zero alignment?
你做过一个演讲,题目叫《一个开发者,两打 agent,零对齐:为什么我们需要协作式工程》(One Developer, Two Dozen Agents, Zero Alignment)。能不能聊聊这个观察本身——一个开发者,两打 agent,零对齐?
[1:00:45] Maggie
Yeah. So this is like a a problem that the GitHub next team has been focused on trying to find various ways to solve I think for well over a year now is this is this acknowledgement that we are now working with these agents locally on machines and it speeds up each individual person like us alone with the agent we can go really fast is always built on a team right you're always trying to align with like the product managers and the designers and the other engineers like what decisions you're all making and we don't actually have good tools in place to do that it's sort of like we have Slack people might have something like Lineia or GitHub have issues where they're like doing issues, but there's tons of pre-planning work before you write an issue because usually when you write an issue, you're like ready to hand it off to an agent, but before that point, you have to have agreed upon your approach and like should we build this feature? Is this feature the right shape? Does it have the right interface? Like, do we have some sort of database migration we have to do? There's all this like upfront work and not many good tools to do that work in is how we felt, especially not ones with agents involved in them. So the biggest gap seems to be like we have agentic coding tools but none of them are real-time multiplayer. All your sessions are private and shared to you often locally on your machine. So you couldn't possibly share it with someone.
对。这是 GitHub Next 团队一直在集中精力、想从各种角度去解决的一个问题,我想已经有一年多了。出发点是承认这么一个现实:我们现在都是在自己机器上、在本地跟这些 agent 一起干活,这让每个人个体的速度都提上去了——我们单独跟 agent 待在一起,可以跑得飞快。可做东西从来都是团队协作,对吧?你总得跟产品经理、设计师、其他工程师对齐:大家各自在做什么决定。而我们其实并没有趁手的工具来干这件事。我们有 Slack,有的人可能还用 Linear 或者 GitHub Issues 来管 issue,可在你写下一个 issue 之前,还有大量的前期规划工作。因为通常你写 issue 的时候,就已经准备把它交给 agent 了;但在那之前,你们得先就做法达成一致:我们该不该做这个功能?这个功能的形态对不对?接口对不对?我们是不是得做什么数据库迁移?前期有这么一大堆工作,却没多少好工具能用来做——这是我们的感受,有 agent 参与其中的工具就更少了。所以最大的空白似乎在于:我们有了 agentic coding 工具,但没有一个是实时多人协作的。你所有的会话都是私有的,只属于你自己,而且往往就在你本机上,所以你根本没法把它分享给别人。
[1:01:50] Maggie
This is starting to change now like I we have seen some products come out that are trying to do live multiplayer agent work like Buzz from Jack Dorsey and ACE the prototype that we made at GitHub next was in this direction was like shared compute shared sandboxes in a Slack like interface. So you're like coding and talking at the same time. Mhm.
现在情况开始有变化了。我们已经看到有些产品冒出来,想做实时的多人 agent 协作,比如 Jack Dorsey 的 Buzz;我们在 GitHub Next 做的原型 ACE 也是这个方向,就是在一个类似 Slack 的界面里共享算力、共享沙箱。这样你就是一边写代码一边聊天。嗯。
[1:02:07] Maggie
So people I think are beginning to realize this is like the next big thing we need to push on to improve in like our agentic coding tools, but it's still totally unsolved. Like even once you have a Slack interface and there's an agent in there, you still need tools to agree on things. This is where I'm kind of pushing on like maybe decisions need to become sort of first class primitive. Like when an agent presents a decision to a human,
所以我觉得,大家开始意识到,这是我们的 agentic coding 工具下一步需要重点突破、改进的大事,但它目前还完全没有解决。就算你有了 Slack 那样的界面,里面也有 agent,你仍然需要能让大家达成一致的工具。这就是我在推动的一个点:也许「决策」需要变成一种一等原语(first-class primitive)。比如当 agent 把一个决策摆到人面前时,
[1:02:29] Maggie
you first need to have the decision be like large enough on screen to give you the information about it. But then also you probably need someone else in your team to come like help you make that decision or at least like give input on it. And then someone has to be responsible for having had made that decision. You need like a record of like here's the things we decided like here's the context we're going to feed to the agent. You know there's some moment where we've written like a clear set of issues or specs that we're going to hand off to be implemented and then some verification check on the other side. But you all need to be so aligned up to the point of implementation because in the old world implementation took so long you could like adjust along the way. But now because there's a sort of hard handover point to an agent, you need to all be aligned up front in a way that we're not at the moment. Like even our team, we feel this all the time. It's like we're all individually running on our machines and it's hard to stay like aligned on what we're doing.
首先这个决策在屏幕上得足够显眼,能把相关信息都给到你。然后,你可能还需要团队里另一个人过来帮你一起做这个决策,至少给点意见。再然后,得有人为做出了这个决策负责。你需要一份记录:这些是我们定下来的事,这些是我们要喂给 agent 的上下文。你知道,总会有那么一个时刻,我们写好了一组清晰的 issue 或 spec,准备交出去实现,另一头再做一些验证检查。但一直到实现之前,你们都得高度对齐。因为在过去的世界里,实现要花很长时间,你可以边做边调整;可现在有了一个交给 agent 的硬交接点,你们就必须在前期全部对齐,而我们眼下还做不到这一点。就连我们自己的团队也一直有这种感觉:大家都各自在自己的机器上跑,很难在「我们在做什么」这件事上保持一致。
[1:03:16] Gergely
And you mentioned GitHub next and and the prototyping that you're doing. C can you talk a little bit about the types of projects you've built that you're experimented some learnings that you've had may maybe give us a direction of like things you're you're now excited about exploring.
你提到了 GitHub Next,还有你们在做的原型。能不能稍微聊聊你们做过哪些类型的项目、做过哪些实验、有过哪些收获?也许再给我们指个方向:你们现在对探索哪些东西感到兴奋?
[1:03:32] Maggie
Yeah. Yeah. So um I joined the team like a little less than a year ago but most of the time we were working on this prototype ACE which is like Slack plus uh cloud compute like sandboxes so microVMs and a bunch of other stuff in there like you can like [clears throat] open PRs and review your code and that kind of stuff. So, it was a kind of an all-in-one multiplayer workspace. Uh, and it was a really like useful prototype, but it turned out to be extremely ambitious for our small team. We had like three or four people working on it at a time. And we wanted at some point to take it to like a real product, but it just turned out that was like not feasible with the number of people we had. Yeah.
对,对。嗯,我加入这个团队还不到一年,不过大部分时间我们都在做 ACE 这个原型。它基本上就是 Slack 加上云端算力,也就是沙箱,用的是 microVM,里面还有一堆别的东西,比如你可以开 PR、审代码之类的。所以它算是一个一体化的多人协作工作空间。呃,这个原型非常有用,但对我们这个小团队来说,结果野心太大了。同一时间只有三四个人在做它。我们一度想把它做成一个真正的产品,但事实证明,就我们这点人手,这不太可行。嗯。
[1:04:07] Maggie
Um, but we're trying to take bits of it and ship it to the rest of GitHub. Like sandboxes have now gone out to be part of the GitHub desktop app. That's being used in other ways. And I think it's also made leadership take the multiplayer like thing more seriously and try and find other ways we might ship that to the product.
嗯,不过我们在试着把其中一些部分拆出来,交付到 GitHub 的其他地方。比如沙箱现在已经上线,成了 GitHub 桌面应用的一部分,也被用在了别的地方。而且我觉得,这也让领导层更认真地看待多人协作这件事,想办法找别的途径把它做进产品里。
[1:04:22] Gergely
And this is a really promising direction. I mean we already have a deep dive out by the time this this podcast is out about RAMP who have built just this inside and and they made it collaborative. It's it's forced collaborative. You cannot make anything private. Oh yeah, we they have multiple interfaces. They have the they have this running it's called inspect and it runs in Slack. There's a Chrome plugin as well. There's a web interface. uh and they did find that in the slack channels uh with product manager designers they can talk the agent inspect gets all this input and then all the sessions anyone can join a session and anyone can prompt and change the direction which actually was a really concerning point they weren't sure if they want this cuz people privacy but they were like well it's just it's just civil civilized things so it turned out to not be an issue but because of this it spreads better and and it has all this feedback loops and the reason And it works really well for them is it's integrated this agent to all of their internal systems
这是个非常有前景的方向。我是说,等这期播客上线的时候,我们已经发了一篇深度文章,讲的是 Ramp——他们内部就做了这么个东西,而且把它做成了协作式的。是强制协作:你没法把任何东西设成私有。哦对,他们有好几种界面。他们跑的这个东西叫 Inspect,它跑在 Slack 里,还有一个 Chrome plugin,还有一个网页界面。呃,他们发现,在 Slack 频道里,产品经理、设计师都可以跟这个 agent 对话,Inspect 能拿到所有这些输入。然后所有的会话,任何人都可以加入,任何人都可以输入 prompt、改变方向——这一点其实起初挺让人担心的,他们不确定要不要这么做,因为涉及个人隐私。但后来他们觉得,大家都挺文明的,所以结果根本不是问题。反而正因为这样,它传播得更好,还形成了各种反馈回路。而它在他们那儿效果这么好的原因,是他们把这个 agent 接进了自己所有的内部系统,
[1:05:19] Gergely
and their cloud machines are like a full-blown developer machine which is a lot of work a bit like cloud development environment which is all all this to say like doing this
而且他们的云端机器就是一台功能完备的开发机,这可是很大的工作量,有点像云端开发环境。说了这么多,我想说的是:做这件事,
[1:05:27] Gergely
for one company specifically for them it's possible doing it as a generic solution
专门为一家公司、为他们自己量身定做,是可行的;要做成一个通用方案,
[1:05:32] Gergely
probably more difficult but I'm sure it will come um or I'm sure there will be attempts but but you know this is the difference between like scratching your own itch
大概就难多了。但我相信它会来的,嗯,或者说我相信会有人去尝试。但你知道,这就是「只解决自家痛点」
[1:05:40]
and doing something that works for for so many I mean, Slack, right? They launched their whole like developer experience IDE thing, which like they might be able to make this experience happen or like Buzz from Jack Dorsey is kind of going in this direction too. Like there's clearly lots of people realizing this is a problem
Gergely: 和「做出一个对那么多人都管用的东西」之间的区别。
Maggie: 我是说,比如 Slack,对吧?他们推出了一整套面向开发者体验的 IDE 之类的东西,也许他们能把这种体验做出来;或者像 Jack Dorsey 的 Buzz,也有点在往这个方向走。显然有很多人都意识到这是个问题了。
[1:05:56] Gergely
and and you're also experimenting in in in this direction clearly.
而你们显然也在这个方向上做实验。
[1:05:58] Maggie
Yes. Yeah. Yeah. Yeah. So, one of the things like when we tried to like build this whole thing, it was it was too ambitious to do it with all the microVMs. But now we're kind of scaling back and thinking, okay, what bits of this can we prototype in ways that would help GitHub leadership like have have a bit more direction of like where they should run next? Like you know one of our functions of our team is just to run out ahead of product and say okay you guys know what like the things you should probably do in the next six months to one year is we are much more like what is a big crazy swing GitHub can make or what's more risky or what's like the far future and so that's why we're trying to prototype okay people are now on this multiplayer like sessions thing what comes after that so now we're interested in like how do you make proactive agents that aren't annoying is one of the things we're trying to explore
是的。对,对,对。我们之前试着把这一整套都做出来的时候,连同那些 microVM 一起,野心实在太大了。所以现在我们在收缩范围,思考:好,这里面哪些部分可以做成原型,好让 GitHub 领导层对下一步该往哪儿跑多一点方向感?你知道,我们团队的一个职能,就是跑到产品前面去,跟他们说:好,接下来半年到一年你们大概该做什么,你们心里有数;我们更多是在想,GitHub 能来一次什么样的大胆豪赌?什么更冒险?或者遥远的未来是什么样?所以我们才在做原型:好,现在大家都在搞这种多人协作会话,那之后会是什么?所以我们现在感兴趣的一件事,就是怎么做出不招人烦的主动型 agent(proactive agent),这是我们正在探索的方向之一。
[1:06:39]
because proactive agents you think we have this dream of like okay assume Assume assume intelligence is like free or so cheap that like it doesn't matter, right? That's an that's a fun assumption to make. If you could have 100 background agents running, what would be the least overwhelming, least annoying way to consume any of their outputs is like an open research question we're trying to figure out. How would you have agents working in a document with humans where it's not again overwhelming or annoying for them to be making changes or doing helpful background work in a way that doesn't feel like invasive or interruptive? So we try and take these kind of design questions and figure out prototypes that could solve them in the hopes that like you know if one day GitHub wanted to build something in this direction we can then be like hey here's all the research we did. A question I wanted to ask you is it's coming from a developer angle. is what happens when in your experience uh observations when we start to give more and more decisions to the agent and I'll I'm going to quote uh a developer Jorge uh Man Rubia who wrote an article called oh my craft he wrote the need to intervene on the small stuff is decaying quickly as models improve and when models are capable enough to handle those details themselves themselves spending too much time on these details start to feel like a poor use of human attention and he writes about how he's not opening he really opens his code editor anymore. He it's been months he wrote a single line itself. But the thing is he used to live inside and see all the details. And there is this sense that craft has to do with being there with the details. And of course you're you're coming from a design perspective.
Maggie: 因为说到主动式 agent,你想想,我们有这么个梦想:好,假设、假设、假设智能是免费的,或者便宜到根本无所谓,对吧?这是个挺好玩的假设。如果你能同时跑 100 个后台 agent,用什么方式去消化它们的产出,才能最不让人应接不暇、最不烦人?这是我们正在摸索的一个开放研究问题。怎样让 agent 和人一起在一份文档里工作,而它们在做修改、在后台干些有用的活时,不会让人应接不暇或者心烦,也不会让人觉得被侵扰、被打断?所以我们会拿这类设计问题,去琢磨能解决它们的原型,希望有一天 GitHub 想往这个方向做点什么的时候,我们可以说:嘿,这是我们做过的全部研究。
Gergely: 我想问你一个问题,是从开发者的角度来的:按你的经验和观察,当我们开始把越来越多的决定交给 agent,会发生什么?我要引用一位开发者 Jorge Manrubia 的话,他写过一篇文章叫《Oh my craft》。他写道:「随着模型进步,在小事上亲自介入的必要性正在迅速衰减。当模型已经有能力自己处理这些细节时,在这些细节上花太多时间,就开始显得是在浪费人的注意力。」他还写到,他现在几乎不打开代码编辑器了,已经好几个月没亲手写过一行代码。可问题是,他以前是整天泡在代码里、每个细节都看在眼里的。人们总有一种感觉:手艺(craft)就意味着要守在细节里。当然,你是从设计的角度来看这件事的。
[1:08:12] Gergely
But what have you observed of your own craft changing, decaying or you know what you're seeing? Did you do you think this is a there's a danger as as there's this temptation as you know we talked about like just good good make this decision. We we just did this with the slider which didn't matter.
不过,你观察到自己的手艺有什么变化吗?是在衰退,还是说你看到的是别的什么?你觉得这里面有没有危险?因为就像我们聊过的,总会有这种诱惑:「好好好,这个你来定吧。」我们刚才做滑块的时候就是这么干的,不过那个无关紧要。
[1:08:29] Maggie
Yeah.
对。
[1:08:30] Gergely
But it can matter.
但它也可能是要紧的。
[1:08:31] Maggie
But it can matter.
是啊,它也可能是要紧的。
[1:08:32] Gergely
But does it matter?
可它到底要不要紧呢?
[1:08:33] Maggie
I mean it's hard because because I'm not like I would say like a a true engineer in the sense of like I don't necessarily care about clean code that much, right?
这个嘛,挺难说的,因为我不算……我会说我不算真正意义上的工程师,我并不怎么在乎代码写得整不整洁(clean code),对吧?
[1:08:40] Gergely
But you care about great design.
但你在乎好的设计。
[1:08:41] Maggie
But I do care about design. But the thing is, they can't they definitely can't do design to my standards yet. I have to still be really involved to get the design to to look and feel the way I would make it.
但我确实在乎设计。问题是,agent 现在绝对还做不到我要求的设计水准。我还是得深度参与,才能让设计的观感和手感达到我自己做出来的样子。
[1:08:53] Maggie
So, I'm annoyed almost that I'm always in there being like, "No, that is a terrible transition. Here's how we should do it, you know, or like this."
所以我几乎有点恼火,我总得亲自下场,说:「不行,这个过渡动画太糟糕了。应该这么做,你懂吧,或者像这样。」
[1:09:00] Gergely
So, you're in the details. You're not letting go of those details.
所以你还是扎在细节里,没有对那些细节放手。
[1:09:03] Maggie
Yeah. Because I wish I could I wish I mean I' I've written
对。因为我真希望我能……我希望……我是说,我写过……
[1:09:06]
Do you design Well, I don't know.
你设计的时候……嗯,我也说不好。
[1:09:08] Gergely
I want to push you on this.
这一点我想追问你一下。
[1:09:09] Maggie
Yeah. What I I keep thinking this like if tomorrow I keep trying to write design skills that tell the agents exactly my design preferences which won't be universal. Like I have preferences about how much padding I like between a border and a and an element, right? And that's not everyone's preference and it's not right for every product. But for me, I'm like there are set rules. It's this much padding is this kind of border um border shadow. Like it's pretty standard. And I've tried to write these rules, but then they don't universally apply them properly and it doesn't work. And so I always end up in there changing specific values that you would think by this point in time would have been automated away. The way that we all talk about that agents are like taking over stuff. You would think this would be like so trivial to like for them to implement like a certain kind of whatever it is opacity level on a border. Um so I kind of think like if I woke up tomorrow and they just the skill just worked or like the agents just had enough context and they just designed exactly to my specs. I wonder if I would be like oh all the fun bit is gone. like is it satisfying to have like a gorgeous inner face appear in front of me, but I didn't I didn't do anything to make it. I'm not sure. I almost I also think about this with like um interior design stuff. Have you been on Pinterest anytime in the last like 2 years?
嗯。我一直在想这个:要是明天……我一直在尝试写一些设计类 skill,把我的设计偏好原原本本地告诉 agent,而这些偏好不会是普适的。比如边框和元素之间留多少 padding(内边距),我是有偏好的,对吧?这不是每个人都认同的偏好,也不适合每个产品。但对我来说,是有固定规则的:就是这么多 padding、这种边框、这种边框阴影,挺标准的。我也试过把这些规则写下来,但 agent 并不能在所有地方都正确应用,结果就是不管用。所以我最后总是得亲自下场,去改一些具体的数值——你会觉得到了今天,这些早该被自动化掉了。照我们大家常说的,agent 正在接管各种事情,你会以为让它们实现比如边框上某种透明度之类的东西,简直是小菜一碟。所以我有时会想,如果我明天一觉醒来,那个 skill 突然就好使了,或者 agent 突然有了足够的上下文,完全照我的规格来做设计,我会不会觉得:哦,最好玩的那部分没了。一个精美的界面出现在我面前,可我什么都没为它做,这会让人满足吗?我不确定。我也会拿室内设计这类事来想这个问题。你最近这两年上过 Pinterest 吗?
[1:10:16] Gergely
I'm familiar with it and you know my my my wife is and when when when we're decorating a new house like I remember you collecting these things. We work with an interior designer and you know my wife collected a lot of things but I I also was there and you have these kind of like we're kind of thinking like this but not quite but like when you mix this trying to explain you know like we we didn't have the tools beyond like you just take screenshots so yes don't know what print I guess
我知道它,我太太就在用。我们装修新家的时候,我记得就是在上面收集这些东西。我们请了一位室内设计师,我太太收集了很多图,不过我也全程在场。你会有那种情况:我们大概想要这样的,但又不完全是,可要是把这个和那个混搭一下……想把意思解释清楚,你懂的。我们那时候除了截图,就没别的工具了。所以,对,算是知道吧。
[1:10:43]
you know you know you know yes um is a lot of it is AI now if you get on there oh really
Maggie: 你懂的,你懂的,对。嗯,现在你上去看的话,上面很多都是 AI 生成的了。
Gergely: 哦,真的吗?
[1:10:47] Maggie
there's gorgeous rooms if you search for certain things but you look and you can kind of start to see like oh that's for sure AI that's for sure AI which is definitely problematic when there of a physical space because then you go like well the light might not be accurate or this is all just fake and they look beautiful but you kind of think like well someone didn't make that room and that's not a real room that exists so it's almost irrelevant to my interior design
你搜某些东西,会出来一些美得不得了的房间,但仔细一看,你就开始能看出来:哦,这个肯定是 AI,那个也肯定是 AI。如果图里是实体空间,这就绝对是个问题了,因为你会想:光线可能不真实,或者这全都是假的。它们看起来很美,但你会想,这个房间不是哪个人真的布置出来的,现实中也不存在这么一个房间,所以它对我的室内设计来说几乎毫无意义。
[1:11:09] Maggie
and I kind of wonder if it's like this with interfaces where like it is all objectively like looks gorgeous cuz it's been trained it's like very much like everything that was on the web that we've you know clicked thumbs up on but with interfaces if they all become extremely slick like think you take you know what's popular right now the linear and the versel aesthetic right like very minimalist, very clean, very white, very a little bit of rounded corners. If all the agents can implement that, no problem. Just like dead on, people will start to design in different ways because that will become a tell that you've just used an agent to do the design. And if you want to look like you're going to stand out, you need to have some human do something new and different. I think it gets into like design. Although it has universal basics, like is the text big enough to read? Do you have enough space around things? A lot of it is fashion. Like it's in fashion right now to look a little bit like linear. It's not in fashion to look a bit like MySpace, but it was a while ago. And there'll be in 10 years in the future, if you look like linear, you're very out of date. You look like some old p crafty piece of software and there'll be some new aesthetic that comes up. So, it's like the models can't necessarily understand that design is like within a cultural context. And that cultural context is always changing and it signals different things to people and if people read it as like, oh, they didn't care about this site cuz it's just like the bland basic code. Like Claude has a specific design language. is very like noticeable, right? Cream background, like slightly red text, like there's eyebrow text on things. Like you look at it and you're like, "Yeah, Lord generated that." No human was involved in this. Like, I don't know if I'm going to bother looking at it. So, it gets into this like the aesthetic style you pick
我还在想,界面是不是也是这样:它们客观上看起来都很漂亮,因为它就是这么训练出来的,基本上就是网上所有我们点过赞的东西。但如果界面全都变得极其精致,比如拿现在流行的来说,Linear 和 Vercel 那种美学,对吧:非常极简、非常干净、大片的白,再带一点圆角。如果所有 agent 都能毫不费力地做出来,而且分毫不差,人们就会开始换别的方式做设计,因为这种风格会变成一个露馅的信号,说明你只是用 agent 做的设计。你要是想显得与众不同,就得有真人去做点新的、不一样的东西。我觉得这就说到设计本身了:虽然设计有一些普适的基本功,比如字够不够大、看不看得清?元素周围留的空间够不够?但其中很大一部分是时尚。比如现在流行长得有点像 Linear,长得像 MySpace 就不流行了,但前些年它也流行过。再过 10 年,你要是还长得像 Linear,那就非常过时了,看起来就像个老旧过时的软件,到时候又会冒出某种新的美学。所以说,模型未必能理解,设计是处在某种文化语境当中的。而这个文化语境一直在变,它会向人们传递不同的信号。要是人们把它解读成:哦,他们根本不在乎这个网站,因为这就是一套平淡无奇的默认代码。比如 Claude 就有一套很特定的设计语言,特别好认,对吧?奶油色背景、略微偏红的文字,到处都有眉题小字(eyebrow text)。你一看就会想:「嗯,这是 Claude 生成的。」没有任何人参与过。那我都不知道自己还要不要费劲去看它。所以这就涉及到,你选的美学风格
[1:12:38]
communicates to the person viewing the product or page. And things that clearly were made by agents, I think we might start to reject out of hand. Maybe I'm I I have this thing where when it's text, when it's written text, I can immediately tell if it's AI written.
Maggie: 会向看这个产品或页面的人传达某种信息。那些一看就是 agent 做出来的东西,我觉得大家可能会开始想都不想就拒之门外。
Gergely: 可能是我……我有个特点:只要是文字,写出来的文字,我一眼就能看出是不是 AI 写的。
[1:12:52] Maggie
Oh, I cannot.
哦,我也能看出来。
[1:12:53] Gergely
But I I I can never tell if it's because I I write a lot. I also read a lot. I read a lot of, you know, like fiction. And so it it just feels off immediately. And it doesn't it's it's not just clawed. It's just the repetitiveness, the adjectives. But I can never tell for sure. Like am I the one who notices? Because you said like, "Oh, you see it's clawed." I'm not sure if I looked at a web page that I would see that it's clawed because you're you're so into this the same way I'm so into words or or non-fiction writing.
但我……我一直说不清,这是不是因为我写得多。我读得也多,读大量的小说之类的。所以 AI 写的东西我一读马上就觉得不对劲。而且也不光是 Claude,就是那种重复感、那堆形容词。但我始终没法完全确定:是不是只有我注意得到?因为你刚才说「哦,你看,这是 Claude 做的」,我不确定自己看一个网页时能不能看出它是 Claude 做的,因为你对这方面太在行了,就像我对文字、对非虚构写作那么在行一样。
[1:13:24] Maggie
Yeah.
对。
[1:13:25] Gergely
So I I I do wonder if if maybe we're we're having to as an expert you can always tell but the experts are always a small percentage of population. We don't know but but I do agree with you that it is predictable in ways that humans are are luckily not I guess.
所以我确实在想,也许我们……作为专家,你总能看出来,但专家永远只占人群的一小部分。我们也说不准。不过我确实同意你说的:它在某些方面是可预测的,而人类幸好不是这样,我想。
[1:13:39] Maggie
Yeah. Like I definitely noticed the writing one too cuz I'm the same I'm a writer. I love writing and the minute I hit any sentence that is like remotely like yeah just like close tab never mind and then and even like going back and reading you know non-fiction books that like were really like not written a long time ago. You go back and read a book written 50 years ago and just the opening is so refreshing. You're like oh these are such novel words like there's none of this like if this then that or it's not X it's Y. There's not a single bit of it to be seen. you just like breathe in like original human writing and it's so refreshing that you go yeah I can't stand to read anything that's agent contrived
对。写作这块我也绝对能察觉,因为我跟你一样,我也是个写作者。我热爱写作,只要读到哪句话有一丁点那种味道,我就:得,直接关掉标签页,算了。甚至回头去读那些很久以前写的非虚构书——你回去读一本 50 年前写的书,光是开头就让人耳目一新。你会觉得:哇,这些用词真新鲜,完全没有那种「如果这样,那么那样」,或者「不是 X,而是 Y」的句式,一丁点都看不到。你就像呼吸到了原汁原味的人类文字,清新到让你觉得:没错,任何 agent 硬凑出来的东西我都读不下去了。
[1:14:16] Gergely
speaking of original writing and and human writing you talked about concept of a digital garden what is a digital garden
说到原创写作、人类的写作,你谈过「数字花园(digital garden)」这个概念。什么是数字花园?
[1:14:23] Maggie
it's a blog but with some extra rules attached so it's a blog where every piece you put up does not have to be finished as long as you clearly signal to the audience it's not so it's a blog that you grow over time so you can put a piece up that's half done and then update it data you have like an updated that date and I usually will I I communicate it with three different stages my posts go through. So I have seedlings budding and evergreen like very in the gardening metaphor. So I can put up something that is like a halffinish thought and mark it as a seedling and then like come back to it later and finish it up or fix it. Writing in this way has made me allowed me to publish much more than I ever would have otherwise. Like I have perfectionistic tendencies. This was very much a counter to that where of course I want some of my stuff to be my best work, my most polished, but it's completely unrealistic. I would never put anything up if that were the case. So working in this way really freed me. I mean, I started my garden in like 2020, I think. So it's not been that long, but I've written a fair amount, more than most people have blog posts on their website because some of them are frankly like three paragraphs long.
它就是博客,只不过附带了一些额外的规则。在这种博客上,你发的每一篇都不必是完成品,只要你向读者清楚标明它还没写完就行。所以它是一个随时间慢慢生长的博客:你可以把写了一半的东西发出来,之后再更新,文章上会带一个「更新于」的日期。我通常会……我用三个阶段来标示文章所处的状态:幼苗(seedling)、抽芽(budding)和常青(evergreen),完全沿用园艺的比喻。所以我可以把一个想了一半的想法发出来,标成幼苗,之后再回来把它写完或者改好。这样写作让我发表的东西比原本多得多。我有完美主义倾向,而这恰好是对它的一种抵消:我当然希望自己有些东西是最好的作品、打磨得最精致的,但要篇篇如此完全不现实,真那样的话,我什么都发不出来。所以这种工作方式真的解放了我。我的花园大概是 2020 年开始的吧,所以时间不算长,但我写了不少,比大多数人网站上的博客文章都多,因为说实话,有些篇只有三段那么长。
[1:15:29] Maggie
Yeah. or they have some of them I have big long essays that have taken me a long time to write but halfway through the essay you'll hit something that says draft in progress and everything below that point is pretty rough. One of these I started 3 years ago every time I have like some free time I go back to it I like finish one more paragraph I like move the little draft notification down. It like allows me to work in public, which I also think helps like people kind of get to see behind the the garage door a little bit because often the notes below the draft point are like bullet points or like oh I should say something about X in here. I'll just kind of put it on the website. As long as it's marked appropriately, I think it's fine. It's about this like contract between you and the reader. As long as you're communicating to them that these are like rough notes I haven't finished, that's okay. as long as you're not saying like this is my best finished work that I feel like people read it in the right spirit.
对。或者说,有些是我花了很长时间写的长文,但读到一半,你会碰到一处写着「草稿进行中」,从那往下的内容都相当粗糙。其中有一篇是我三年前开始写的,每次有点空闲时间,我就回去再写完一段,然后把那个小小的草稿提示往下挪一挪。这让我可以公开地工作,我觉得这也能让大家稍微看到一点「车库门后面」的样子,因为草稿标记下面的笔记往往就是些要点列表,或者「哦,这里我应该讲讲 X」之类的,我就这么直接放到网站上。只要标注得当,我觉得就没问题。这关乎你和读者之间的一种约定:只要你跟他们说清楚,这些是我还没写完的粗糙笔记,那就没关系。只要你没宣称「这是我最好的完成之作」,我觉得大家就会以正确的心态去读它。
[1:16:16] Gergely
Somewhat related to this again just going away from from from AI you also talked about barefoot developers and homecooked software.
跟这个也算有点关系,再次先把 AI 放一边:你还谈过赤脚开发者(barefoot developers)和家常软件(home-cooked software)。
[1:16:26] Maggie
Yeah.
对。
[1:16:27]
What what what are barefoot developers? So this was I'm not sure I remember what year this is. It might be 2024 which feels like an eternity ago. Was not that long ago. This was at the local first conference in Berlin in 2024. I did this talk. Yeah. Um, homecooked software and barefoot developers. Home-cooked software is a phrase that comes from Robin Sloan, which is software that you make for you and your family in the way you would make a home-cooked meal. Yeah.
Gergely: 什么……什么是赤脚开发者?
Maggie: 这是……我都不太记得是哪一年了,可能是 2024 年,感觉像是上辈子的事了,其实也没过去多久。那是 2024 年在柏林的 Local-First 大会上,我做了这场演讲,对,叫《家常软件与赤脚开发者》。「家常软件」这个说法来自 Robin Sloan,指的是你为自己和家人做的软件,就像你给家里人做一顿家常饭那样。对。
[1:16:50] Maggie
So, it's about this app that he built for his family where they send each other little like video notes and it's like it's not on anyone else's server. He doesn't have to pay for it. It's not managed by some big company. And this is the way more software should be. There's lots of little pieces of software we can build for ourselves that benefit our lives and our families. And it doesn't have to be like $2.99 on the app store or sell my data in exchange for this software. And I made this um this case at this um conference that I expect to see an explosion of this with language models and okay the writing was already on the wall. I don't think it was that crazy of a prediction, but we were still more in the early days. We didn't have agents yet. But now of course it's like totally happened. There's like personal software everywhere. Everyone's building their own recipe manager and their own household app and their own gym app and like there's all these great use cases that people can just make the software to be what they want without having to download a a bog standard version of it. But I extended this concept by saying okay homecooked software is for you and your family. But there's another concept that I call barefoot developers that comes from in Mauis China they had this thing called barefoot doctors where they took peasants from rural villages and trained them up with basic medical training like giving vaccinations you know
这个说法讲的是他给家人做的一个 app,一家人用它互相发些小视频留言,它不放在任何别人的服务器上,他不用为它付钱,也不归哪家大公司管。更多的软件本就应该是这样。有很多小软件,我们可以为自己做,让自己和家人的生活变得更好。它不必是 App Store 上卖 2.99 美元的东西,也不必拿我的数据去换这个软件。我在那次大会上提出了这个观点:我预计随着语言模型出现,这类软件会迎来爆发。好吧,其实当时苗头已经很明显了,我不觉得这是个多疯狂的预测,但那时候还比较早期,我们还没有 agent。可现在当然已经完全成真了,个人软件遍地都是。人人都在做自己的菜谱管理工具、自己的家务 app、自己的健身 app,有这么多很棒的使用场景,人们可以直接把软件做成自己想要的样子,而不用去下载一个千篇一律的标准版。不过我把这个概念往外延伸了一步:家常软件是给你和你家人用的,但还有另一个概念,我称之为「赤脚开发者」。它源自毛泽东时代的中国,当时有一种叫「赤脚医生」的做法:从农村挑选农民,给他们做基础的医疗培训,比如打疫苗,你知道的……
[1:17:53] Maggie
uh administering antibiotics um and then distributed them out to the villages so that you would improve healthcare for everyone and it was a wildly successful program like across the board improved health as you would expect people who can't get to a hospital and I think we need the same concept for developers because so far developers are extremely expensive as a profession and like extremely skilled But there's lots of people with lots of needs who would maybe need little software built for like their a lotment garden or their like street, but they have some problem they need solved and like Google Sheets doesn't really cut it. Like they can't really just do like a Google doc. They want something like maybe managing a schedule or like managing inventory and like either they would have to all like raise money together and like fund it and pay some piece of software that doesn't quite fit their needs but does an okay job or maybe trades their data for this or if they had someone who was let's say this barefoot developer type who's like kind of a power user someone who might use notion and air table in an old world now can just use an agent or language model and build them the software they need for like not many tokens like pretty cheap. They don't have to read the code. As long as it works, like as long as they verify, it's fine.
……打抗生素之类的,然后再把他们派回各个村子,这样就能改善所有人的医疗条件。这个项目极其成功,全面改善了大家的健康状况——对那些去不了医院的人来说,这也在意料之中。我觉得开发者也需要同样的概念。因为到目前为止,开发者作为一个职业非常昂贵,技能门槛也极高。但有很多人有各种各样的需求,他们可能需要一点小软件,比如给自家的社区菜园、或者自己住的那条街用。他们有个问题要解决,而 Google Sheets 又不太够用,光靠一个 Google Doc 也搞不定。他们想要的可能是管理日程安排,或者管理库存之类的东西。要么大家得一起凑钱,出钱买一款不太贴合需求、但也凑合能用的软件;要么就拿自己的数据去换。可如果他们身边有这么一个人——就叫他赤脚开发者这种类型吧——算是个 power user,放在过去可能就是会用 Notion 和 Airtable 的那种人,现在只要用一个 agent 或者语言模型,就能给他们做出需要的软件,花不了多少 token,挺便宜的。他们不用读代码。只要东西能用——只要他们验证过——就没问题。
[1:18:56] Gergely
I mean, what what reminds me a little bit of the web masters.
我是说,这让我有点想起当年的网管(webmaster)。
[1:18:58] Maggie
Yeah.
嗯。
[1:19:00] Gergely
So, so back it was a long time ago, but in in the '9s, maybe mid '90s, late '9s, the web masters were just power user administrators who would administer, for example, a school's
就是说,那是很久以前的事了,在 90 年代,大概 90 年代中后期吧,网管其实就是一些 power user 型的管理员,负责管理比如一所学校的
[1:19:12] Maggie
Yeah.
嗯。
[1:19:12] Gergely
Windows installations. And and they were not the highest paid. I'm not sure how they got trained, but but at some point, every school had a web master. Sometimes they were there were volunteers. sometime they were they were paid. Companies had their web masters and they would often operate the web pages which was again more involved way more involved than than later of course that's why there was a role and then like patch things and it it was all kind of you know there were
Windows 系统。他们的收入并不算高,我也不太清楚他们是怎么培训出来的,但到了某个时候,每所学校都有一个网管。有时候是志愿者,有时候是拿工资的。公司也有自己的网管,他们往往还负责运营网页——当然,那时候这活儿比后来复杂得多,这也是为什么会有这么一个专门的岗位——然后还要给各种东西打补丁,总之就是,你知道的,会有
[1:19:35] Gergely
they might forget to patch stuff or they might not know and there were like forums web master forums where they helped each other and and it was kind of like because what you talked about the the China example that was of course a government program with with the goal but this was just a grassroots movement.
他们可能会忘了打补丁,或者压根不知道要打;然后还有论坛,网管论坛,大家在上面互相帮忙。这有点像……因为你刚才讲的中国那个例子,那当然是一个有明确目标的政府项目,而这个纯粹是一场草根运动。
[1:19:50] Maggie
Yeah. Yeah. And I think that needs to happen again. Like we definitely have these people to some degree. Like there's like a techie person in each community who kind of people go to for help. But I think these people need more like support and tools. And I mean that in the sense of building like libraries or frameworks for them because I think there's a whole bunch of people now coming in as vibe coders or whatever, right? Like building apps without looking at the code. But you know they're hitting terrible security like foundations and like they're probably like handling the data wrong. They're going to like lose their database at some point. like they don't have good foundations to build on because they're just telling the agent like, "Hey, make me an iOS app that does X, but they don't really understand engineering." You know, I would advocate for something like something that is I think it should be local first because as a philosophy it matches up with the need. It's like data should be local. You can just sync it between machines. You don't really need a database in the cloud. There's no point to that. Like a little bit of data sovereignty. They own the data. No one else can buy it or trade it or get access to it. I just feel there should be much stronger like local first frameworks that give you these good good solid principles in place good security good data persistence make it easy for these barefoot developers to build like maybe some good interface primitives on top it's maybe something like the next version of air table would be this is what I would hope
对,对。我觉得这件事需要再来一遍。某种程度上,我们肯定已经有这样的人了——每个社区里都有那么一个懂技术的人,大家遇到问题都会去找他帮忙。但我觉得这些人需要更多的支持和工具。我指的是为他们构建库或者框架,因为我觉得现在有一大批人以 vibe coder 之类的身份涌进来,对吧?就是不看代码就做应用。但你知道,他们在安全这类地基层面问题一大堆,数据很可能也处理得不对,迟早有一天会把数据库弄丢。他们没有好的地基可以依托,因为他们只是跟 agent 说:「嘿,给我做个能干 X 的 iOS app」,但他们并不真正懂工程。我会倡导这样一种东西——我觉得它应该是本地优先(local-first)的,因为作为一种理念,它跟这种需求正好对得上:数据就该放在本地,在几台设备之间同步就行,根本不需要云端数据库,那没什么意义。算是一点数据主权吧:数据归他们自己所有,别人既买不走、也没法拿去交易,更访问不到。我就是觉得应该有强大得多的本地优先框架,帮你把这些扎实的好原则落实到位:好的安全性、好的数据持久化,让这些赤脚开发者能轻松地在上面构建,也许再在上层配一些好用的界面原语。下一代 Airtable 也许就会是这个样子——这是我所希望的。
[1:21:00] Gergely
what advice would you have for engineers to to learn from designers when when they have access to working with a with a designer work learn from also collaborate better with
对于有机会跟设计师共事的工程师,你有什么建议?怎么向设计师学习,同时也跟他们协作得更好?
[1:21:11] Maggie
yeah I I think it's in the same way that I'm advocating that designers aren't shouldn't be afraid to get involved in engineering now vice versa right like in the same way that a designer can sit down with codeex or claude or co-pilot and be like hey explain the back end to me like just not the details the shape of it I think in the same way a developer can sit down with an agent and be like okay I need to design a sidebar like what are the principles of good sidebars okay I have my blog like teach me about typography like you now have like a very patient tutor who's just going to sit there and be like Hey, this is how where when you would vary line height. Here's exactly how many characters you should fit on a line. Like they can just teach you and you know, as long as you're willing to learn and you want to expand into the design skills. I think before it was very hard to learn these things. You had to be on a design team, especially product design stuff where it's like how do you interview users? How do you do like a usability test? Like not generally available information really except for some books. But now you sit down with an agent, you're like, "Hey, here's here's the data I've got. give me some ideas for possible interfaces that would represent it. Well, they're they're decent at that conceptual stuff, even if they don't always get the the interface right.
嗯,我觉得就像我主张设计师现在不该害怕参与工程一样,反过来也一样,对吧?就像设计师可以坐下来打开 Codex、Claude 或者 Copilot,说「嘿,给我讲讲后端——不用讲细节,讲讲它大概的轮廓」;同样,开发者也可以坐下来跟 agent 说:「好,我要设计一个侧边栏,好的侧边栏有哪些原则?」或者「好,我有个博客,教我点排版知识吧」。你现在等于有了一位非常有耐心的家教,它就坐在那儿跟你讲:「嘿,什么情况下该调整行高,是这样的;一行具体该放多少个字符,是这样的。」它们就能直接教你——只要你愿意学、想把自己的能力扩展到设计技能上。我觉得以前学这些东西非常难,你得待在设计团队里才行,尤其是产品设计那一套:怎么做用户访谈?怎么做可用性测试?除了几本书,这些信息外面基本找不到。但现在你坐下来跟 agent 说:「嘿,这是我手上的数据,给我出几个能呈现它的界面点子。」它们在这种概念层面的东西上还挺不错的,哪怕界面本身不一定总能做对。
[1:22:16] Gergely
Going back to your anthropology roots, what are things that us engineers, people building software could take inspiration or or learn from anthropology like methods, approaches, things that have really served you well?
回到你人类学出身这件事:我们这些工程师、做软件的人,可以从人类学里汲取哪些灵感、学到些什么?比如方法、思路,那些真正让你受益的东西?
[1:22:32]
Yeah. Yeah. Because I feel like I look at everything a little bit through the lens of anthropology or I try to. It's like a it's like a you know, pair of glasses. you can kind of put on in the same way you can be like I'm going to look like look at this like an engineer but if I look at things like an anthropologist you think about like what are the unspoken cultural rules going on in this interaction or this context or this problem and especially in the context of engine of of software like sure maybe you're building a a database that you're building it for users in a in a cultural context right like they have assumptions about how they decide something is trustworthy they have assumptions about how they decide that something is worth their time or like or like how a flow should though and this is and it's all culturally contained like it depends also on like the intern how international your audience is and who you're designing for but like there are cultures where like time flows from from right to left right or from up to down but we assume in the west you know time froze flows left to right um but that's not universal everywhere I think just like reading a little bit of cultural anthropology and understanding how varied people's worldviews can be like like some cultures see not see different colors but categorize colors differently in a way that makes them see them differently. Like they might see blue and green as actually one unified color. And if you're designing an interface, like not that that necessarily directly applies, but I think it's understanding there's a broad range of ways humans can interpret something. And you know, if you're if you're building tools for humans, there might be some way you could like teach them to see the world differently through the thing you're building as well, like change their perspective on like how they how they interpret reality. And then in anthropology you
Maggie: 对,对。因为我觉得我看什么都会带一点人类学的视角,至少我会努力这样做。它就像一副眼镜,你可以戴上——就像你可以说「我要像工程师那样来看这件事」一样。但如果你像人类学家那样看事情,你会去想:在这次互动、这个情境、这个问题里,有哪些没说出口的文化规则在起作用?尤其放在软件的语境里:没错,你也许在做一个数据库,但你是为身处某种文化语境的用户做的,对吧?他们对「怎么判断一个东西值得信任」有自己的预设,对「怎么判断一件事值不值得花时间」、或者一个流程该怎么走,也都有预设。这些全都是被文化框定的,也取决于你的受众有多国际化、你在为谁设计。比如有些文化里,时间是从右往左流的,或者从上往下,而我们在西方默认时间从左往右流,但这并不是放之四海而皆准的。我觉得哪怕只是读一点文化人类学,去理解人们的世界观可以有多么千差万别——比如有些文化并不是看到的颜色不一样,而是给颜色分类的方式不一样,结果让他们看颜色的方式也不一样了:他们可能会把蓝和绿看成同一种颜色。如果你在设计界面,这倒不一定能直接用上,但我觉得关键是要明白,人类解读一件事的方式非常多样。而且,如果你是在为人类做工具,也许还有办法通过你做的东西,教他们换一种方式看世界,改变他们解读现实的视角。
Gergely: 然后说到人类学,你
[1:24:02] Gergely
said that you know anthropologists would one thing that would they would do they would the traditional anthropologists would live with natives and and be embedded in them. Is that something that maybe now that AI is you know like it's making code a bit easier as engineers I think it's pretty clear that an engineer becomes more valuable the more they take on the other parts of the business the more empathy the understanding. Could could it be just an idea when you have the opportunity just you know embed yourself with customers?
说过,人类学家会做的一件事——传统的人类学家会跟当地人生活在一起,深深融入他们当中。现在 AI 让写代码变得容易了一些,这会不会也是我们工程师可以做的事?我觉得很明显,一个工程师越是能承担业务的其他部分、越有同理心、越能理解对方,就越有价值。那会不会可以这样:有机会的时候,干脆把自己嵌到客户当中去?
[1:24:29] Gergely
Yeah. become a customer. I mean, this used to be the thing, right? Like Amazon had their customer obsession, which also starts with understanding the customer, but I guess this might be very natural as someone who's anthropologist, which is like
对,去当一回客户。我是说,这以前就是大家推崇的做法,对吧?比如 Amazon 讲「客户至上」(customer obsession),那也是从理解客户开始的。不过我猜,对人类学出身的人来说,这可能再自然不过了,也就是——
[1:24:41]
go talk to people, go and try to be one of them, whoever you're building with.
去跟人聊,去试着成为他们中的一员——不管你是在和谁一起做东西。
[1:24:45] Maggie
There's a good point that like engineers are about to have more free time in a certain way. I know there's an infinite number of engineering problems to solve and then it's like maybe we solve them better, you know, by having with that extra time. But a big part of this is yeah, you could expand into more of the design side and past the interface is is really like the user research side and that is like go fully understand the domain you're designing or building for and like what real world context are people using it in? Like when are they pulling out your app? Like in a factory, are they on a in a tube? like like I don't know a little bit of like understanding context of use is a big thing that user researchers do and then understanding the moment when someone reaches for your product versus like reaching for a different product like when do they decide you're the right solution? That definitely gets into the user research side but that's a great thing for engineers to expand into if if that like appeals.
这点说得好:某种意义上,工程师马上就要有更多空闲时间了。我知道要解决的工程问题无穷无尽,那也许我们可以靠多出来的这些时间,把它们解决得更好。但这里很大一块是——对——你可以更多地往设计那边拓展,而越过界面再往前,其实就是用户研究那一块:去彻底搞懂你在为之设计、为之构建的那个领域,搞清楚人们是在什么样的真实场景里用它?他们什么时候会掏出你的 app?是在工厂里,还是在地铁上?我也说不好,理解使用情境是用户研究员的一大块工作;然后是理解那个时刻——一个人伸手去拿你的产品、而不是别的产品的那一刻:他们在什么时候认定你就是对的解决方案?这肯定就进入用户研究的范畴了,但如果工程师对这个感兴趣,这是个非常好的拓展方向。
[1:25:33] Gergely
And as as closing, what books would you recommend ones that you enjoyed reading and why?
最后收个尾:你会推荐哪些书?你自己读得很享受的,以及为什么推荐?
[1:25:38] Maggie
One of my favorites that I give to most people is called Addiction by Design. So, it's about people addicted to gambling machines in Las Vegas, but it's an anthropologist doing it. And she talks about both like living among these people and their experiences, but also the machine designers. Like, how do you design a machine that is so addictive that someone sits at it for 12 hours straight? It's like a really fascinating thing. And how are like gambling casinos designed to have no windows? So, there's like no time around you as as you like sit at this machine. It's by Natasha Daw. Uh, and I I read it in university and I I love it. It's it's a it's a total mix of like cultural anthropology, participant observation, and also machine design and engineering and like how do you design addictive systems, which of course you read it and then you think about phones and Instagram and you reflect a little bit on like what are these systems we're building for people.
我最喜欢的书之一、也是我送给大多数人的,叫《Addiction by Design》。它讲的是拉斯维加斯那些沉迷赌博机的人,但写它的是一位人类学家。她既写了自己生活在这些人中间、他们的亲身经历,也写了那些设计赌博机的人。比如,你要怎么设计一台机器,让它令人上瘾到有人能在它跟前连坐 12 个小时?这真的非常引人入胜。还有,赌场为什么都设计成没有窗户?这样你坐在机器前的时候,周围就完全感觉不到时间。作者是 Natasha Dow Schüll。我是大学时读的,特别喜欢。它完全是个混合体:文化人类学、参与式观察,还有机器设计与工程,讲怎么设计让人上瘾的系统。当然,读完之后你就会想到手机、想到 Instagram,也会稍微反思一下:我们到底在给人们造些什么样的系统。
[1:26:30] Gergely
Maggie, thanks so much. This was very interesting.
Maggie,非常感谢,这次聊得特别有意思。
[1:26:33]
Yeah, thanks for having me. Really fun. [laughter] This was a very visual episode, so I hope you were able to watch it over video, especially the parts where Maggie showed her sketches in a notebook. And this was one of the most interesting parts of this episode for me. Even as Maggie spends her days prototyping the future of Agentic tools, she starts her design process with pen and paper. Her reasoning is that agents cannot see, but us humans can. And I have to wonder, is it only true for visual stuff?
Maggie: 嗯,谢谢邀请,真的很好玩。(笑)
Gergely: 这期节目视觉内容特别多,希望你是看视频版的,尤其是 Maggie 展示她笔记本里那些草图的部分。对我来说,这也是这期节目里最有意思的部分之一:Maggie 每天都在为 agentic 工具的未来做原型,可她的设计流程却是从纸和笔开始的。她的理由是:agent 看不见,但我们人类看得见。我不禁在想:这只适用于视觉类的东西吗?
[1:26:58]
[music]
(音乐)
[1:26:58] Gergely
I mean, when I think back to my most productive brainstorming sessions with engineers, it was usually in front of a whiteboard drawing stuff [music] where we drew out our ideas about the system and the components. Another extremely cool trick from Maggie is how she uses AI to generate prototypes with sliders to change parameters and change the design. She calls it a build your own Figma. And we did a live demo with the constellation animation that she played around with. This was so darn cool. You get [music] Figma-like tools dynamically built for you. It's also pretty incredible that we can do this with agents in a matter of minutes. Just wow. Finally, I appreciated how Maggie was honest about how she feels about the design craft. [music] It's cool that agents make her work faster, but she said she's not sure she'd love if an agent just spit out a perfect design. And yet, agents are getting better at design. It feels to me that this is kind of how I feel about code. It's great that the agent can generate good code, but it was something I liked being good at and I was good at it. Now, [music] I don't write the code, but it does feel more transactional. I feel a bit less connected to the code and the creation of the code itself.
我是说,回想我跟工程师们最高效的那些头脑风暴,通常都是在白板前画东西,把我们对系统和各个组件的构想画出来。Maggie 另一个超酷的技巧,是用 AI 生成带滑块的原型,拖动滑块就能调参数、改设计。她管这叫「自己造一个 Figma」(build your own Figma)。我们还现场演示了她拿来把玩的那个星座动画,真是酷毙了:类似 Figma 的工具,动态地为你现造出来。而且借助 agent,几分钟就能做到,也真挺不可思议的。简直了。最后,我很欣赏 Maggie 坦诚地聊了她对设计这门手艺的感受。agent 让她干活更快,这很酷,但她说,如果 agent 直接吐出一个完美的设计,她也不确定自己会不会喜欢。可 agent 在设计上确实越来越强了。在我看来,这有点像我对代码的感受:agent 能生成好代码,这很棒,但把代码写好曾经是我喜欢的事,而且我也确实擅长。现在代码不是我写了,感觉确实更像是一种交易。我跟代码、跟创造代码这件事本身,都少了一点联结。
[1:28:04] Gergely
[music] For design agents are not there yet, but I didn't sense that Maggie wants to let go of that designer in her. I wonder if one thing to [music] learn from her for us devs is that we should also have a notebook to make sketches of ideas, not just UIs, but architectures [music] and systems. I don't know, but I might give it a go. At least it will make me feel less that I'm dependent on agents and I'll have some AI free space, if you will. Thanks for listening and let me know how you like this less conventional episode. Thanks, and I'll see you in the next
在设计上,agent 还没到那一步,但我并没感觉到 Maggie 想放下她心里的那个设计师。我在想,我们这些开发者能从她身上学到的一点,或许是:我们也该备一个笔记本,把想法画成草图——不只是 UI,还有架构和系统。我也说不准,但我可能会试一试。至少这会让我少一点「离不开 agent」的感觉,给自己留出一块——姑且这么说吧——没有 AI 的空间。感谢收听,也欢迎告诉我你觉得这期不太寻常的节目怎么样。谢谢,我们下期……