【AI开发】别浪费时间写规格 · 直接用AI做原型
共 2 集
剧集目录
| 集 | 标题 | 时长 |
|---|---|---|
| P1 | 【AI开发】别浪费时间写规格 · 直接用AI做原型 中英字幕 | 10:59 |
| P2 | 【AI开发】别浪费时间写规格 · 直接用AI做原型 无字幕 | 10:59 |
P1 · 【AI开发】别浪费时间写规格 · 直接用AI做原型 p01 中英字幕 (P1)
字幕摘录
| 时间 | 英文 | 中文 |
|---|---|---|
| 0:00 | There's something that a lot of people do | 很多人都会这么做的 |
| 0:01 | when they're working with AI to create code | 当他们与AI合作创建代码时 |
| 0:03 | that totally drives me crazy. | 这完全让我疯了。 |
| 0:06 | And it's sort of something that I've been railing against | 这有点像我一直在反对 |
| 0:09 | for a while now. | 有一阵子了 |
| 0:11 | The thing that I've noticed is people tend to think | 我注意到的是 人们总觉得 |
| 0:14 | I need to create a spec for AI. | 我需要为AI创建一个Spec. |
| 0:16 | I need to create a plan, right? | 我需要创造一个计划,对不对? |
| 0:18 | Plan mode, spec-driven development. | 计划模式 光谱驱动开发. |
| 0:20 | I need to put all of my efforts | 我要全力以赴 |
展开字幕全文(295 条)
| 序号 | 英文 | 中文 |
|---|---|---|
| 1 | There's something that a lot of people do | 很多人都会这么做的 |
| 2 | when they're working with AI to create code | 当他们与AI合作创建代码时 |
| 3 | that totally drives me crazy. | 这完全让我疯了。 |
| 4 | And it's sort of something that I've been railing against | 这有点像我一直在反对 |
| 5 | for a while now. | 有一阵子了 |
| 6 | The thing that I've noticed is people tend to think | 我注意到的是 人们总觉得 |
| 7 | I need to create a spec for AI. | 我需要为AI创建一个Spec. |
| 8 | I need to create a plan, right? | 我需要创造一个计划,对不对? |
| 9 | Plan mode, spec-driven development. | 计划模式 光谱驱动开发. |
| 10 | I need to put all of my efforts | 我要全力以赴 |
| 11 | into making this extremely detailed spec | 来制作这个极其详细的光谱 |
| 12 | so that when I get some outputs from the AI, | 所以当我得到AI的一些产出, |
| 13 | those outputs are going to look like the spec. | 这些产出将看起来像规格。 |
| 14 | I'm going to have specified everything up front | 我会把前面的事都说清楚的 |
| 15 | so that I can just perfectly nail it. | 这样我就可以完全钉住它。 |
| 16 | And in this impulse, what they forget to do | 在这种冲动下,他们忘记了做 |
| 17 | is they forget they can actually write code. | 他们忘了他们可以写代码 |
| 18 | You can write code while you're working towards a spec. | 你可以写代码,而你的工作 一个Spec。 |
| 19 | Prototyping and spikes are things that we've had around | 原型和钉子是我们曾经有过的 |
| 20 | since the days of Agile, right? | 自从Agile时代,对不对? |
| 21 | I mean, I suppose these are still the days of Agile. | 我的意思是,我想这些仍然是 Agile 的日子。 |
| 22 | Agile is still extremely popular, | Agile仍然非常受欢迎, |
| 23 | still extremely influential, | 仍然影响很大 |
| 24 | but people just aren't prototyping anymore. | 但人们只是不再原型了。 |
| 25 | And so as part of my skills repo, | 因此,作为我的一部分技能回波, |
| 26 | I'm trying to turn this around. | 我试图扭转这一切。 |
| 27 | I have a prototype skill. | 我有一个原型技能。 |
| 28 | A prototype is throwaway code that answers a question. | 一个原型是解答一个问题的丢弃代码. |
| 29 | Everyone is saying that code is cheap | 大家都说密码便宜 |
| 30 | and it's partially true and partially I hate that phrase, | 部分地是真的,部分地我讨厌这句话, |
| 31 | but the thing that is cheap | 但便宜的东西 |
| 32 | is the cost of producing code has gone way, way down. | 是制作代码的成本 已经走了很多,还很低。 |
| 33 | So producing prototypes, producing quick | 所以,生产原型, 生产快 |
| 34 | kind of throwaway spikes has never been cheaper | 那种丢掉的钉子从不便宜 |
| 35 | and never been a more effective tool. | 并且从未成为更有效的工具。 |
| 36 | In this video, I'm going to introduce this prototype skill. | 在这部视频中,我将引入这种原型技能. |
| 37 | I'm going to talk about when you should use it, | 我要谈谈你什么时候该用它 |
| 38 | what it can be used for, | 它可以用来做什么, |
| 39 | and also how it fits into my new wayfinder skill. | 以及它如何适合我的新寻路技巧。 |
| 40 | But first I want to explain the concept of fidelity, | 但首先我要解释忠诚的概念 |
| 41 | high fidelity and low fidelity. | 高度忠诚和低忠诚。 |
| 42 | Whenever you're talking about designing something, | 当你在谈论设计什么, |
| 43 | you're going to have questions in your mind | 你会有问题在你的脑海里 |
| 44 | that need to be resolved somehow. | 这个问题需要解决。 |
| 45 | Some of the questions are going to be really basic, | 有些问题会很基本 |
| 46 | like the basic frame of the thing you're building. | 就像你建造的东西的基本框架。 |
| 47 | When the modal opens up, | 当模式打开时, |
| 48 | it should have a cancel button and a confirm button, | 它应该有一个取消按钮和一个确认按钮, |
| 49 | simple stuff. | 很简单 |
| 50 | With simple stuff like that, | 简单的东西, |
| 51 | you don't need a lot of high fidelity stuff | 你不需要很多高忠诚的东西 |
| 52 | to answer the question. | 回答问题。 |
| 53 | That can just be resolved in discussion really. | 这可以通过讨论解决。 |
| 54 | But let's say that the modal, | 但是,让我们假设模式, |
| 55 | when it opens up under some circumstances, | 当它在某些情况下打开, |
| 56 | it needs to show some data. | 它需要显示一些数据。 |
| 57 | You might need to go a little bit of higher fidelity on that. | 你也许需要更诚实一点 |
| 58 | How would you display the data? | 如何显示数据? |
| 59 | It's often hard when you're planning out a spec | 当你计划一个谱子时 经常很难 |
| 60 | to figure out exactly how things should look | 来弄清楚事情应该如何发展 |
| 61 | and how things should look, | 和事情应该如何看, |
| 62 | how they should behave under certain circumstances, | 在某些情况下他们应该如何行为, |
| 63 | making sure that you've road tested all of this idea | 确定道路测试了这一切想法 |
| 64 | in kind of semi working code. | 半工作代码 |
| 65 | That means you need a higher fidelity. | 这意味着你需要更高的忠诚度。 |
| 66 | Some questions really can only be answered by prototyping. | 有些问题真的只能通过原型来回答. |
| 67 | And because producing these prototypes | 因为生产这些原型 |
| 68 | is now cheaper than it ever has been before, | 现在比以前便宜多了 |
| 69 | I tend to want more of my discussions at a higher fidelity. | 我倾向于希望我更多的讨论 在更高的忠诚。 |
| 70 | Obviously the basic stuff, | 显然,基本的东西, |
| 71 | I'm gonna just resolve through discussion. | 我要通过讨论解决 |
| 72 | So the agent is gonna ask me some questions, | 所以经纪人会问我一些问题 |
| 73 | probably through a grilling session. | 可能通过烤肉会。 |
| 74 | And then I'm gonna say, okay, yeah, this sounds good. | 然后我要说,好吧,是的,这听起来不错。 |
| 75 | But then as soon as we get anything that I think, | 但一旦我们得到任何我想的东西 |
| 76 | oh, I really need to see this in action, | 哦,我真的需要看到这一点 在行动中, |
| 77 | or I need to feel it in action, look at it working, | 或者,我需要感觉它在行动, 看它的工作, |
| 78 | I'm gonna ask for a prototype. | 我要问一个原型。 |
| 79 | Prototyping is a part of my new Wayfinder skill, | 造型是我的新手技艺的一部分 |
| 80 | which is a skill that allows you | 这是一种能让你 |
| 81 | to plan a huge chunk of work. | 计划一大笔工作。 |
| 82 | 在Wayfinder上有一段特写视频 | |
| 83 | Now, Wayfinder, what it does is it tackles | 现在,Wayfinder,它所做的就是解决 |
| 84 | a huge chunk of work and it splits it up | 大量的工作,它把它分开 |
| 85 | into different planning sessions. | 在不同的规划会议上。 |
| 86 | And all of these planning sessions get their own ticket | 所有这些计划会都有自己的票 |
| 87 | and there should be somewhere in here, ticket types, | 这里应该有票型 |
| 88 | just here, that tells it exactly | 就在这里,这说明 |
| 89 | what different ticket types there are. | 不同种类的票。 |
| 90 | The two that we're looking at here are the grilling type. | 我们在这里看到的两个是烧烤类型。 |
| 91 | So it's using the grilling skills | 所以是用烧烤技巧 |
| 92 | and the prototype ticket type. | 还有票型原型 |
| 93 | The default case here is the grilling type. | 这里的默认情况是烧烤类型. |
| 94 | So where you're chatting with the agent, | 你和经纪人聊天的地方 |
| 95 | figuring out the basic scope of the thing you're building. | 找出你建造的东西的基本范围 |
| 96 | But when you need to raise the fidelity of the discussion, | 但是,当你需要提高 诚实的讨论, |
| 97 | making a cheap, rough concrete artifact to react to, | 制造一种廉价的粗糙的混凝土工艺品 |
| 98 | an outline, a rough take a stub, | 一个轮廓,一个粗糙的取一个茎, |
| 99 | or UI logic code via the prototype skill, | 或UI逻辑代码 通过原型技能, |
| 100 | links the prototype as an asset, use when, | 链接原型为资产,当, |
| 101 | how should it look or how should it behave | 它应该看起来如何或应该如何行为 |
| 102 | is the key question. | 这是关键问题。 |
| 103 | 无论你是否使用Wayfinder, | |
| 104 | this gives you a really clear criteria | 这给你一个非常明确的标准 |
| 105 | for when you should reach for a prototype. | 当你需要找到一个原型。 |
| 106 | So I'm sure you're dying to see it in action | 所以,我敢肯定,你渴望看到它在行动 |
| 107 | and here it is, this is what it's done. | 在这里,这是它所做的。 |
| 108 | I've been using Wayfinder to extend my diagramming app here, | 我一直在用Wayfinder 来扩展我的图解应用 |
| 109 | 它建立在 TL Draw 上。 | |
| 110 | And I wanted a way to search through old diagrams. | 我想用一个方法 搜索旧的图表。 |
| 111 | And the data model here is quite complicated. | 这里的数据模型相当复杂。 |
| 112 | There's like diagrams and then snapshots | 有像图,然后快照 |
| 113 | of the diagram through time. | 图表。 |
| 114 | And so I wanted to build a search bar, | 所以我想建立一个搜索栏, |
| 115 | but I wasn't sure how it should look or behave. | 但我不知道它应该怎么样 或行为。 |
| 116 | So I ran prototype here and what it did | 所以我在这里运行原型 和它做了什么 |
| 117 | is it created this little picker at the bottom here. | 这是在底部创建了这个小采摘器。 |
| 118 | And this picker, if I go between it, | 和这个采摘者,如果我走在它之间, |
| 119 | it has three different options. | 它有三个不同的选择。 |
| 120 | So that's option B and that's option C. | 所以,这是选择B,这是选择C。 |
| 121 | And each one encodes a few design decisions | 每个都编码一些设计决定 |
| 122 | that I can then react to and iterate on. | 然后,我可以作出反应 和脚踏实地。 |
| 123 | So let's start by looking at A. | 因此,让我们从看A开始。 |
| 124 | I've just generated this, I've not actually looked at it yet. | 我刚刚发明了这个,我还没有真正看到它。 |
| 125 | So I get to search the diagrams and see what comes up. | 所以我可以搜索图表,看看会发生什么事。 |
| 126 | This one, okay, it's reflow in place grouped rows. | 这个,好的,它重新排成一组 |
| 127 | So it's grouping the snapshots by the name of the diagram. | 所以它用图的名字来组合快照。 |
| 128 | I really like the placing of the search box up here, | 我真的很喜欢把搜索箱放在这里 |
| 129 | but this grouping doesn't feel right to me. | 但这个团体对我不好 |
| 130 | So let's see what B is. | 所以,让我们看看B是什么。 |
| 131 | Let's search again inside model here. | 让我们再次搜索这里的模型。 |
| 132 | And okay, now on the left, we have grouping for, | 好吧,现在在左边, 我们分组为, |
| 133 | where it can filter down. | 那里可以过滤下来。 |
| 134 | Okay, that's quite nice. | 好吧,这是相当不错的。 |
| 135 | What happens if I search for something else | 如果我找别的东西怎么办? |
| 136 | and it's already, okay, so the filter resets at that point. | 并且它已经,好的, 所以过滤器重排在那个点。 |
| 137 | Now that's okay, but I wonder what C looks like. | 现在没关系,但我不知道C长什么样子。 |
| 138 | I really don't like this search diagrams thing at the top. | 我真的不喜欢上面的搜索图 |
| 139 | That doesn't look nice, but let's see what this looks like. | 这看起来不妙,但让我们看看这个样子。 |
| 140 | So let's search for model and ooh, okay. | 我们去找模特儿,好吧 |
| 141 | So now it's everything in line, no filters. | 所以现在一切都排成一行,没有过滤器。 |
| 142 | So I do actually really like this, | 所以我真的很喜欢这个, |
| 143 | but there are a few things that I don't like. | 但有些东西我不喜欢 |
| 144 | I don't like these current things. | 我不喜欢这些时事 |
| 145 | It looks like this is really technical weird thing, | 看起来这真的很技术怪怪的 |
| 146 | but the current one is showing with the diagram snapshot. | 但是现在的图是用图示显示的 |
| 147 | So I've got some kind of feedback | 所以我得到一些反馈 |
| 148 | that I wanna give to the prototype. | 我想给原型。 |
| 149 | This prototyping session took about 100,000 tokens. | 此次原型会议耗资约10万令吉. |
| 150 | So I'm actually going to compact and say, | 所以,我实际上要去压缩 并说, |
| 151 | we're gonna do some more QA on this. | 我们要多做点QA |
| 152 | Compacting at this point makes sense to me | 此时此刻的紧凑对我来说是有道理的 |
| 153 | because we kind of need to retain all of the information | 因为我们需要保留所有的信息 |
| 154 | about the prototype, | 关于原型, |
| 155 | need to retain all the design decisions that went into it, | 需要保留其中所有的设计决定, |
| 156 | but we just need to give it some feedback. | 但我们只需要给它一些反馈。 |
| 157 | So we just need to continue the conversation | 所以我们需要继续谈话 |
| 158 | in the same place in the code base. | 在同一个地方 在代码基。 |
| 159 | I should definitely do a video about the design tree | 我绝对应该做一个视频 关于设计树 |
| 160 | that I use for when I've got compact | 当我有紧身衣的时候我用它 |
| 161 | versus clear versus handoff, | 相对清晰与交接, |
| 162 | but that's one for another time. | 但这是另一个时间。 |
| 163 | Okay, now I'm gonna give some feedback. | 好吧,现在我要给一些反馈。 |
| 164 | I really like the search box of A | 我真的很喜欢A的搜索盒 |
| 165 | and I like the layout of C. | 我喜欢C的布局 |
| 166 | Okay, so I've just dictated in some more feedback | 好吧,所以我刚刚决定 一些更多的反馈 |
| 167 | and I'm gonna send it off. | 我会寄出去的 |
| 168 | So the idea of this session | 所以,这个会议的想法 |
| 169 | is I'm iterating on this prototype. | 我对这个原型很感兴趣 |
| 170 | I'm not just saying, okay, this is the best one. | 我不是说,这是最好的 |
| 171 | I'm gonna actually create some design decisions here, | 我要在这里创造一些设计决定, |
| 172 | create a super rich asset. | 创造出一个超级丰富的资产。 |
| 173 | All of these design decisions | 所有这些设计决定 |
| 174 | are then going to be encoded into the prototype | 然后被编码成原型 |
| 175 | and I'm gonna save the prototype | 我会保存原型 |
| 176 | probably on a throwaway branch. | 可能在树枝上 |
| 177 | That means that when the thing actually goes to implement it, | 这意味着,当事情实际上去执行它, |
| 178 | it's not only got a spec, | 不仅有特质 |
| 179 | it's actually got real front-end code | 它实际上有真正的前端代码 |
| 180 | that it can usually copy and paste out of it. | 它通常可以复制和粘贴出来。 |
| 181 | Now, creating these prototypes does take some time, right? | 现在,创建这些原型 需要一些时间,对不对? |
| 182 | The higher fidelity you go, the more token costs there is. | 忠诚越高,象征性的代价就越高 |
| 183 | If we were to try to resolve this in a discussion, | 如果我们想在讨论中解决这个问题 |
| 184 | we'd be at a lower fidelity, | 我们的忠诚会降低 |
| 185 | so the answers would be less useful, | 这样答案就不那么有用了 |
| 186 | but we'd also be spending fewer tokens. | 但我们也会少花钱 |
| 187 | And we can see it's now starting to give me a D version here, | 我们可以看到它现在 开始给我一个D版本在这里, |
| 188 | which is kind of what I've been iterating towards. | 这有点像我一直 向往。 |
| 189 | One note here is that this is actually | 这里的一个音符是 这其实是 |
| 190 | integrated with the live page. | 与现场网页合并。 |
| 191 | So it's not doing this on a throwaway route. | 所以它不是在丢弃路线上这样做。 |
| 192 | You can do that if you want to, | 你可以这样做,如果你想, |
| 193 | but I really like seeing it actually plugged | 但我真的很喜欢看到它真的插上 |
| 194 | into the live route | 进入直播路线 |
| 195 | because then it just gives you so much more flexibility. | 因为那样你就能更灵活了 |
| 196 | It's a more honest representation | 这是一个更诚实的代理 |
| 197 | of how the code is actually going to work. | 如何实际运行代码。 |
| 198 | All right, looks like it has now created D, | 好吧,看起来它已经创造了D, |
| 199 | so let's see what that looks like. | 让我们看看它是什么样子。 |
| 200 | Yes, we have the box from A, | 是的,我们得到了A的盒子, |
| 201 | and if we search in here with model, | 如果我们在这里找模特儿 |
| 202 | then we can see that everything I asked for | 然后,我们可以看到,我要求的一切 |
| 203 | actually got done. | 实际完成了。 |
| 204 | Before, we had a duplicate of this one, | 以前,我们有一个复制这个, |
| 205 | but now there's only one. | 但现在只有一个 |
| 206 | And in theory, if I click this, | 理论上,如果我点击这个, |
| 207 | I'm not sure if this will actually work. | 我不知道这是否真的有用。 |
| 208 | I don't know whether this is part of the prototype. | 我不知道这是不是原型的一部分。 |
| 209 | Yes, it works. | 是的,这是有效的。 |
| 210 | Oh, beautiful. | 哦,美丽的。 |
| 211 | So there we go. | 就这样 |
| 212 | Loads of this functionality looks like it is now just done. | 这个功能的负载看起来是刚刚完成的. |
| 213 | And so you might ask what is the next step after this? | 所以你可以问接下来的下一步是什么? |
| 214 | Well, now I consider the prototype to be complete. | 现在,我认为原型是完整的。 |
| 215 | That was a pretty quick one. | 说得真快 |
| 216 | Usually I'm kind of in here doing a lot more. | 通常我在这里做的更多。 |
| 217 | I would pass this off to an AFK agent | 我会把这个交给AFK探员 |
| 218 | to plug in everything, | 插上所有东西, |
| 219 | delete the old prototype code, | 删除旧的原型代码, |
| 220 | and just make sure that it was compliant | 只要确保它符合 |
| 221 | with the original spec. | 与原始规格。 |
| 222 | And as you can imagine, | 正如你能想象的那样, |
| 223 | the results here are incredible | 结果是不可思议的 |
| 224 | because we've had such high fidelity discussion | 因为我们有这么高的忠诚的讨论 |
| 225 | because we've been able to look | 因为我们可以看 |
| 226 | at a live running version of it, | 在现场运行的版本, |
| 227 | give our feedback based on that. | 提供我们的反馈 |
| 228 | That feedback is so invaluable | 这种反馈是如此宝贵 |
| 229 | and it's already baked into a throwaway branch | 它已经烤成一个丢弃的树枝 |
| 230 | that our implementer can actually just go and reference. | 我们的执行者可以直接参考 |
| 231 | So many times I see people saying, | 我见过很多人说 |
| 232 | well, the thing didn't build what I wanted. | 那东西没有造出我想要的 |
| 233 | I created this big, beautiful spec | 我创造了这个大而美丽的光谱 |
| 234 | and it just did something totally weird. | 它只是做了一些非常奇怪的事情。 |
| 235 | You probably just weren't having discussions | 你可能只是没有讨论 |
| 236 | at a high enough fidelity | 在足够忠诚的高度 |
| 237 | and you probably should have been prototyping. | 你也许应该 原型。 |
| 238 | Finally, I don't want you to walk away thinking | 最后,我不想你走开 想着 |
| 239 | this is only for UI or front-end stuff. | 这只是UI或前端的东西。 |
| 240 | Front-end definitely benefits a lot from prototypes | 前端肯定从原型中得到很多好处 |
| 241 | because how should it look, | 因为它应该是什么样子, |
| 242 | what should it look like is a really key question | 它应该是什么样子 一个真正的关键问题 |
| 243 | that's really hard to answer during the discussion phase. | 在讨论阶段很难回答 |
| 244 | However, when you're doing more complicated stuff, | 然而,当你做更复杂的事情, |
| 245 | especially backend work, | 特别是后端的工作, |
| 246 | then a question like does this logic, | 这样的问题就是逻辑 |
| 247 | does this state model feel right? | 这个州模型感觉对吗? |
| 248 | If you're building anything reasonably complex | 如果你正在建造任何合理复杂的东西 |
| 249 | or that needs to work in the real world, | 或需要在现实世界工作, |
| 250 | then you're gonna run into these questions all the time. | 然后你会一直遇到这些问题 |
| 251 | And often the best way to get around these kinds of questions | 并且常常是解决这些问题的最佳方法 |
| 252 | to build something that kind of serves the needs | 建造一种满足需求的东西 |
| 253 | of your users, especially on something complex, | 您的用户, 特别是在复杂的事情上, |
| 254 | is to build a prototype. | 建造一个原型。 |
| 255 | Now it doesn't need to be a UI prototype | 现在它不需要是UI的原型 |
| 256 | and what I've got here is build | 我在这里得到的是建筑 |
| 257 | a tiny interactive terminal app | 一个小小的交互式终端应用程序 |
| 258 | that pushes the state machine through cases | 让国家机器破案 |
| 259 | that are hard to reason about on paper. | 纸上很难解释 |
| 260 | In other words, a pure logic prototype | 换句话说 一个纯粹的逻辑原型 |
| 261 | and I've had tons of feedback from folks saying | 我收到了很多人的反馈 |
| 262 | that this is such a nice little feature. | 这是一个很好的小特色。 |
| 263 | Both of these branches have their own reference docs here | 这两个分支都有自己的参考文献 |
| 264 | which tell it exactly how to do each one. | 告诉它如何做每一个。 |
| 265 | So if it's building a logic prototype, it looks here. | 因此,如果它正在构建一个逻辑原型, 它会在这里看。 |
| 266 | If it's building a UI prototype, it looks like this. | 如果它正在建造一个UI原型,它看起来像这样. |
| 267 | So I beg of you, have your discussions at a higher fidelity. | 所以,我恳求你,让你的讨论 在更高的忠诚。 |
| 268 | As agents get better at working with canvases, | 随着特工们与画布合作的加强 |
| 269 | working with design tools, | 与设计工具合作, |
| 270 | I'm sure that wireframes will definitely | 我敢肯定,线框肯定 |
| 271 | make a comeback as well. | 再来一次 |
| 272 | And the key point is this, | 关键是, |
| 273 | the leap from discussion and spec | 从讨论和光谱的飞跃 |
| 274 | to production ready code is really big. | 制作准备的代码非常大 |
| 275 | Whereas if you have a working prototype, | 如果你有一个工作原型, |
| 276 | turning that into production is pretty simple. | 把它变成生产很简单。 |
| 277 | I wanna give a quick shout out to Shape Up by Ryan Singer | 我想给一个快速的喊出来 形状由Ryan Singer |
| 278 | which is an extremely good book | 这是一本非常好的书 |
| 279 | and very, very influential on me. | 对我很有影响 |
| 280 | I read this I think in 2019 or something | 我在2019年看过这个 |
| 281 | and it totally changed the way | 它彻底改变了方式 |
| 282 | that I built applications for people. | 我为人们建立了应用程序。 |
| 283 | It is totally free online | 网上完全免费 |
| 284 | and I will drop a link in the description. | 我会在描述中掉一个链接。 |
| 285 | If you wanna keep up to date with my skills, | 如果你想跟上我的技能 |
| 286 | then my skills newsletter is the place to be. | 然后,我的技能通讯是地方。 |
| 287 | I'm shipping, shipping, shipping, | 我在航运,航运,航运, |
| 288 | constantly thinking about these skills, | 不断思考这些技能, |
| 289 | how I can make them better | 我怎样才能让他们好起来 |
| 290 | and you can benefit from that the day | 在那日,你们得享受福利, |
| 291 | that I make the changes. | 我做出改变。 |
| 292 | But folks, thank you so much for watching. | 但是,各位,谢谢你的观看。 |
| 293 | It's been a pleasure, | 很高兴见到你 |
| 294 | as always bringing you one of my skills | 总是给你带来我的能力之一 |
| 295 | and I will see you very soon. | 我会很快见到你。 |
该视频共有字幕 295 条。解锁更多字幕为会员功能,请移动到 价格
P2 · 【AI开发】别浪费时间写规格 · 直接用AI做原型 p02 无字幕 (P2)
字幕摘录
| 时间 | 英文 | 中文 |
|---|---|---|
| 0:00 | There's something that a lot of people do | 很多人都会这么做的 |
| 0:01 | when they're working with AI to create code | 当他们与AI合作创建代码时 |
| 0:03 | that totally drives me crazy. | 这完全让我疯了。 |
| 0:06 | And it's sort of something that I've been railing against | 这有点像我一直在反对 |
| 0:09 | for a while now. | 有一阵子了 |
| 0:11 | The thing that I've noticed is people tend to think | 我注意到的是 人们总觉得 |
| 0:14 | I need to create a spec for AI. | 我需要为AI创建一个Spec. |
| 0:16 | I need to create a plan, right? | 我需要创造一个计划,对不对? |
| 0:18 | Plan mode, spec-driven development. | 计划模式 光谱驱动开发. |
| 0:20 | I need to put all of my efforts | 我要全力以赴 |
展开字幕全文(297 条)
| 序号 | 英文 | 中文 |
|---|---|---|
| 1 | There's something that a lot of people do | 很多人都会这么做的 |
| 2 | when they're working with AI to create code | 当他们与AI合作创建代码时 |
| 3 | that totally drives me crazy. | 这完全让我疯了。 |
| 4 | And it's sort of something that I've been railing against | 这有点像我一直在反对 |
| 5 | for a while now. | 有一阵子了 |
| 6 | The thing that I've noticed is people tend to think | 我注意到的是 人们总觉得 |
| 7 | I need to create a spec for AI. | 我需要为AI创建一个Spec. |
| 8 | I need to create a plan, right? | 我需要创造一个计划,对不对? |
| 9 | Plan mode, spec-driven development. | 计划模式 光谱驱动开发. |
| 10 | I need to put all of my efforts | 我要全力以赴 |
| 11 | into making this extremely detailed spec | 来制作这个极其详细的光谱 |
| 12 | so that when I get some outputs from the AI, | 所以当我得到AI的一些产出, |
| 13 | those outputs are going to look like the spec. | 这些产出将看起来像规格。 |
| 14 | I'm going to have specified everything up front | 我会把前面的事都说清楚的 |
| 15 | so that I can just perfectly nail it. | 这样我就可以完全钉住它。 |
| 16 | And in this impulse, what they forget to do | 在这种冲动下,他们忘记了做 |
| 17 | is they forget they can actually write code. | 他们忘了他们可以写代码 |
| 18 | You can write code while you're working towards a spec. | 你可以写代码,而你的工作 一个Spec。 |
| 19 | Prototyping and spikes are things that we've had around | 原型和钉子是我们曾经有过的 |
| 20 | since the days of Agile, right? | 自从Agile时代,对不对? |
| 21 | I mean, I suppose these are still the days of Agile. | 我的意思是,我想这些仍然是 Agile 的日子。 |
| 22 | Agile is still extremely popular, | Agile仍然非常受欢迎, |
| 23 | still extremely influential, | 仍然影响很大 |
| 24 | but people just aren't prototyping anymore. | 但人们只是不再原型了。 |
| 25 | And so as part of my skills repo, | 因此,作为我的一部分技能回波, |
| 26 | I'm trying to turn this around. | 我试图扭转这一切。 |
| 27 | I have a prototype skill. | 我有一个原型技能。 |
| 28 | A prototype is throwaway code that answers a question. | 一个原型是解答一个问题的丢弃代码. |
| 29 | Everyone is saying that code is cheap | 大家都说密码便宜 |
| 30 | and it's partially true and partially I hate that phrase, | 部分地是真的,部分地我讨厌这句话, |
| 31 | but the thing that is cheap | 但便宜的东西 |
| 32 | is the cost of producing code has gone way, way down. | 是制作代码的成本 已经走了很多,还很低。 |
| 33 | So producing prototypes, producing quick | 所以,生产原型, 生产快 |
| 34 | kind of throwaway spikes has never been cheaper | 那种丢掉的钉子从不便宜 |
| 35 | and never been a more effective tool. | 并且从未成为更有效的工具。 |
| 36 | In this video, I'm going to introduce this prototype skill. | 在这部视频中,我将引入这种原型技能. |
| 37 | I'm going to talk about when you should use it, | 我要谈谈你什么时候该用它 |
| 38 | what it can be used for, | 它可以用来做什么, |
| 39 | and also how it fits into my new wayfinder skill. | 以及它如何适合我的新寻路技巧。 |
| 40 | But first I want to explain the concept of fidelity, | 但首先我要解释忠诚的概念 |
| 41 | high fidelity and low fidelity. | 高度忠诚和低忠诚。 |
| 42 | Whenever you're talking about designing something, | 当你在谈论设计什么, |
| 43 | you're going to have questions in your mind | 你会有问题在你的脑海里 |
| 44 | that need to be resolved somehow. | 这个问题需要解决。 |
| 45 | Some of the questions are going to be really basic, | 有些问题会很基本 |
| 46 | like the basic frame of the thing you're building. | 就像你建造的东西的基本框架。 |
| 47 | When the modal opens up, | 当模式打开时, |
| 48 | it should have a cancel button and a confirm button, | 它应该有一个取消按钮和一个确认按钮, |
| 49 | simple stuff. | 很简单 |
| 50 | With simple stuff like that, | 简单的东西, |
| 51 | you don't need a lot of high fidelity stuff | 你不需要很多高忠诚的东西 |
| 52 | to answer the question. | 回答问题。 |
| 53 | That can just be resolved in discussion, really. | 这可以在讨论中解决,真的。 |
| 54 | But let's say that the modal, when it opens up, | 但是,让我们假设,模式, 当它打开, |
| 55 | under some circumstances, it needs to show some data. | 在某些情况下,它需要显示一些数据。 |
| 56 | You might need to go a little bit of higher fidelity on that. | 你也许需要更诚实一点 |
| 57 | How would you display the data? | 如何显示数据? |
| 58 | It's often hard when you're planning out a spec | 当你计划一个谱子时 经常很难 |
| 59 | to figure out exactly how things should look | 来弄清楚事情应该如何发展 |
| 60 | and how things should look, | 和事情应该如何看, |
| 61 | how they should behave under certain circumstances, | 在某些情况下他们应该如何行为, |
| 62 | making sure that you've road tested all of this idea | 确定道路测试了这一切想法 |
| 63 | in kind of semi working code. | 半工作代码 |
| 64 | That means you need a higher fidelity. | 这意味着你需要更高的忠诚度。 |
| 65 | Some questions really can only be answered by prototyping. | 有些问题真的只能通过原型来回答. |
| 66 | And because producing these prototypes | 因为生产这些原型 |
| 67 | is now cheaper than it ever has been before, | 现在比以前便宜多了 |
| 68 | I tend to want more of my discussions at a higher fidelity. | 我倾向于希望我更多的讨论 在更高的忠诚。 |
| 69 | Obviously, the basic stuff, | 显然,基本的东西, |
| 70 | I'm gonna just resolve through discussion. | 我要通过讨论解决 |
| 71 | So the agent is gonna ask me some questions, | 所以经纪人会问我一些问题 |
| 72 | probably through a grilling session. | 可能通过烤肉会。 |
| 73 | And then I'm gonna say, okay, yeah, this sounds good. | 然后我要说,好吧,是的,这听起来不错。 |
| 74 | But then as soon as we get anything that I think, | 但一旦我们得到任何我想的东西 |
| 75 | oh, I really need to see this in action, | 哦,我真的需要看到这一点 在行动中, |
| 76 | or I need to feel it in action, look at it working, | 或者,我需要感觉它在行动, 看它的工作, |
| 77 | I'm gonna ask for a prototype. | 我要问一个原型。 |
| 78 | Prototyping is a part of my new Wayfinder skill, | 造型是我的新手技艺的一部分 |
| 79 | which is a skill that allows you | 这是一种能让你 |
| 80 | to plan a huge chunk of work. | 计划一大笔工作。 |
| 81 | There's a future video coming on Wayfinder. | 在Wayfinder上有一段未来的视频 |
| 82 | Now, Wayfinder, what it does is it tackles | 现在,Wayfinder,它所做的就是解决 |
| 83 | a huge chunk of work and it splits it up | 大量的工作,它把它分开 |
| 84 | into different planning sessions. | 在不同的规划会议上。 |
| 85 | And all of these planning sessions get their own ticket. | 而所有这些规划会 得到自己的票。 |
| 86 | And there should be somewhere in here, | 这里应该有地方 |
| 87 | ticket types, just here, | 票型,就在这里 |
| 88 | that tells it exactly what different ticket types there are. | 这完全说明了有什么不同的票型。 |
| 89 | The two that we're looking at here are the grilling type. | 我们在这里看到的两个是烧烤类型。 |
| 90 | So it's using the grilling skills | 所以是用烧烤技巧 |
| 91 | and the prototype ticket type. | 还有票型原型 |
| 92 | The default case here is the grilling type. | 这里的默认情况是烧烤类型. |
| 93 | So where you're chatting with the agent, | 你和经纪人聊天的地方 |
| 94 | figuring out the basic scope of the thing you're building. | 找出你建造的东西的基本范围 |
| 95 | But when you need to raise the fidelity of the discussion, | 但是,当你需要提高 诚实的讨论, |
| 96 | making a cheap, rough concrete artifact to react to, | 制造一种廉价的粗糙的混凝土工艺品 |
| 97 | an outline, a rough take a stub, | 一个轮廓,一个粗糙的取一个茎, |
| 98 | or UI logic code via the prototype skill, | 或UI逻辑代码 通过原型技能, |
| 99 | links the prototype as an asset, use when, | 链接原型为资产,当, |
| 100 | how should it look or how should it behave | 它应该看起来如何或应该如何行为 |
| 101 | is the key question. | 这是关键问题。 |
| 102 | 无论你是否使用Wayfinder, | |
| 103 | this gives you a really clear criteria | 这给你一个非常明确的标准 |
| 104 | for when you should reach for a prototype. | 当你需要找到一个原型。 |
| 105 | So I'm sure you're dying to see it in action. | 所以,我敢肯定,你渴望看到它的行动。 |
| 106 | And here it is, this is what it's done. | 这就是它所做的 |
| 107 | I've been using Wayfinder to extend my diagramming app here, | 我一直在用Wayfinder 来扩展我的图解应用 |
| 108 | 它建立在 TL Draw 上。 | |
| 109 | And I wanted a way to search through old diagrams. | 我想用一个方法 搜索旧的图表。 |
| 110 | And the data model here is quite complicated. | 这里的数据模型相当复杂。 |
| 111 | There's like diagrams and then snapshots | 有像图,然后快照 |
| 112 | of the diagram through time. | 图表。 |
| 113 | And so I wanted to build a search bar, | 所以我想建立一个搜索栏, |
| 114 | but I wasn't sure how it should look or behave. | 但我不知道它应该怎么样 或行为。 |
| 115 | So I ran prototype here. | 所以我在这里运行了原型。 |
| 116 | And what it did is it created this little picker | 它制造了这个小拾荒者 |
| 117 | at the bottom here. | 在下面这里。 |
| 118 | And this picker, if I go between it, | 和这个采摘者,如果我走在它之间, |
| 119 | it has three different options. | 它有三个不同的选择。 |
| 120 | So that's option B and that's option C. | 所以,这是选择B,这是选择C。 |
| 121 | And each one encodes a few design decisions | 每个都编码一些设计决定 |
| 122 | that I can then react to and iterate on. | 然后,我可以作出反应 和脚踏实地。 |
| 123 | So let's start by looking at A. | 因此,让我们从看A开始。 |
| 124 | I've just generated this, I've not actually looked at it yet. | 我刚刚发明了这个,我还没有真正看到它。 |
| 125 | So I get to search the diagrams and see what comes up. | 所以我可以搜索图表,看看会发生什么事。 |
| 126 | This one, okay, it's reflow in place grouped rows. | 这个,好的,它重新排成一组 |
| 127 | So it's grouping the snapshots by the name of the diagram. | 所以它用图的名字来组合快照。 |
| 128 | I really like the placing of the search box up here, | 我真的很喜欢把搜索箱放在这里 |
| 129 | but this grouping doesn't feel right to me. | 但这个团体对我不好 |
| 130 | So let's see what B is. | 所以,让我们看看B是什么。 |
| 131 | Let's search again inside model here. | 让我们再次搜索这里的模型。 |
| 132 | And okay, now on the left, we have grouping for, | 好吧,现在在左边, 我们分组为, |
| 133 | where it can filter down. | 那里可以过滤下来。 |
| 134 | Okay, that's quite nice. | 好吧,这是相当不错的。 |
| 135 | What happens if I search for something else | 如果我找别的东西怎么办? |
| 136 | and it's already, okay. | 它已经,好吗。 |
| 137 | So the filter resets at that point. | 因此,过滤器重新在那个点。 |
| 138 | Now that's okay, but I wonder what C looks like. | 现在没关系,但我不知道C长什么样子。 |
| 139 | I really don't like this search diagrams thing at the top. | 我真的不喜欢上面的搜索图 |
| 140 | That doesn't look nice, but let's see what this looks like. | 这看起来不妙,但让我们看看这个样子。 |
| 141 | So let's search for model and ooh, okay. | 我们去找模特儿,好吧 |
| 142 | So now it's everything in line, no filters. | 所以现在一切都排成一行,没有过滤器。 |
| 143 | So I do actually really like this, | 所以我真的很喜欢这个, |
| 144 | but there are a few things that I don't like. | 但有些东西我不喜欢 |
| 145 | I don't like these current things. | 我不喜欢这些时事 |
| 146 | It looks like this is really technical weird thing, | 看起来这真的很技术怪怪的 |
| 147 | but the current one is showing with the diagram snapshot. | 但是现在的图是用图示显示的 |
| 148 | So I've got some kind of feedback | 所以我得到一些反馈 |
| 149 | that I wanna give to the prototype. | 我想给原型。 |
| 150 | This prototyping session took about 100,000 tokens. | 此次原型会议耗资约10万令吉. |
| 151 | So I'm actually going to compact and say, | 所以,我实际上要去压缩 并说, |
| 152 | we're gonna do some more QA on this. | 我们要多做点QA |
| 153 | Compacting at this point makes sense to me | 此时此刻的紧凑对我来说是有道理的 |
| 154 | because we kind of need to retain all of the information | 因为我们需要保留所有的信息 |
| 155 | about the prototype, need to retain all the design decisions | 关于原型,需要保留所有的设计决定 |
| 156 | that went into it, but we just need to give it some feedback. | 但我们只需要给它一些反馈 |
| 157 | So we just need to continue the conversation | 所以我们需要继续谈话 |
| 158 | in the same place in the code base. | 在同一个地方 在代码基。 |
| 159 | I should definitely do a video about the design tree | 我绝对应该做一个视频 关于设计树 |
| 160 | that I use for when I've got compact | 当我有紧身衣的时候我用它 |
| 161 | versus clear versus handoff, | 相对清晰与交接, |
| 162 | but that's one for another time. | 但这是另一个时间。 |
| 163 | Okay, now I'm gonna give some feedback. | 好吧,现在我要给一些反馈。 |
| 164 | I really like the search box of A | 我真的很喜欢A的搜索盒 |
| 165 | and I like the layout of C. | 我喜欢C的布局 |
| 166 | Okay, so I've just dictated in some more feedback | 好吧,所以我刚刚决定 一些更多的反馈 |
| 167 | and I'm gonna send it off. | 我会寄出去的 |
| 168 | So the idea of this session | 所以,这个会议的想法 |
| 169 | is I'm iterating on this prototype. | 我对这个原型很感兴趣 |
| 170 | I'm not just saying, okay, this is the best one. | 我不是说,这是最好的 |
| 171 | I'm gonna actually create some design decisions here, | 我要在这里创造一些设计决定, |
| 172 | create a super rich asset. | 创造出一个超级丰富的资产。 |
| 173 | All of these design decisions | 所有这些设计决定 |
| 174 | are then going to be encoded into the prototype | 然后被编码成原型 |
| 175 | and I'm gonna save the prototype | 我会保存原型 |
| 176 | probably on a throwaway branch. | 可能在树枝上 |
| 177 | That means that when the thing actually goes to implement it, | 这意味着,当事情实际上去执行它, |
| 178 | it's not only got a spec, | 不仅有特质 |
| 179 | it's actually got real front-end code | 它实际上有真正的前端代码 |
| 180 | that it can usually copy and paste out of it. | 它通常可以复制和粘贴出来。 |
| 181 | Now, creating these prototypes does take some time, right? | 现在,创建这些原型 需要一些时间,对不对? |
| 182 | The higher fidelity you go, the more token costs there is. | 忠诚越高,象征性的代价就越高 |
| 183 | If we were to try to resolve this in a discussion, | 如果我们想在讨论中解决这个问题 |
| 184 | we'd be at a lower fidelity, | 我们的忠诚会降低 |
| 185 | so the answers would be less useful, | 这样答案就不那么有用了 |
| 186 | but we'd also be spending fewer tokens. | 但我们也会少花钱 |
| 187 | And we can see it's now starting to give me a D version here, | 我们可以看到它现在 开始给我一个D版本在这里, |
| 188 | which is kind of what I've been iterating towards. | 这有点像我一直 向往。 |
| 189 | One note here is that this is actually integrated | 这里的一个说明是 这其实是综合的 |
| 190 | with the live page. | 与现场页面。 |
| 191 | So it's not doing this on a throwaway route. | 所以它不是在丢弃路线上这样做。 |
| 192 | You can do that if you want to, | 你可以这样做,如果你想, |
| 193 | but I really like seeing it actually plugged | 但我真的很喜欢看到它真的插上 |
| 194 | into the live route | 进入直播路线 |
| 195 | because then it just gives you so much more flexibility. | 因为那样你就能更灵活了 |
| 196 | Like it's a more honest representation | 喜欢它是一个更诚实的代表 |
| 197 | of how the code is actually going to work. | 如何实际运行代码。 |
| 198 | All right, looks like it has now created D, | 好吧,看起来它已经创造了D, |
| 199 | so let's see what that looks like. | 让我们看看它是什么样子。 |
| 200 | Yes, we have the box from A, | 是的,我们得到了A的盒子, |
| 201 | and if we search in here with model, | 如果我们在这里找模特儿 |
| 202 | then we can see that everything I asked for | 然后,我们可以看到,我要求的一切 |
| 203 | actually got done. | 实际完成了。 |
| 204 | Before we had a duplicate of this one, | 在我们复制这个之前 |
| 205 | but now there's only one. | 但现在只有一个 |
| 206 | And in theory, if I click this, | 理论上,如果我点击这个, |
| 207 | I'm not sure if this will actually work. | 我不知道这是否真的有用。 |
| 208 | I don't know whether this is part of the prototype. | 我不知道这是不是原型的一部分。 |
| 209 | Yes, it works. | 是的,这是有效的。 |
| 210 | Oh, beautiful. | 哦,美丽的。 |
| 211 | So there we go. | 就这样 |
| 212 | Loads of this functionality | 此功能的负载 |
| 213 | looks like it is now just done. | 看起来它刚刚完成。 |
| 214 | And so you might ask, what is the next step after this? | 你可能会问,下一步是什么? |
| 215 | Well, now I consider the prototype to be complete. | 现在,我认为原型是完整的。 |
| 216 | That was a pretty quick one. | 说得真快 |
| 217 | Usually I'm kind of in here doing a lot more. | 通常我在这里做的更多。 |
| 218 | I would pass this off to an AFK agent | 我会把这个交给AFK探员 |
| 219 | to plug in everything, delete the old prototype code, | 插入一切,删除旧的原型代码, |
| 220 | and just make sure that it was compliant | 只要确保它符合 |
| 221 | with the original spec. | 与原始规格。 |
| 222 | And as you can imagine, | 正如你能想象的那样, |
| 223 | the results here are incredible | 结果是不可思议的 |
| 224 | because we've had such high fidelity discussion, | 因为我们有这么高的忠诚讨论, |
| 225 | because we've been able to look | 因为我们可以看 |
| 226 | at a live running version of it, | 在现场运行的版本, |
| 227 | give our feedback based on that. | 提供我们的反馈 |
| 228 | That feedback is so invaluable | 这种反馈是如此宝贵 |
| 229 | and it's already baked into a throwaway branch | 它已经烤成一个丢弃的树枝 |
| 230 | that our implementer can actually just go and reference. | 我们的执行者可以直接参考 |
| 231 | So many times I see people saying, | 我见过很多人说 |
| 232 | well, the thing didn't build what I wanted. | 那东西没有造出我想要的 |
| 233 | I created this big, beautiful spec | 我创造了这个大而美丽的光谱 |
| 234 | and it just did something totally weird. | 它只是做了一些非常奇怪的事情。 |
| 235 | You probably just weren't having discussions | 你可能只是没有讨论 |
| 236 | at a high enough fidelity | 在足够忠诚的高度 |
| 237 | and you probably should have been prototyping. | 你也许应该 原型。 |
| 238 | Finally, I don't want you to walk away | 最后,我不想你离开 |
| 239 | thinking this is only for UI or front-end stuff. | 认为这只是UI或前端的东西。 |
| 240 | Front-end definitely benefits a lot from prototypes | 前端肯定从原型中得到很多好处 |
| 241 | because how should it look, | 因为它应该是什么样子, |
| 242 | what should it look like is a really key question | 它应该是什么样子 一个真正的关键问题 |
| 243 | that's really hard to answer during the discussion phase. | 在讨论阶段很难回答 |
| 244 | However, when you're doing more complicated stuff, | 然而,当你做更复杂的事情, |
| 245 | especially backend work, | 特别是后端的工作, |
| 246 | then a question like does this logic, | 这样的问题就是逻辑 |
| 247 | does this state model feel right? | 这个州模型感觉对吗? |
| 248 | If you're building anything reasonably complex | 如果你正在建造任何合理复杂的东西 |
| 249 | or that needs to work in the real world, | 或需要在现实世界工作, |
| 250 | then you're gonna run into these questions all the time. | 然后你会一直遇到这些问题 |
| 251 | And often the best way to get around these kinds of questions | 并且常常是解决这些问题的最佳方法 |
| 252 | to build something that kind of serves the needs | 建造一种满足需求的东西 |
| 253 | of your users, especially on something complex, | 您的用户, 特别是在复杂的事情上, |
| 254 | is to build a prototype. | 建造一个原型。 |
| 255 | Now, it doesn't need to be a UI prototype | 现在,它不需要是一个UI的原型 |
| 256 | and what I've got here is build | 我在这里得到的是建筑 |
| 257 | a tiny interactive terminal app | 一个小小的交互式终端应用程序 |
| 258 | that pushes the state machine through cases | 让国家机器破案 |
| 259 | that are hard to reason about on paper. | 纸上很难解释 |
| 260 | In other words, a pure logic prototype. | 也就是说,一个纯粹的逻辑原型. |
| 261 | And I've had tons of feedback from folks | 我收到了很多人的反馈 |
| 262 | saying that this is such a nice little feature. | 说这是一个很好的小特色。 |
| 263 | Both of these branches have their own reference docs here | 这两个分支都有自己的参考文献 |
| 264 | which tell it exactly how to do each one. | 告诉它如何做每一个。 |
| 265 | So if it's building a logic prototype, | 所以,如果它正在建立一个逻辑原型, |
| 266 | it looks here. | 看这里 |
| 267 | If it's building a UI prototype, it looks like this. | 如果它正在建造一个UI原型,它看起来像这样. |
| 268 | So I beg of you, | 所以我恳求你 |
| 269 | have your discussions at a higher fidelity. | 让你的谈话更加忠诚 |
| 270 | As agents get better at working with canvases, | 随着特工们与画布合作的加强 |
| 271 | working with design tools, | 与设计工具合作, |
| 272 | I'm sure that wire frames | 我敢肯定,线框 |
| 273 | will definitely make a comeback as well. | 一定会回来的 |
| 274 | And the key point is this, | 关键是, |
| 275 | the leap from discussion and spec to production-ready code | 从讨论和光谱到生产准备的代码的飞跃 |
| 276 | is really big. | 实在是很大。 |
| 277 | Whereas if you have a working prototype, | 如果你有一个工作原型, |
| 278 | turning that into production is pretty simple. | 把它变成生产很简单。 |
| 279 | I wanna give a quick shout out to Shape Up by Ryan Singer, | 我想给一个快速大喊出 形状由瑞安辛格, |
| 280 | which is an extremely good book | 这是一本非常好的书 |
| 281 | and very, very influential on me. | 对我很有影响 |
| 282 | I read this I think in 2019 or something, | 我在2019年就看过这个 |
| 283 | and it totally changed the way | 它彻底改变了方式 |
| 284 | that I built applications for people. | 我为人们建立了应用程序。 |
| 285 | It is totally free online | 网上完全免费 |
| 286 | and I will drop a link in the description. | 我会在描述中掉一个链接。 |
| 287 | If you wanna keep up to date with my skills, | 如果你想跟上我的技能 |
| 288 | then my skills newsletter is the place to be. | 然后,我的技能通讯是地方。 |
| 289 | I'm shipping, shipping, shipping, | 我在航运,航运,航运, |
| 290 | constantly thinking about these skills, | 不断思考这些技能, |
| 291 | how I can make them better. | 我怎样才能让他们好起来 |
| 292 | And you can benefit from that | 你可以从中得益 |
| 293 | the day that I make the changes. | 我改变的那一天 |
| 294 | But folks, thank you so much for watching. | 但是,各位,谢谢你的观看。 |
| 295 | It's been a pleasure | 幸会 |
| 296 | as always bringing you one of my skills | 总是给你带来我的能力之一 |
| 297 | and I will see you very soon. | 我会很快见到你。 |
该视频共有字幕 297 条。解锁更多字幕为会员功能,请移动到 价格
