1 00:00:00,266 --> 00:00:01,600 All right. 2 00:00:01,600 --> 00:00:04,800 So today you're working with the alum. 3 00:00:05,500 --> 00:00:08,500 I have a new concept. 4 00:00:08,533 --> 00:00:08,800 Yeah. 5 00:00:08,800 --> 00:00:11,800 You were talking about feature owners, right? 6 00:00:11,933 --> 00:00:12,300 Right. 7 00:00:12,300 --> 00:00:14,333 Which are people right now? 8 00:00:14,333 --> 00:00:16,000 No, but they're actors. 9 00:00:16,000 --> 00:00:16,766 They're actors. 10 00:00:16,766 --> 00:00:17,466 Okay. 11 00:00:17,466 --> 00:00:20,466 So actors could be an agent or a person. 12 00:00:20,933 --> 00:00:22,600 Okay. Right. 13 00:00:22,600 --> 00:00:25,366 And let's talk about 14 00:00:25,366 --> 00:00:29,366 the concept of a feature owner first because I'm familiar with product owners. 15 00:00:29,400 --> 00:00:29,833 Yes, yes. 16 00:00:29,833 --> 00:00:32,833 Let me let me give you the motivating example. 17 00:00:33,333 --> 00:00:36,333 I have a thing that with every feature 18 00:00:36,633 --> 00:00:40,800 request there's the invisible requirement and everything else still works. 19 00:00:40,833 --> 00:00:43,033 Yeah. And this is the hardest requirement. 20 00:00:43,033 --> 00:00:46,900 And it's the requirement that gets bigger and bigger and bigger, 21 00:00:46,933 --> 00:00:48,400 even though it's still invisible. 22 00:00:48,400 --> 00:00:52,300 As your app gets bigger as everything else is a wider kind of. 23 00:00:52,300 --> 00:00:54,400 It's like the dark matter of of software. 24 00:00:54,400 --> 00:00:57,666 Yeah. The the feature interactions. Okay. 25 00:00:58,033 --> 00:00:59,733 Concrete example. 26 00:00:59,733 --> 00:01:03,433 I've got my little mtg deck shuffler. 27 00:01:03,433 --> 00:01:05,766 There's cards. 28 00:01:06,733 --> 00:01:10,000 Almost all magic cards have 29 00:01:10,300 --> 00:01:13,300 the same back and then a face with stuff on them. 30 00:01:14,066 --> 00:01:18,133 But there's a few that have two meaningful faces. 31 00:01:18,600 --> 00:01:21,700 They have like transform this card under certain circumstances. 32 00:01:22,200 --> 00:01:24,633 So those are complicated. 33 00:01:24,633 --> 00:01:27,833 And early in the app development I was like 34 00:01:27,833 --> 00:01:30,833 oh crap I need to handle two faced cards. 35 00:01:31,166 --> 00:01:34,166 And added flip card features. 36 00:01:34,600 --> 00:01:36,233 Okay. 37 00:01:36,233 --> 00:01:39,766 Many times since then I've got to add a feature. 38 00:01:40,700 --> 00:01:43,900 And missed supporting two face cards. 39 00:01:43,933 --> 00:01:44,900 Okay. 40 00:01:44,900 --> 00:01:48,933 Concrete example I needed to add card 41 00:01:48,966 --> 00:01:52,000 type color identity mana cost. 42 00:01:52,000 --> 00:01:55,733 So some some properties of each card I wanted to record those 43 00:01:56,833 --> 00:01:59,833 not just what's his name was its image. 44 00:02:00,066 --> 00:02:03,000 So I wanted to record those and I missed, 45 00:02:03,000 --> 00:02:04,400 two face cards. 46 00:02:04,400 --> 00:02:06,400 Yeah. 47 00:02:06,400 --> 00:02:10,300 So in real life, what I've kind of always wanted on 48 00:02:10,300 --> 00:02:14,666 my team is every feature we implement has a feature owner. 49 00:02:16,300 --> 00:02:17,966 In the past, it would have been a person. 50 00:02:17,966 --> 00:02:22,366 So an actor, who understands this feature. 51 00:02:22,766 --> 00:02:24,600 Who looks at every new incoming 52 00:02:24,600 --> 00:02:27,600 feature and says does this interact with my feature. 53 00:02:28,466 --> 00:02:31,466 Make sure that supported, you know 54 00:02:32,100 --> 00:02:36,300 so that person has the knowledge of where this feature came from. 55 00:02:36,300 --> 00:02:38,333 What it's for everywhere. 56 00:02:38,333 --> 00:02:41,233 It's currently implemented in the app. 57 00:02:41,233 --> 00:02:45,433 And the other things that it interacts with I have that knowledge base. 58 00:02:46,000 --> 00:02:49,500 Their job is defined by what they know, not by what they do. 59 00:02:49,500 --> 00:02:52,500 I think that's a lot of knowledge work. 60 00:02:52,666 --> 00:02:56,800 Okay, so the feature in this job, in this case, I created one. 61 00:02:56,866 --> 00:03:02,266 Your job is to handle two faced cards and the flip feature. 62 00:03:02,266 --> 00:03:05,066 Okay. So and when you say you created one. 63 00:03:05,066 --> 00:03:06,233 Good question. 64 00:03:06,233 --> 00:03:10,233 Of course, I created by, asking the AI to create it. 65 00:03:10,233 --> 00:03:11,000 So I'm asking 66 00:03:12,100 --> 00:03:15,100 and an AI agent, which is an actor. 67 00:03:15,700 --> 00:03:18,033 To create me another actor. 68 00:03:18,033 --> 00:03:19,700 Okay. 69 00:03:19,700 --> 00:03:22,533 With the knowledge base that I need. 70 00:03:22,533 --> 00:03:23,600 Okay. 71 00:03:23,600 --> 00:03:28,466 And whose job is to review feature plans for interactions. 72 00:03:29,066 --> 00:03:32,066 And then later, come back and test 73 00:03:32,166 --> 00:03:35,666 and make sure that the the flip feature still work. 74 00:03:35,833 --> 00:03:36,200 Okay. 75 00:03:36,200 --> 00:03:39,233 Now, so far, what you described so far, that much sounds like 76 00:03:39,233 --> 00:03:42,833 just a secondary prompt, like a prompt that you can summon up when you need to. 77 00:03:43,933 --> 00:03:46,133 So what makes it a feature owner? 78 00:03:46,133 --> 00:03:49,700 What makes it a feature owner is there's a prompt, so that's its job description. 79 00:03:49,700 --> 00:03:51,933 You're a feature owner. This is what you do. Okay. 80 00:03:51,933 --> 00:03:53,933 And it's knowledge base. 81 00:03:53,933 --> 00:03:55,000 What it. Okay. 82 00:03:55,000 --> 00:03:58,000 So it has a directory in the repo. 83 00:03:58,300 --> 00:03:59,133 It owns a directory. 84 00:03:59,133 --> 00:04:00,233 It owns a directory, okay. 85 00:04:00,233 --> 00:04:02,200 Where it can store its knowledge. 86 00:04:02,200 --> 00:04:04,533 It's writing the features of markdown files. 87 00:04:04,533 --> 00:04:05,866 Yeah. Okay. Yeah. 88 00:04:07,366 --> 00:04:10,366 So these two things kind of make the actor, 89 00:04:10,766 --> 00:04:14,833 and then the actor can't help until it's invoked, right? 90 00:04:15,233 --> 00:04:16,100 That's the thing. 91 00:04:16,100 --> 00:04:19,100 how does it become that person on the team Who's like, wait a minute. 92 00:04:20,033 --> 00:04:21,100 What about. Yeah. 93 00:04:21,100 --> 00:04:24,000 How's it going to impact, two phase cards? 94 00:04:24,000 --> 00:04:25,033 Yeah. And you're planning meeting? 95 00:04:25,033 --> 00:04:28,133 Yes. And, what about after you flip the card? 96 00:04:28,133 --> 00:04:30,366 Does it still work? 97 00:04:30,366 --> 00:04:32,433 Yes, exactly. 98 00:04:32,433 --> 00:04:35,100 So what we need to do is get that person in the planning meeting. 99 00:04:35,100 --> 00:04:37,900 The actor. Sorry. In the planning meeting. 100 00:04:37,900 --> 00:04:40,033 And that winds up. 101 00:04:40,033 --> 00:04:43,233 I mean I just asked Claude how to do this and Claude did it and it worked. 102 00:04:44,000 --> 00:04:47,266 That winds up in the agent R&D Claude, DMD, 103 00:04:47,500 --> 00:04:50,733 with its process for implementing features. 104 00:04:51,300 --> 00:04:53,100 There's a plan step. Okay. 105 00:04:53,100 --> 00:04:56,666 And the plan step includes invoking all the feature owners. 106 00:04:57,600 --> 00:05:00,400 So the flip card features the library grouping features 107 00:05:00,400 --> 00:05:01,966 that all the ones that I've created. 108 00:05:01,966 --> 00:05:07,033 So when you're interacting, with an agent, as you're developing, 109 00:05:07,366 --> 00:05:11,833 what I'm gathering is you're primarily interacting with kind of a project manager 110 00:05:11,833 --> 00:05:15,466 or a, a team manager process. 111 00:05:15,500 --> 00:05:20,100 Ya, that has a, as part of its prompt has a process of like, 112 00:05:20,200 --> 00:05:24,566 delegate to this, sub prompt or sub agent. 113 00:05:24,566 --> 00:05:25,666 And then this is something we. 114 00:05:25,666 --> 00:05:27,600 Have to do more and more of these days, right? 115 00:05:27,600 --> 00:05:30,366 So that the main agent that we're interacting with. 116 00:05:30,366 --> 00:05:33,033 It doesn't get its context to full of details. 117 00:05:33,033 --> 00:05:34,033 Right? Right. 118 00:05:34,033 --> 00:05:36,766 At an extreme, there's stuff like client teams, 119 00:05:37,966 --> 00:05:40,966 which is incredibly high overhead. 120 00:05:41,000 --> 00:05:44,266 But it it actively spins up a bunch of agent actors. 121 00:05:45,566 --> 00:05:47,700 And keeps them 122 00:05:47,700 --> 00:05:49,200 open. 123 00:05:49,200 --> 00:05:52,200 The feature owner that I have is simpler. 124 00:05:52,266 --> 00:05:54,200 It's a call and response. 125 00:05:54,200 --> 00:05:56,333 It's a hey, here's the plan. 126 00:05:56,333 --> 00:05:59,333 Do you see any interactions we should worry about to 127 00:06:00,200 --> 00:06:03,700 invoke the actor with its system prompt, 128 00:06:04,033 --> 00:06:07,033 and then the system prompt includes, here's your knowledge base. 129 00:06:07,400 --> 00:06:10,000 And then the invocation of that actor 130 00:06:10,000 --> 00:06:12,800 has two outputs. 131 00:06:12,800 --> 00:06:15,300 Just like any function just like us. Okay. 132 00:06:15,300 --> 00:06:18,200 There's whatever turns 133 00:06:18,200 --> 00:06:21,133 and there's the side effect of who it becomes. 134 00:06:21,133 --> 00:06:23,566 Right. So who it becomes is it's updated. 135 00:06:23,566 --> 00:06:24,533 It's knowledge base 136 00:06:24,533 --> 00:06:28,333 that the next time that actor is invoked it has different knowledge. 137 00:06:28,366 --> 00:06:29,066 Okay. 138 00:06:29,066 --> 00:06:32,600 And then there's the output of actually watch out for this. 139 00:06:33,500 --> 00:06:35,166 Make sure you do this. Okay. 140 00:06:36,166 --> 00:06:37,666 Make sure you store 141 00:06:37,666 --> 00:06:42,766 the card type and the man of value and stuff for the back face of the card. 142 00:06:43,200 --> 00:06:44,800 Okay. 143 00:06:44,800 --> 00:06:45,500 That's interesting. 144 00:06:45,500 --> 00:06:49,100 And then that is somehow carried forward into whatever like design, 145 00:06:49,100 --> 00:06:53,000 detailed design sub-agent you have. 146 00:06:53,133 --> 00:06:55,000 Yeah. Whatever agent it might be. 147 00:06:55,000 --> 00:06:58,000 The main agent is doing the planning, 148 00:06:58,066 --> 00:07:00,800 gets this information back and incorporates it into the plan. 149 00:07:00,800 --> 00:07:02,533 Okay. And proceed. 150 00:07:02,533 --> 00:07:05,533 So in a sense, I mean, from my perspective, it's it's like, 151 00:07:05,566 --> 00:07:08,566 just like it would invoke a, 152 00:07:08,666 --> 00:07:13,266 a suite of tests or just like it would invoke, linting tool. 153 00:07:13,433 --> 00:07:18,533 It also invokes some agents and sees what, what output they have. 154 00:07:18,533 --> 00:07:21,233 And you can lend to the planning phase. 155 00:07:21,233 --> 00:07:23,333 So yeah, it's kind of plan lint in a way. 156 00:07:23,333 --> 00:07:27,433 I mean, it's not a, predefined set of rules that don't change in the way 157 00:07:27,433 --> 00:07:30,766 most linting tools are. But it's still like 158 00:07:32,266 --> 00:07:33,133 it's still invoking in 159 00:07:33,133 --> 00:07:36,466 a kind of, in the same sense as a, as a, as it would a linting tool. 160 00:07:36,900 --> 00:07:39,600 Yes, yes. It's a don't forget. 161 00:07:39,600 --> 00:07:44,833 And, and the effect of this is that the, everything else that still works 162 00:07:44,833 --> 00:07:47,833 in the code base is divided up 163 00:07:48,000 --> 00:07:51,033 into little modules of knowledge. 164 00:07:51,600 --> 00:07:57,066 And there's steps, a growing list of steps as our feature base grows. 165 00:07:58,300 --> 00:08:00,100 Of does it affect this. 166 00:08:00,100 --> 00:08:01,433 Does it affect this. 167 00:08:01,433 --> 00:08:05,633 And the effect of that is that instead of having to understand 168 00:08:05,633 --> 00:08:09,900 everything all at once, we understand it in various pieces. 169 00:08:10,466 --> 00:08:13,600 And, and, and all that knowledge comes together 170 00:08:13,800 --> 00:08:18,033 in the main agent who's the project lead for this new feature. 171 00:08:18,066 --> 00:08:19,233 Whatever. 172 00:08:19,233 --> 00:08:23,733 And then at the end of that new feature implementation you create a feature owner 173 00:08:24,666 --> 00:08:27,733 like okay project lead encapsulate what you know. 174 00:08:28,966 --> 00:08:30,400 Into this new 175 00:08:30,400 --> 00:08:33,500 knowledge base and write yourself a feature on our instructions. 176 00:08:34,233 --> 00:08:36,900 So that next time you are in charge 177 00:08:36,900 --> 00:08:39,900 of making sure your feature still works. 178 00:08:40,833 --> 00:08:41,133 Yeah. 179 00:08:41,133 --> 00:08:44,133 And I guess eventually you kind of have to 180 00:08:44,466 --> 00:08:47,466 maybe factor out the job of 181 00:08:47,833 --> 00:08:50,166 notifying all the feature owners. 182 00:08:50,166 --> 00:08:55,266 Maybe my, my biggest, you know, the thing that I observe over and over again 183 00:08:55,266 --> 00:08:58,866 is that any the further back something is in the list of things to do. 184 00:08:59,900 --> 00:09:02,966 The more it falls off the brain of of LLMs. 185 00:09:03,233 --> 00:09:05,466 I was hearing it. 186 00:09:05,466 --> 00:09:07,200 It's part of the list of things to do. 187 00:09:07,200 --> 00:09:10,200 And it might be the same agent that does the implementation. 188 00:09:10,566 --> 00:09:13,800 And my experience is that, like if you have something 189 00:09:13,800 --> 00:09:15,600 doing implementation, it's going to forget about what. 190 00:09:15,600 --> 00:09:16,133 Oh, wow. 191 00:09:16,133 --> 00:09:17,866 The agent helps doing the planning. Yeah. 192 00:09:17,866 --> 00:09:20,066 The agent that's doing the planning for the new feature. 193 00:09:21,500 --> 00:09:22,300 Because they really are they 194 00:09:22,300 --> 00:09:25,300 get very focused and they, they they lose things. 195 00:09:25,366 --> 00:09:25,700 Right. 196 00:09:25,700 --> 00:09:30,633 But but part of the the team's concept is don't do the implementation in the agent. 197 00:09:30,733 --> 00:09:32,566 That makes. Sense. 198 00:09:32,566 --> 00:09:35,566 So I'm not much of a developer actor. 199 00:09:36,000 --> 00:09:39,466 So much of what we do, I feel like when we are working 200 00:09:39,466 --> 00:09:43,200 more with agents is we are managing their attention. 201 00:09:44,266 --> 00:09:45,333 Absolutely. 202 00:09:45,333 --> 00:09:47,466 Just like we do with ourselves. Yeah. 203 00:09:47,466 --> 00:09:52,000 But but the fun part is, I, I've often wished in the past that I could 204 00:09:52,000 --> 00:09:57,100 fork myself and do multiple things and with with agents we absolutely can. 205 00:09:57,600 --> 00:10:00,033 So this part of myself that knows about the project 206 00:10:00,033 --> 00:10:03,600 that the feature that was just implemented fork it off into a feature owner. 207 00:10:04,300 --> 00:10:05,733 Come back to that one later. 208 00:10:07,666 --> 00:10:08,166 Yeah. 209 00:10:08,166 --> 00:10:08,700 Yeah. 210 00:10:08,700 --> 00:10:11,700 We are we're 211 00:10:13,333 --> 00:10:16,333 we have many units of attention now. 212 00:10:16,833 --> 00:10:20,000 And so we can chunk or delegate. 213 00:10:20,766 --> 00:10:23,766 We have to delegate the knowledge. 214 00:10:24,333 --> 00:10:25,133 Right. Yeah. 215 00:10:25,133 --> 00:10:28,133 And we don't have the, the UN teams. 216 00:10:28,166 --> 00:10:31,166 We can't just keep people around forever just to know 217 00:10:32,100 --> 00:10:34,300 a thing really well. 218 00:10:34,300 --> 00:10:37,200 And in agents we absolutely can. 219 00:10:37,200 --> 00:10:37,833 Yeah. 220 00:10:37,833 --> 00:10:40,833 I'm interested to see if you run into like a new, 221 00:10:42,866 --> 00:10:45,566 I don't know, accumulative snowball effect where. 222 00:10:45,566 --> 00:10:47,933 I get to the new failure modes as fast as we can. 223 00:10:47,933 --> 00:10:50,933 That's the game. Yeah. 224 00:10:51,566 --> 00:10:53,900 I'm already imagining that if I were writing the prompts 225 00:10:53,900 --> 00:10:56,266 for these things, I would have to be very adamant about. 226 00:10:56,266 --> 00:11:01,566 Like, unless you see a clear interaction, just say no problem. 227 00:11:01,600 --> 00:11:06,633 And because I can totally see them decide each one, deciding 228 00:11:06,666 --> 00:11:10,100 to pontificate about its own particular area of expertise 229 00:11:10,100 --> 00:11:14,466 and all the possible implications that then you think, no, no, no, no. 230 00:11:14,666 --> 00:11:15,433 Right. 231 00:11:15,433 --> 00:11:19,266 We have to have agents that want to go back. To. 232 00:11:20,166 --> 00:11:20,866 sorting the magic cards. 233 00:11:23,066 --> 00:11:23,466 Yeah. 234 00:11:23,466 --> 00:11:23,800 Yeah.