1
00:00:00,000 --> 00:00:03,039
One area that you and the team push is Core Web Vitals.

2
00:00:03,040 --> 00:00:05,039
>> If I'm on a page that has a bunch of ads,

3
00:00:05,040 --> 00:00:08,759
I shouldn't start reading an article and then suddenly everything gets pushed down just

4
00:00:08,760 --> 00:00:10,399
because the ad is finally loaded.

5
00:00:10,400 --> 00:00:13,159
And so, that's where cumulative layout shift kind of comes from.

6
00:00:13,160 --> 00:00:17,519
>> One question that comes up to from a lot of people is this idea of cognitive surrender.

7
00:00:17,520 --> 00:00:22,119
>> The first is cognitive debt, the erosion of your ability to have good memory.

8
00:00:22,120 --> 00:00:26,839
Cognitive surrender is where you blindly give in to whatever the AI says.

9
00:00:26,840 --> 00:00:28,479
Its answer becomes your answer.

10
00:00:28,480 --> 00:00:32,590
>> Software factory meaning >> Instead of focusing on [music] the prompting,

11
00:00:32,640 --> 00:00:34,639
you're building a system that can do the prompting,

12
00:00:34,640 --> 00:00:40,199
but simply having your loops build everything without guardrails around the blast radius

13
00:00:40,200 --> 00:00:41,519
is a recipe for disaster.

14
00:00:41,520 --> 00:00:45,759
>> What do you think will be important in the next couple of years to stay at the front

15
00:00:45,760 --> 00:00:46,639
of the industry?

16
00:00:46,640 --> 00:00:51,880
>> What we're very likely to see happen next with engineering careers is

17
00:00:55,120 --> 00:00:58,999
>> If you've ever opened Chrome DevTools or optimized a page for Core Web Vitals,

18
00:00:59,000 --> 00:01:00,914
you've used software built by Addy Osmani.

19
00:01:00,915 --> 00:01:03,999
[music] Addy spent 14 years at Google, most of it on Chrome,

20
00:01:04,000 --> 00:01:06,559
going from software engineer to director of engineering.

21
00:01:06,560 --> 00:01:09,559
And when starting out in tech as a teenager in rural Ireland,

22
00:01:09,560 --> 00:01:11,639
he built his own web browser from the ground up.

23
00:01:11,640 --> 00:01:14,670
Today, we talk about the inside story of Chrome DevTools,

24
00:01:14,720 --> 00:01:17,559
why it became the closest thing Google has to an IDE,

25
00:01:17,560 --> 00:01:20,670
and the problems that are still unsolved like memory debugging.

26
00:01:20,720 --> 00:01:23,159
What becomes different when you become a director at Google,

27
00:01:23,160 --> 00:01:27,319
and how Addy stayed hands-on building software while building an engineer org with more

28
00:01:27,320 --> 00:01:31,599
than 50 people. How AI is changing software engineering, cognitive debt,

29
00:01:31,600 --> 00:01:36,239
cognitive surrender, loop engineering, and software factories, [music] and many more.

30
00:01:36,240 --> 00:01:39,679
If you want to hear from someone who has spent decades helping developers understand

31
00:01:39,680 --> 00:01:43,599
the web and is now thinking deeply about how AI changes software engineering,

32
00:01:43,600 --> 00:01:45,039
this episode is for you.

33
00:01:45,040 --> 00:01:47,440
This episode is presented by Antithesis.

34
00:01:47,560 --> 00:01:50,319
If you work with [music] agents, your job is no longer just writing code,

35
00:01:50,320 --> 00:01:52,239
it's specifying and testing it.

36
00:01:52,240 --> 00:01:56,430
And Antithesis [music] is the most effective method of verifying agentic code today.

37
00:01:56,480 --> 00:01:58,079
Before we get into Addy's journey at Google,

38
00:01:58,080 --> 00:02:01,399
I wanted to talk about a really cool product at Google, Google Cloud Run,

39
00:02:01,400 --> 00:02:04,030
and their recently launched Cloud Run Sandboxes.

40
00:02:04,080 --> 00:02:06,679
When you're building AI applications or AI agents,

41
00:02:06,680 --> 00:02:11,510
you often want to run untrusted programs like execute some Python code the model generated,

42
00:02:11,560 --> 00:02:14,039
or run a headless browser to fetch data from the web,

43
00:02:14,040 --> 00:02:16,559
or even execute code submitted by a user.

44
00:02:16,560 --> 00:02:18,839
But, how do you make this fast and secure?

45
00:02:18,840 --> 00:02:21,840
This is exactly what Cloud Run Sandboxes do.

46
00:02:21,880 --> 00:02:23,679
Cloud Run Sandboxes are ephemeral,

47
00:02:23,680 --> 00:02:26,919
isolated gVisor environments that spin up extremely fast.

48
00:02:26,920 --> 00:02:28,879
They were built with security in mind.

49
00:02:28,880 --> 00:02:32,070
They enforce credential and environment isolation.

50
00:02:32,120 --> 00:02:36,399
Basically, they have no access to your service environment variables or secrets.

51
00:02:36,400 --> 00:02:41,479
Sandboxes also operate with lockdown network egress, denied by default, to the internet.

52
00:02:41,480 --> 00:02:44,599
Accelerate development, eliminate infrastructure toil,

53
00:02:44,600 --> 00:02:47,879
and run untrusted workloads with confidence on Google Cloud Run.

54
00:02:47,880 --> 00:02:51,080
Try Cloud Run Sandboxes today at cloud.run.

55
00:02:51,600 --> 00:02:54,199
Adi, it's so nice to have you in person on the podcast.

56
00:02:54,200 --> 00:02:55,870
>> Oh, thank you for having me.

57
00:02:55,920 --> 00:02:59,710
>> And before we kick off into your career and how you got started,

58
00:02:59,760 --> 00:03:02,279
I wanted to ask just before we started recording,

59
00:03:02,280 --> 00:03:08,039
we're talking about how has your day-to-day workflow changed recently a bunch thanks

60
00:03:08,040 --> 00:03:10,070
to all these tools?

61
00:03:10,120 --> 00:03:15,679
>> So, agents have allowed me to take the improbable and turn it into the possible in

62
00:03:15,680 --> 00:03:18,279
ways that are kind of weird and wonderful every day.

63
00:03:18,280 --> 00:03:21,238
I I I manage a lot of my life now using agents.

64
00:03:21,239 --> 00:03:24,999
And one example, uh just from, you know, this week,

65
00:03:25,000 --> 00:03:28,310
we've got the AI world fair happening in San Francisco.

66
00:03:28,360 --> 00:03:31,159
Um I'm doing a closing keynote a couple of days in.

67
00:03:31,160 --> 00:03:36,039
And so, I wanted to make sure I wasn't repeating any beats that other speakers had gone

68
00:03:36,040 --> 00:03:40,879
into depth on. Um and I also wanted to make sure there was good connective tissue from

69
00:03:40,880 --> 00:03:44,039
my talk to a lot of the other sessions that had happened.

70
00:03:44,040 --> 00:03:45,990
Now, normally in the old days,

71
00:03:46,040 --> 00:03:51,200
uh you kind of pray and hope that there was any content from these sessions online,

72
00:03:51,239 --> 00:03:53,030
and maybe you'd look through the abstract.

73
00:03:53,080 --> 00:03:55,999
I was able to fire off a bunch of agents, you know,

74
00:03:56,000 --> 00:04:00,199
go through everything that you can find about the talks from the last couple of days,

75
00:04:00,200 --> 00:04:04,870
look at the abstracts, any social content, anything around that that can be useful.

76
00:04:04,920 --> 00:04:10,439
And that was able to help me kind of sculpt what I already wanted to talk about into

77
00:04:10,440 --> 00:04:16,639
something that I hope is refined and will give people a way to connect from other parts

78
00:04:16,640 --> 00:04:20,119
of this conference back to, you know, the way that I'm going to close it up.

79
00:04:20,120 --> 00:04:22,790
That for me just feels very empowering.

80
00:04:22,840 --> 00:04:25,959
You know, something that would have taken a very long time if it if I would have even

81
00:04:25,960 --> 00:04:28,799
been able to do it at all is now very much within reach.

82
00:04:28,800 --> 00:04:32,119
>> And then you mentioned that it feels like and a lot of people tell you like there's

83
00:04:32,120 --> 00:04:36,719
the kind of like both fun and chaos at the same time right now, like everywhere, right?

84
00:04:36,720 --> 00:04:38,390
>> Yeah. Yeah, absolutely.

85
00:04:38,440 --> 00:04:41,679
Fun and chaos. I think that, you know, for many of us,

86
00:04:41,680 --> 00:04:44,999
when you have a lot of ideas or a lot of vision,

87
00:04:45,000 --> 00:04:49,630
you're often bounded by time or how much can I actually do?

88
00:04:49,680 --> 00:04:53,110
And in some ways agents have unchained us.

89
00:04:53,160 --> 00:04:56,839
Um, and this is one of those reasons why, you know, you keep hearing, "Oh, hey,

90
00:04:56,840 --> 00:05:00,319
what what are you doing with all of that time agents have freed up?"

91
00:05:00,320 --> 00:05:01,799
Well, I'm doing more work.

92
00:05:01,800 --> 00:05:03,479
I think for many of us, if we didn't enjoy it,

93
00:05:03,480 --> 00:05:06,519
we wouldn't be filling that time up with work, but we're having fun with it.

94
00:05:06,520 --> 00:05:09,390
And so, it's fun thriving in that chaos.

95
00:05:09,440 --> 00:05:12,510
>> Yeah, but now take me back to the very beginning.

96
00:05:12,560 --> 00:05:16,079
A lot of us know you and I've got into know you when through your work at Google,

97
00:05:16,080 --> 00:05:19,440
through your books, but I'd like to start from even before.

98
00:05:19,560 --> 00:05:21,399
Where did you start out?

99
00:05:21,400 --> 00:05:25,679
How did you have your first contact with computers?

100
00:05:25,680 --> 00:05:30,470
And how did you build a web browser in when you were a teenager in high school?

101
00:05:30,520 --> 00:05:34,519
>> So, I've always been fascinated with understanding how things work.

102
00:05:34,520 --> 00:05:39,879
And I grew up in uh rural Ireland's, um, which was at times, you know,

103
00:05:39,880 --> 00:05:43,040
we didn't necessarily have the best internet connectivity.

104
00:05:43,080 --> 00:05:45,430
This was back in the days of dial-up.

105
00:05:45,480 --> 00:05:50,359
Uh, and so, my first contact with computers was, uh, you know,

106
00:05:50,360 --> 00:05:52,599
I was probably 8 or 9 years old.

107
00:05:52,600 --> 00:05:56,990
We were very fortunate that my dad was able to get us, uh, our first desktop machine.

108
00:05:57,040 --> 00:05:59,199
And, you know, I'd play around with apps,

109
00:05:59,200 --> 00:06:01,759
I'd play around with just like trying to browse the internet,

110
00:06:01,760 --> 00:06:06,550
and it was always fascinating to me, like, how does any of this work?

111
00:06:06,600 --> 00:06:09,119
I'm just typing in something into an address bar,

112
00:06:09,120 --> 00:06:12,910
and all this information is just rendering somehow.

113
00:06:12,960 --> 00:06:16,279
Um, I'm getting back text, photos, videos.

114
00:06:16,280 --> 00:06:18,350
Like, how does any of this stuff work?

115
00:06:18,400 --> 00:06:23,670
And so, over time, like, I would build out websites, I'd start to get into programming.

116
00:06:23,720 --> 00:06:26,710
My very first programming language was Pascal.

117
00:06:26,760 --> 00:06:30,959
Um, so, I'm a big big fan of the the Borland tool suite.

118
00:06:30,960 --> 00:06:34,510
Uh, I learned C++ uh, when I was fairly young.

119
00:06:34,560 --> 00:06:39,759
And there was one year when, um, I noticed that we had a uh,

120
00:06:39,760 --> 00:06:44,030
kind of popular national science competition, and traditionally,

121
00:06:44,080 --> 00:06:46,879
that competition was very much about, you know, hey,

122
00:06:46,880 --> 00:06:51,759
are do students have interesting breakthroughs or thoughts on physics or chemistry or

123
00:06:51,760 --> 00:06:52,879
any of those things?

124
00:06:52,880 --> 00:06:57,199
But this the year that I'm talking about was the first year where they actually started

125
00:06:57,200 --> 00:06:59,510
to really take computing seriously.

126
00:06:59,560 --> 00:07:03,390
And as I mentioned, um, I didn't have the best internet connection.

127
00:07:03,440 --> 00:07:08,800
Uh, this was also during the time when, especially, uh, if you were a teenager,

128
00:07:09,000 --> 00:07:13,320
you started to get into, you know, learning about downloading stuff.

129
00:07:13,360 --> 00:07:16,199
And we didn't have fast internet connections back then.

130
00:07:16,200 --> 00:07:19,720
If you cared about, you know, checking out a song,

131
00:07:19,960 --> 00:07:22,750
you could be waiting hours for that to download.

132
00:07:22,800 --> 00:07:27,319
If you cared about trying out a music video, man, that could be a a night,

133
00:07:27,320 --> 00:07:30,630
two days sometimes to download it.

134
00:07:30,680 --> 00:07:36,959
And so, I tried to to study how these kind of download managers that were popping up

135
00:07:36,960 --> 00:07:40,559
worked. And download managers kind of offered this one hook.

136
00:07:40,560 --> 00:07:44,480
Well, rather than making connection to a server,

137
00:07:44,520 --> 00:07:48,839
what if we spawned multiple threads and made multiple connections to a server and we

138
00:07:48,840 --> 00:07:50,630
kind of chunked content?

139
00:07:50,680 --> 00:07:52,559
You know, it's classical computer science, you know,

140
00:07:52,560 --> 00:07:54,479
break down problems into smaller chunks.

141
00:07:54,480 --> 00:07:58,710
And so, that was one of the ways and if the server supported, you know,

142
00:07:58,760 --> 00:08:03,999
uh chunking, you were able to in some cases actually get your file downloaded a little

143
00:08:04,000 --> 00:08:06,719
bit faster. And so, it dawned on me like, "Hey,

144
00:08:06,720 --> 00:08:11,600
we're using this technique for downloading individual files.

145
00:08:11,840 --> 00:08:16,279
Has anyone applied this to how we browse the web pages?"

146
00:08:16,280 --> 00:08:20,319
Yeah, and so, obviously I can't I couldn't, you know,

147
00:08:20,320 --> 00:08:24,359
do something complicated before I, you know, took my first baby steps.

148
00:08:24,360 --> 00:08:27,599
And so, I thought, "Okay, I'm going to try exploring how you build a browser."

149
00:08:27,600 --> 00:08:30,470
I started to read, uh you know, specifications.

150
00:08:30,520 --> 00:08:34,359
I was probably 15 years old when I started this, 15 16.

151
00:08:34,360 --> 00:08:36,270
But I started to read specifications.

152
00:08:36,320 --> 00:08:38,989
Okay, HTML, CSS, JavaScript.

153
00:08:39,039 --> 00:08:42,799
One of the things that I gained a great deal of respect for and I still have a lot of

154
00:08:42,800 --> 00:08:49,430
respect for is developers throw all kinds of weird crap at browsers.

155
00:08:49,480 --> 00:08:52,599
And yet they still render something, right?

156
00:08:52,600 --> 00:08:57,070
If you ever want, um you know, if you ever want an interesting,

157
00:08:57,120 --> 00:09:01,479
experiment in in therapy, if you're ever feeling bad about your code,

158
00:09:01,480 --> 00:09:05,470
open up the dev tools and just browse the web for 10 minutes.

159
00:09:05,520 --> 00:09:09,959
The number of things that will go wrong and yet you'll still be able to probably interact

160
00:09:09,960 --> 00:09:11,950
with the site is just wild.

161
00:09:12,000 --> 00:09:12,799
And I had that experience.

162
00:09:12,800 --> 00:09:15,679
>> going wrong, you can just look at the warnings and errors, honestly.

163
00:09:15,680 --> 00:09:17,919
Just options. >> And so,

164
00:09:17,920 --> 00:09:21,159
that was one of the most complicated things when I was trying to build a browser.

165
00:09:21,160 --> 00:09:25,600
It was like, yeah, you can parse HTML, you can parse documents,

166
00:09:25,640 --> 00:09:27,239
you can load up images,

167
00:09:27,240 --> 00:09:33,479
but as soon as you run into pages that stop following those specs and they take a very

168
00:09:33,480 --> 00:09:38,479
loose interpretation of what's supported, you have to really, you know,

169
00:09:38,480 --> 00:09:43,399
roll your sleeves up and try to behave the way that actual consumer browsers did.

170
00:09:43,400 --> 00:09:47,320
And so, I had my fun building out a browser,

171
00:09:47,440 --> 00:09:53,510
adding interactivity and JavaScript support was very difficult.

172
00:09:53,560 --> 00:09:59,230
Managed to get it working and then I'm a sucker for pain because I decided, well,

173
00:09:59,280 --> 00:10:06,119
I guess applets and Flash and, you know, we had Windows Media Player back then.

174
00:10:06,120 --> 00:10:09,470
So, people were like embedding all kinds of interesting content.

175
00:10:09,520 --> 00:10:10,159
I told myself, well,

176
00:10:10,160 --> 00:10:13,159
it's not a complete browser if it doesn't support all these other things.

177
00:10:13,160 --> 00:10:14,799
And so, I added support for them.

178
00:10:14,800 --> 00:10:17,639
And then I could finally get on to what I actually wanted to work on,

179
00:10:17,640 --> 00:10:24,479
which was exploring if I could speed up web browsing for this point in time when you

180
00:10:24,480 --> 00:10:29,710
were kind of constrained by the hardware and bandwidth that was available locally.

181
00:10:29,760 --> 00:10:34,359
Back then, this was this was a personal pain because before before I could get a good

182
00:10:34,360 --> 00:10:35,880
internet connection,

183
00:10:36,040 --> 00:10:41,670
I would literally every weekend I'd specially wear cargo pants that had a lot of pockets

184
00:10:41,720 --> 00:10:45,150
and I would fill my cargo pants with floppy disks.

185
00:10:45,200 --> 00:10:49,639
And I would walk down to our local library that just happened to have a slightly faster

186
00:10:49,640 --> 00:10:51,200
internet connection.

187
00:10:51,320 --> 00:10:55,399
And I would try to like save as much as I could then go back home,

188
00:10:55,400 --> 00:10:56,759
check it out on my computer.

189
00:10:56,760 --> 00:10:58,799
And so, this was a personal mission for me.

190
00:10:58,800 --> 00:11:02,039
I really, really wanted a faster internet connection.

191
00:11:02,240 --> 00:11:04,838
But I finally got to explore this idea.

192
00:11:04,839 --> 00:11:07,159
It worked and in some, you know, back then,

193
00:11:07,160 --> 00:11:10,390
many cases there were servers that supported this idea.

194
00:11:10,440 --> 00:11:12,990
It did make things a little bit faster.

195
00:11:13,040 --> 00:11:18,559
And so, I you know, I I ended up building something that worked for me.

196
00:11:18,560 --> 00:11:23,039
I took it to this national science competition.

197
00:11:23,160 --> 00:11:25,559
I was nobody. I am nobody, but I was nobody.

198
00:11:25,560 --> 00:11:30,159
I was just this kid and I was kind of half expecting to just leave the competition and

199
00:11:30,160 --> 00:11:33,039
go back home at the end of it and say yeah, you know,

200
00:11:33,040 --> 00:11:34,759
I showed some people some cool stuff.

201
00:11:34,760 --> 00:11:39,079
There was like a big live audience at the tail end of this whole event.

202
00:11:39,080 --> 00:11:41,439
It was, you know, on live TV and everything.

203
00:11:41,440 --> 00:11:44,439
And when they called out the overall winner,

204
00:11:44,440 --> 00:11:47,800
I was shocked cuz I did not I didn't expect to win this thing.

205
00:11:47,840 --> 00:11:51,639
And that was my kind of first taste of media attention.

206
00:11:51,640 --> 00:11:52,870
It was very strange.

207
00:11:52,920 --> 00:11:56,759
Um uh the weekend right after, you know, you're a kid.

208
00:11:56,760 --> 00:12:00,080
You you kind of like want to sleep in on a Sunday morning.

209
00:12:00,120 --> 00:12:04,599
You don't really have too many people back then like calling your cell phone or whatever.

210
00:12:04,600 --> 00:12:08,879
>> Yeah. >> Um and my my cell phone is just like not stopping ringing.

211
00:12:08,880 --> 00:12:13,679
The first call is like from the Wall Street Journal and >> So ba- ba- basically you kind

212
00:12:13,680 --> 00:12:17,319
of like went viral in the time where there was not even Twitter, right?

213
00:12:17,320 --> 00:12:19,439
Like there was like none of this just yet.

214
00:12:19,440 --> 00:12:21,919
>> Yeah, it was like, yeah, it's Wall Street Journal, CNN.

215
00:12:21,920 --> 00:12:25,030
It's I didn't really understand what was happening.

216
00:12:25,080 --> 00:12:28,199
But it was it was my first taste of that world.

217
00:12:28,200 --> 00:12:31,560
One of the things that I learned from that experience was

218
00:12:31,880 --> 00:12:35,950
I still didn't fully understand everything that I was doing.

219
00:12:36,000 --> 00:12:37,630
You know, you're a teenager.

220
00:12:37,680 --> 00:12:42,999
Just because you can build an app that runs on your machine and accomplishes a goal doesn't

221
00:12:43,000 --> 00:12:46,079
mean that you understand all of those layers behind the scenes.

222
00:12:46,080 --> 00:12:49,120
And that I think kicked off for me a

223
00:12:49,480 --> 00:12:53,599
lifelong thirst for knowledge and understanding how things work.

224
00:12:53,600 --> 00:12:55,919
In in some ways I can call myself a one-trick pony.

225
00:12:55,920 --> 00:12:59,319
I care about understanding problems and how, you know, how to fix them,

226
00:12:59,320 --> 00:13:01,110
how they work behind the scenes.

227
00:13:01,160 --> 00:13:03,679
Um I would go on to work at startups.

228
00:13:03,680 --> 00:13:06,279
I worked at AOL at one point.

229
00:13:06,280 --> 00:13:09,910
Again, continuing this theme of of working with with browsers.

230
00:13:09,960 --> 00:13:16,550
When I joined AOL um at a very AOL um moment my first day.

231
00:13:16,600 --> 00:13:19,479
Uh my manager uh was a was a very kind guy.

232
00:13:19,480 --> 00:13:22,439
Said like, hey, yeah, you know, go help the team.

233
00:13:22,440 --> 00:13:23,559
Just log into the browser.

234
00:13:23,560 --> 00:13:24,239
Go help the team.

235
00:13:24,240 --> 00:13:24,959
It's like, okay, cool.

236
00:13:24,960 --> 00:13:26,319
I'll I'll do that.

237
00:13:26,320 --> 00:13:32,080
So I fire up um the AOL browser app and I have my work machine.

238
00:13:32,120 --> 00:13:33,679
This app is loaded up.

239
00:13:33,680 --> 00:13:37,799
And before I can debug anything, the first thing it asked me for is my credit card.

240
00:13:37,800 --> 00:13:39,199
I was like, "I'm sorry, what?

241
00:13:39,200 --> 00:13:43,110
I need to enter in my credit card to even start my work?"

242
00:13:43,160 --> 00:13:45,719
And my manager was busy, so I don't know if there was like some work around.

243
00:13:45,720 --> 00:13:49,839
I was like, "Okay, I guess I guess this is what I need to do to to get started with work."

244
00:13:49,840 --> 00:13:51,279
>> Wow. >> Different time.

245
00:13:51,280 --> 00:13:52,910
Very different time.

246
00:13:52,960 --> 00:13:56,799
But years later, I would join Google and I would work on Chrome.

247
00:13:56,800 --> 00:14:00,799
But something for me that's been very interesting is you know,

248
00:14:00,800 --> 00:14:07,510
if you treat computing as this onion where you just keep peeling back the layers,

249
00:14:07,560 --> 00:14:10,630
there's always something interesting behind the scenes.

250
00:14:10,680 --> 00:14:14,230
And the more of those layers that you can peel back and understand,

251
00:14:14,280 --> 00:14:19,470
I think in some ways the better you can optimize for that world.

252
00:14:19,520 --> 00:14:23,879
You know, there was a time when I maybe only understood the surface of how things render.

253
00:14:23,880 --> 00:14:27,990
But if you're talking about browsers, you know, there is the network,

254
00:14:28,040 --> 00:14:31,520
there is compositing, there is the JavaScript engine.

255
00:14:31,560 --> 00:14:36,360
You go down another layer, there's chips, there's memory, there's GPU.

256
00:14:36,400 --> 00:14:40,510
And the more you understand about all of these different foundational pieces,

257
00:14:40,560 --> 00:14:44,039
the better you can then optimize and build something that, you know,

258
00:14:44,040 --> 00:14:47,119
um can serve people even on constrained environments.

259
00:14:47,120 --> 00:14:50,599
So, if you have a a slightly slower phone, well,

260
00:14:50,600 --> 00:14:55,159
I understand now why the phone is slower and what constraints might require us to think

261
00:14:55,160 --> 00:14:57,840
it slightly differently about what we're building there.

262
00:14:57,880 --> 00:15:01,470
So, I'm always a big fan of encouraging people to understand how things work.

263
00:15:01,520 --> 00:15:03,679
>> And then in the spirit of understanding,

264
00:15:03,680 --> 00:15:07,359
one project that you got involved on early on, you know,

265
00:15:07,360 --> 00:15:11,719
you built your custom browser that did some cool stuff and you understand how to render,

266
00:15:11,720 --> 00:15:13,470
parse, do some of these things.

267
00:15:13,520 --> 00:15:15,840
And then you join into the jQuery project.

268
00:15:15,880 --> 00:15:17,270
How did that happen?

269
00:15:17,320 --> 00:15:21,279
>> Yeah, um >> And in jQuery for a while after you joined,

270
00:15:21,280 --> 00:15:27,239
it it it became for a while the most used library in the JavaScript ecosystem.

271
00:15:27,240 --> 00:15:28,359
So, basically across the web.

272
00:15:28,360 --> 00:15:29,959
There there were a few years of that.

273
00:15:29,960 --> 00:15:35,070
>> Yeah. I think full kudos goes to John Resig, the creator of jQuery.

274
00:15:35,120 --> 00:15:41,920
Um jQuery was really my first contribution to a big community open-source project.

275
00:15:41,960 --> 00:15:47,439
And John was someone that was very welcoming and created an environment where people

276
00:15:47,440 --> 00:15:51,590
could, you know, learn and become better open-source contributors.

277
00:15:51,640 --> 00:15:58,159
Uh I started off working with the team of people that would deal with triage and issues,

278
00:15:58,160 --> 00:16:02,910
and then moved on to like working on blog posts and contributing to code and other ways.

279
00:16:02,960 --> 00:16:05,480
But, you know, as you said,

280
00:16:05,520 --> 00:16:10,119
it was so widely used that you end up with so many different use cases people have.

281
00:16:10,120 --> 00:16:12,559
And a lot of the times back then,

282
00:16:12,560 --> 00:16:14,839
people would have very strong opinions about like, "Hey,

283
00:16:14,840 --> 00:16:20,190
this thing should be in the main library in core versus being a plugin."

284
00:16:20,240 --> 00:16:26,559
And I got a lot of respect for how you effectively like work with a community while also

285
00:16:26,560 --> 00:16:29,110
holding a line in terms of, you know,

286
00:16:29,160 --> 00:16:34,990
what decisions should be made to optimize for long-term maintainability, for example.

287
00:16:35,040 --> 00:16:36,840
But, it was a great experience.

288
00:16:37,120 --> 00:16:42,039
Um and that helped me kind of carry those lessons on when I worked on my own open-source

289
00:16:42,040 --> 00:16:44,710
projects. I was very grateful for that opportunity.

290
00:16:44,760 --> 00:16:49,110
>> Yeah. And one of your popular open-source projects back in the day was called TodoMVC.

291
00:16:49,160 --> 00:16:52,789
Can we talk about what it was and why you started it?

292
00:16:52,839 --> 00:16:59,039
>> There was um a point in time back in the dark ages of JavaScript when we didn't have

293
00:16:59,040 --> 00:17:01,510
frameworks and we didn't have libraries.

294
00:17:01,560 --> 00:17:07,759
Over time, those things started to pop up, and we began to have quite a few of them.

295
00:17:07,760 --> 00:17:11,879
And they all tried to accomplish in some to some cases overlapping goals,

296
00:17:11,880 --> 00:17:13,239
sometimes adjacent goals.

297
00:17:13,240 --> 00:17:17,269
>> And we're talking about libraries like Angular about Angular,

298
00:17:17,319 --> 00:17:21,350
Backbone, YUI, Ext JS.

299
00:17:21,400 --> 00:17:24,599
And if, you know, if you're too young for any of these terms to mean anything,

300
00:17:24,600 --> 00:17:26,310
that's also totally okay.

301
00:17:26,360 --> 00:17:30,639
Um, but there were there was this burgeoning community of libraries and frameworks that

302
00:17:30,640 --> 00:17:32,199
were starting to pop up.

303
00:17:32,200 --> 00:17:37,630
And one thing that I personally struggled with was well, how do these things differ?

304
00:17:37,680 --> 00:17:41,239
You know, you can go and you can check out the landing page for any of these projects

305
00:17:41,240 --> 00:17:46,710
and they all say like, yeah, we're going to help you build apps you know, easier.

306
00:17:46,760 --> 00:17:53,319
But, um, I was very big into education and trying to understand how these things worked.

307
00:17:53,320 --> 00:18:00,950
So, I started off by creating basically the same application in every one of these frameworks

308
00:18:01,000 --> 00:18:06,679
and try to standardize the functionality so that if you were in the same position I was

309
00:18:06,680 --> 00:18:09,319
and you just wanted to get a sense of, okay, well,

310
00:18:09,320 --> 00:18:12,599
how does the architecture philosophy change between these things?

311
00:18:12,600 --> 00:18:14,430
How does the syntax differ?

312
00:18:14,480 --> 00:18:18,319
If they're telling you to build a component or a piece of UI,

313
00:18:18,320 --> 00:18:21,430
what is the position they're taking on it versus somebody else?

314
00:18:21,480 --> 00:18:25,679
And so, I got a lot of personal value out of the way that I was building this this thing

315
00:18:25,680 --> 00:18:29,190
up. And so, I put it out into the world.

316
00:18:29,240 --> 00:18:31,559
I had no expectations of it being useful.

317
00:18:31,560 --> 00:18:35,599
>> But but basically it was you implemented a to-do app or the same to-do app with a

318
00:18:35,600 --> 00:18:38,479
different frameworks and you could kind of compare how they differed.

319
00:18:38,480 --> 00:18:45,039
>> Yeah. Yeah. And the idea was I wanted an application that was simple enough for almost

320
00:18:45,040 --> 00:18:47,599
anybody to be able to use and reason about,

321
00:18:47,600 --> 00:18:51,959
but it needed to have enough interactivity and enough functionality that you could really

322
00:18:51,960 --> 00:18:56,359
kind of stress test at least some of that functionality a framework offered.

323
00:18:56,360 --> 00:19:01,559
In some cases, you know, that would be state management or routing or other things.

324
00:19:01,560 --> 00:19:03,670
And so, I put this out into the world.

325
00:19:03,720 --> 00:19:09,319
I was kind of shocked at how many other developers were running into this exact same

326
00:19:09,320 --> 00:19:13,360
challenge. And the project quickly took off.

327
00:19:13,400 --> 00:19:16,559
It started to get a lot of stars back in the day.

328
00:19:16,560 --> 00:19:20,719
It got thousands and thousands of stars very quickly and I didn't quite know what was

329
00:19:20,720 --> 00:19:25,919
happening. Um and before long I had people who were working on new frameworks or new

330
00:19:25,920 --> 00:19:30,200
versions of frameworks reaching out to me um saying like hey

331
00:19:30,560 --> 00:19:33,799
this is cool. Here's my pull request with my framework.

332
00:19:33,800 --> 00:19:34,879
Can can you add it?

333
00:19:34,880 --> 00:19:36,839
Can we work together on standardizing it?

334
00:19:36,840 --> 00:19:41,719
I met some of my first um true open source friends through this project.

335
00:19:41,720 --> 00:19:43,799
Uh people who are now, you know,

336
00:19:43,800 --> 00:19:48,159
very well established in their own uh means like Sindresorhus who's written quite a lot

337
00:19:48,160 --> 00:19:49,919
of Node modules over time.

338
00:19:49,920 --> 00:19:54,080
This idea of just giving people a simple enough application

339
00:19:54,720 --> 00:19:57,559
ended up becoming in some ways a standard for a number of years.

340
00:19:57,560 --> 00:19:59,839
I began to see that you know,

341
00:19:59,840 --> 00:20:03,239
if a framework was giving people a tutorial about how to use them,

342
00:20:03,240 --> 00:20:06,830
they would actually use it to do MVC app as their baseline.

343
00:20:06,880 --> 00:20:07,799
It's been so many years.

344
00:20:07,800 --> 00:20:10,790
That was at the start of my career career in many ways.

345
00:20:10,840 --> 00:20:12,319
Even this last year,

346
00:20:12,320 --> 00:20:17,239
I still see labs sometimes like showing off to do MVC apps when they're trying to test

347
00:20:17,240 --> 00:20:22,510
out features and the longevity of this thing has been um very surprising to me.

348
00:20:22,560 --> 00:20:28,870
Another thing that was surprising was at one point uh when the project was taking off

349
00:20:28,920 --> 00:20:31,239
uh Apple reached out to me.

350
00:20:31,240 --> 00:20:32,919
Uh yeah, Apple reached out to me.

351
00:20:32,920 --> 00:20:37,959
Uh and specifically the people who are working on Safari and WebKit and they said,

352
00:20:37,960 --> 00:20:43,000
you know, hey, we're interested in working on a browser benchmark

353
00:20:43,520 --> 00:20:48,839
to help browser vendors understand like are they doing a good job at being responsive?

354
00:20:48,840 --> 00:20:51,719
And responsive here doesn't mean responsive in the mobile sense,

355
00:20:51,720 --> 00:20:56,479
but responsive in terms of interactivity and are we responding to clicks and taps quickly?

356
00:20:56,480 --> 00:20:58,039
They reached out to me and they said, hey,

357
00:20:58,040 --> 00:21:01,190
would you like to collaborate with us on this thing?

358
00:21:01,240 --> 00:21:05,430
And what that turned out to be um was Speedometer.

359
00:21:05,480 --> 00:21:12,559
Speedometer uh over the years has become the primary responsiveness benchmark web

360
00:21:12,560 --> 00:21:16,959
application benchmark for all browsers and it's continued to be for a very long time.

361
00:21:16,960 --> 00:21:19,879
Browser vendors now collaborate together on it.

362
00:21:19,880 --> 00:21:25,959
They've kept it up-to-date so as new frameworks as new architectural paradigms have come

363
00:21:25,960 --> 00:21:31,639
out over the years they've kept updating it and that in many ways is like carried that

364
00:21:31,640 --> 00:21:36,159
the legacy of that project through to today and I've been just very happy that it's given

365
00:21:36,160 --> 00:21:37,839
people value of any kind.

366
00:21:37,840 --> 00:21:40,119
>> And you were building stuff on the side.

367
00:21:40,120 --> 00:21:43,950
You were also working at at consultancies AOL at different startups.

368
00:21:44,000 --> 00:21:45,439
How did Google come along?

369
00:21:45,440 --> 00:21:48,470
>> So Google was an interesting one.

370
00:21:48,520 --> 00:21:52,240
Um I remember one of my first

371
00:21:52,680 --> 00:21:58,920
longer periods of time spent in the US was when I was visiting my my wife and her parents

372
00:21:58,960 --> 00:22:06,199
out in the Midwest and I was sitting I remember in in their room watching

373
00:22:06,200 --> 00:22:12,279
TV and there's this documentary about Google that came on and they showed like you know

374
00:22:12,280 --> 00:22:17,039
engineer early engineers that have been working there and why they enjoyed the environment

375
00:22:17,040 --> 00:22:22,920
and I told myself you know I would love to work in a place like that someday.

376
00:22:23,160 --> 00:22:28,639
Um I continued to put out free education into the front end world and the JavaScript

377
00:22:28,640 --> 00:22:34,879
world web app world over the years and uh at some point I guess Google noticed that it

378
00:22:34,880 --> 00:22:41,879
was useful to some people and so they reached out and wanted to interview me for um a

379
00:22:41,880 --> 00:22:44,470
devrel and and builder role.

380
00:22:44,520 --> 00:22:48,799
Um there were there's a some tooling that they were trying to build out at the time that

381
00:22:48,800 --> 00:22:55,319
they thought could be a good use of some of my skills but also some just general evangelism

382
00:22:55,320 --> 00:22:57,350
they wanted to do in the tech community.

383
00:22:57,400 --> 00:23:03,439
Uh and you know the stars aligned just happened to to work out and I ended up working

384
00:23:03,440 --> 00:23:04,559
on the Chrome team.

385
00:23:04,560 --> 00:23:05,439
>> And then when you joined,

386
00:23:05,440 --> 00:23:09,119
can you tell us a little bit more about when you were the Chrome Chrome team?

387
00:23:09,120 --> 00:23:10,999
What was What was Chrome like?

388
00:23:11,000 --> 00:23:13,999
What kind of work did you and the team do?

389
00:23:14,000 --> 00:23:18,479
Because now Chrome is synonym for web browser.

390
00:23:18,480 --> 00:23:22,039
I know there's other browsers, and every now and then, of course,

391
00:23:22,040 --> 00:23:24,879
they have some market share, but Chrome has largely won the market.

392
00:23:24,880 --> 00:23:29,279
But back then, when you joined, this was not the case just yet, was it?

393
00:23:29,280 --> 00:23:31,910
>> I remember back when I joined,

394
00:23:31,960 --> 00:23:39,400
uh it was It was a period when we were very excited about developers

395
00:23:39,720 --> 00:23:42,590
bringing their creativity to the platform.

396
00:23:42,640 --> 00:23:47,999
So, what can you do to push on the platform and show us both what's possible as well

397
00:23:48,000 --> 00:23:52,519
as the gaps so that we can potentially help fill those gaps and build better APIs.

398
00:23:52,520 --> 00:23:56,719
So, I remember there was this great Chrome experiment site that we had back in the day

399
00:23:56,720 --> 00:23:58,399
where we would, you know,

400
00:23:58,400 --> 00:24:01,999
sometimes work with studios or work with developers and just showcase, like, "Hey,

401
00:24:02,000 --> 00:24:06,999
here's Here's a cool WebGL example that maybe you wouldn't have otherwise come across."

402
00:24:07,000 --> 00:24:12,359
And that served as inspiration for some people to maybe even go and then learn more about

403
00:24:12,360 --> 00:24:15,319
shaders or, you know, different libraries.

404
00:24:15,320 --> 00:24:21,079
It was also a period of time when I would say front-end tooling was uh still very much

405
00:24:21,080 --> 00:24:22,079
heavily evolving.

406
00:24:22,080 --> 00:24:24,359
But you know, for >> about 2012, 2013?

407
00:24:24,360 --> 00:24:26,400
>> talking 2012, 2013.

408
00:24:26,800 --> 00:24:32,519
Uh this was at a time prior to uh what what I would now call meta framework.

409
00:24:32,520 --> 00:24:35,199
So, like Next.js, for example, a meta framework.

410
00:24:35,200 --> 00:24:36,959
It tries to Yeah, it didn't exist.

411
00:24:36,960 --> 00:24:42,199
So, we were we're going all the way back to a time when we didn't have the best build

412
00:24:42,200 --> 00:24:43,919
tools even for front-end.

413
00:24:43,920 --> 00:24:45,520
We didn't have

414
00:24:46,520 --> 00:24:51,910
Yeah, we didn't have um we didn't necessarily have well-standardized JavaScript modules,

415
00:24:51,960 --> 00:24:53,390
you know, in all browsers.

416
00:24:53,440 --> 00:25:01,070
People were still using, you know, um AMD and UMDs, CommonJS, things like that.

417
00:25:01,120 --> 00:25:06,190
And you know, the build tooling and the scaffolding tooling was still very much evolving.

418
00:25:06,240 --> 00:25:11,439
And so, this was the period of time when you went through things like Grunt for for anyone

419
00:25:11,440 --> 00:25:15,879
that, you know, maybe we're dating ourselves, but Grunt as a as a build system.

420
00:25:15,880 --> 00:25:18,959
>> And also when you debugged the browser, you would use Firebug.

421
00:25:18,960 --> 00:25:23,079
You'd open in Firefox and then hope that like in IE it would work,

422
00:25:23,080 --> 00:25:26,630
but if it didn't, there weren't many good debugging tools in IE specifically.

423
00:25:26,680 --> 00:25:29,319
Uh later they became better, but back there was a time where there was none.

424
00:25:29,320 --> 00:25:32,919
>> Yeah, I and I think that you know, back back in the heyday,

425
00:25:32,920 --> 00:25:37,399
there was a lot of workarounds people were trying to apply to still have a toolbox of

426
00:25:37,400 --> 00:25:39,479
some sort before things got much better.

427
00:25:39,480 --> 00:25:43,399
We put some some work into working with, you know,

428
00:25:43,400 --> 00:25:48,319
the folks who were building out build tools and test runners and scaffolding tools.

429
00:25:48,320 --> 00:25:53,390
We worked on our our own contribution called Yeoman back in the day.

430
00:25:53,440 --> 00:25:57,319
And Yeoman was really about Um I don't know that I'd call it, you know,

431
00:25:57,320 --> 00:25:58,279
the first meta framework,

432
00:25:58,280 --> 00:26:05,000
but I would call it an attempt at trying to bring just a little bit of organization

433
00:26:05,520 --> 00:26:07,079
to your starting point.

434
00:26:07,080 --> 00:26:13,239
Yeoman was a scaffolding tool we created where you would get a wizard in your CLI and

435
00:26:13,240 --> 00:26:14,239
you'd kind of say, well, yeah,

436
00:26:14,240 --> 00:26:19,679
I'm trying to build this thing and maybe I'm interested in using this UI library and

437
00:26:19,680 --> 00:26:21,310
this testing library.

438
00:26:21,360 --> 00:26:24,510
And maybe I'm interested in deploying to this target.

439
00:26:24,560 --> 00:26:27,070
Now, for folks who are listening in,

440
00:26:27,120 --> 00:26:31,559
those ideas might now sound very standard and things that you will find in all of the

441
00:26:31,560 --> 00:26:32,479
tools you're regularly using.

442
00:26:32,480 --> 00:26:34,230
Back then they didn't exist.

443
00:26:34,280 --> 00:26:38,039
And I wouldn't be surprised if many of the modules we created back then are still being

444
00:26:38,040 --> 00:26:40,870
used under the hood for some of your favorite tools.

445
00:26:40,920 --> 00:26:44,519
So, it was it was very fun getting to be a part of that moment where we were trying to

446
00:26:44,520 --> 00:26:46,919
like figure things out and reduce friction.

447
00:26:46,920 --> 00:26:48,839
But I will say that, you know,

448
00:26:48,840 --> 00:26:53,199
there was this long period where we kept changing tools what felt like every every once

449
00:26:53,200 --> 00:26:53,959
in a while, right?

450
00:26:53,960 --> 00:26:59,519
You went from Grunt to Gulp to Webpack to, you know, to to V.

451
00:26:59,520 --> 00:27:03,479
Rollup, all these all these things kept evolving and I was happy to see the evolution,

452
00:27:03,480 --> 00:27:07,439
but um I'm also happy that things in some ways feel like they stabilized.

453
00:27:07,440 --> 00:27:09,759
>> Yeah, there there was I think it's it's it was turned,

454
00:27:09,760 --> 00:27:11,679
but I mean that's when innovation happens.

455
00:27:11,680 --> 00:27:14,110
Did you work on Google Chrome DevTools?

456
00:27:14,160 --> 00:27:15,959
>> Yeah. >> How did that start?

457
00:27:15,960 --> 00:27:19,559
Because I I remember in 2012, I'm not sure if there was DevTools, but again,

458
00:27:19,560 --> 00:27:21,790
there was the state of the art was Firebug.

459
00:27:21,840 --> 00:27:23,639
It was I think it was open source.

460
00:27:23,640 --> 00:27:28,550
It it was actually just superior debugging on the web to anything before.

461
00:27:28,600 --> 00:27:30,719
And I'm not sure at what point, but I do remember, you know,

462
00:27:30,720 --> 00:27:34,919
Chrome DevTools slowly started to emerge and it it started to bring a bunch of new stuff

463
00:27:34,920 --> 00:27:37,279
like you could do performance monitoring, some of those things.

464
00:27:37,280 --> 00:27:40,439
Can Can you tell me from the inside how how did it start?

465
00:27:40,440 --> 00:27:44,519
>> Yeah. >> What what you built, how you figured it out what to build.

466
00:27:44,520 --> 00:27:48,519
>> Yeah. So, I have to give a shoutout to um Pavel Feldman,

467
00:27:48,520 --> 00:27:53,799
who was the tech lead uh for Chrome DevTools and and really played a very large role

468
00:27:53,800 --> 00:27:56,750
in helping it um come to be originally.

469
00:27:56,800 --> 00:28:00,359
There was this uh period of time when, you know,

470
00:28:00,360 --> 00:28:05,519
uh Chrome was trying to figure out how it differentiated its developer tooling story

471
00:28:05,520 --> 00:28:09,830
from WebKit, where we had the, you know, Safari Inspector, the WebKit Inspector.

472
00:28:09,880 --> 00:28:14,720
And I think there's a very specific direction that was developer-centric

473
00:28:15,200 --> 00:28:20,919
um and cared about the ecosystem that Pavel and his team uh were trying to to help out

474
00:28:20,920 --> 00:28:26,839
with. And I noticed that they had a very good relationship talking to not just uh developer

475
00:28:26,840 --> 00:28:27,399
evangelists. So,

476
00:28:27,400 --> 00:28:32,839
this was the time when we had really sharp minds like Paul Irish uh around also like

477
00:28:32,840 --> 00:28:35,910
working very heavily with the Chrome DevTools team.

478
00:28:35,960 --> 00:28:38,839
We would later have um folks like Paul Backhaus,

479
00:28:38,840 --> 00:28:43,839
who is now known for things like impeccable, um the impeccable skill for design,

480
00:28:43,840 --> 00:28:49,319
and uh I feel like uh one of the nice things about that period of time was you had these

481
00:28:49,320 --> 00:28:54,239
people who were web developer archetypes and were builders on the side, myself,

482
00:28:54,240 --> 00:28:59,199
all the Pauls. And we would try to bring those insights to the DevTools team and help

483
00:28:59,200 --> 00:29:02,519
them understand, well, here are the areas of friction that we're running into.

484
00:29:02,520 --> 00:29:06,879
In some cases, you can't just build tools to help you out with them because you don't

485
00:29:06,880 --> 00:29:08,920
have the underlying instrumentation.

486
00:29:09,360 --> 00:29:12,839
Um, and so I was very happy to see things like, uh,

487
00:29:12,840 --> 00:29:15,479
performance tooling heavily evolve over the years.

488
00:29:15,480 --> 00:29:20,350
Like the DevTools performance panel is just an amazing piece of technology.

489
00:29:20,400 --> 00:29:24,030
The fact that you can just hit record, start interacting with your page,

490
00:29:24,080 --> 00:29:25,879
and you get a flame graph,

491
00:29:25,880 --> 00:29:30,110
you get very deep tracing about where all of the time is being spent.

492
00:29:30,160 --> 00:29:32,910
And that continued to evolve over time.

493
00:29:32,960 --> 00:29:35,559
And then we had, you know, really hard problems.

494
00:29:35,560 --> 00:29:39,070
Uh, you know, some of the hardest problems have been around memory.

495
00:29:39,120 --> 00:29:42,279
Right? I would say, sometimes, I don't know if it's controversial,

496
00:29:42,280 --> 00:29:46,600
that very few developers understand memory management.

497
00:29:46,840 --> 00:29:50,710
And that makes it even harder to debug memory problems.

498
00:29:50,760 --> 00:29:55,799
And so the state of the art around memory debugging hasn't evolved all that much over

499
00:29:55,800 --> 00:29:58,000
the years. But it's a hard problem.

500
00:29:58,040 --> 00:30:01,439
Uh, the DevTools team tackled a lot of interesting hard problems.

501
00:30:01,440 --> 00:30:05,959
>> Can we can we talk about a part that the where you brought in something new cuz,

502
00:30:05,960 --> 00:30:09,479
you know, debugging memory just back in the day, it's pretty much, I mean,

503
00:30:09,480 --> 00:30:11,119
if you have a language that has, let's say, heap,

504
00:30:11,120 --> 00:30:13,919
you can try to visualize what's on there.

505
00:30:13,920 --> 00:30:19,599
You can attempt and maybe succeed at locating uh, which variables there are.

506
00:30:19,600 --> 00:30:24,350
And then you can try to also, I mean, some variables are are the easy part.

507
00:30:24,400 --> 00:30:26,240
There's also stacks.

508
00:30:26,440 --> 00:30:27,999
And, you know, it gets a little bit messy,

509
00:30:28,000 --> 00:30:32,759
but you you you basically have a memory and and you're typically interested in what is

510
00:30:32,760 --> 00:30:37,999
growing. And there's a part that I I don't I don't I don't know that we got too far on

511
00:30:38,000 --> 00:30:41,279
that, but you're kind of trying to see is this is this getting bigger?

512
00:30:41,280 --> 00:30:43,239
What are the loops where's my stack?

513
00:30:43,240 --> 00:30:48,990
>> I would say that there are a few interesting arcs where we were seeing,

514
00:30:49,040 --> 00:30:52,959
you know, ourselves and developers externally running into certain kinds of friction.

515
00:30:52,960 --> 00:30:57,839
And um, you know, work with the DevTools team to try evolving some tooling in that direction.

516
00:30:57,840 --> 00:31:03,910
One of the the big arcs was embracing the fact that developers were increasingly using

517
00:31:03,960 --> 00:31:06,799
frameworks and libraries to build for the web.

518
00:31:06,800 --> 00:31:11,039
>> Yep. >> Now, um, for anyone that remembers those dark ages,

519
00:31:11,040 --> 00:31:14,079
imagine that you have a page that's very interactive.

520
00:31:14,080 --> 00:31:18,399
It's using lots of different libraries and you're trying to debug what's happened.

521
00:31:18,400 --> 00:31:21,359
What part of that code do you actually care about?

522
00:31:21,360 --> 00:31:26,350
Do you care about the framework code that is powering things behind the scenes?

523
00:31:26,400 --> 00:31:30,159
Do you care about the plugins or the components sitting on top of it that you haven't

524
00:31:30,160 --> 00:31:34,230
written? Do you care about the code you yourself have written?

525
00:31:34,280 --> 00:31:39,150
And so you have all of these very nuanced aspects of debugging that need a solution.

526
00:31:39,200 --> 00:31:43,999
One of the things that we we tried to introduce was just this respect and understanding

527
00:31:44,000 --> 00:31:47,440
that yeah, developers are going to be using these different tech stacks.

528
00:31:47,480 --> 00:31:50,879
You know, we had a source maps story sitting there >> Yeah.

529
00:31:50,880 --> 00:31:54,519
>> where potentially we can start to reason about what's in >> can you can map back to

530
00:31:54,520 --> 00:31:56,359
like what part of the code >> Exactly.

531
00:31:56,360 --> 00:31:57,279
>> which is not trivial.

532
00:31:57,280 --> 00:31:58,910
>> Exactly, which is not trivial.

533
00:31:58,960 --> 00:32:03,999
And a lot of kudos to the team because I think we ended up on a source map story that

534
00:32:04,000 --> 00:32:06,719
really helps you reason well about, you know,

535
00:32:06,720 --> 00:32:09,599
even if you were using a long tool chain of things.

536
00:32:09,600 --> 00:32:13,559
Like if take a look at any tools that developers for any big site, you know,

537
00:32:13,560 --> 00:32:17,919
whether it's Uber or Netflix or any large Twitter, any large site,

538
00:32:17,920 --> 00:32:21,439
you probably underestimate the complexity and the number of tools that you are running

539
00:32:21,440 --> 00:32:24,039
at any one time for any one task, you know,

540
00:32:24,040 --> 00:32:27,599
and being able to still allow people to see, well, hey,

541
00:32:27,600 --> 00:32:30,239
here's actually the files that you care about.

542
00:32:30,240 --> 00:32:31,519
It's a hard problem.

543
00:32:31,520 --> 00:32:37,070
I think that allowing people to get that view was part part the value that we we brought.

544
00:32:37,120 --> 00:32:41,399
We introduced different kinds of black box uh views over the years so that you could

545
00:32:41,400 --> 00:32:42,879
say, "Well, hey, actually,

546
00:32:42,880 --> 00:32:47,479
I know that I don't care about you telling me there's an issue with, for example,

547
00:32:47,480 --> 00:32:48,790
the React library,

548
00:32:48,840 --> 00:32:52,710
but I do want you to tell me that there's an issue with the React code that I wrote."

549
00:32:52,760 --> 00:32:57,759
And so giving you even those toggles, those controls, I think was very powerful for people.

550
00:32:57,760 --> 00:33:01,190
Mobile was another big moment that changed everything.

551
00:33:01,240 --> 00:33:07,959
Um and you know, if you think about mobile, today I would say, you know,

552
00:33:07,960 --> 00:33:11,319
there's probably established best practices around the things to test, right?

553
00:33:11,320 --> 00:33:16,199
Like you want to test out your viewport width, your tap targets.

554
00:33:16,200 --> 00:33:20,150
Like is you know, if I'm tapping on something, exactly, is it big enough?

555
00:33:20,200 --> 00:33:21,159
Exactly. You know,

556
00:33:21,160 --> 00:33:25,079
there are all these different kinds of sensors even that mobile devices have.

557
00:33:25,080 --> 00:33:29,510
We didn't we didn't have tooling around any of this stuff originally.

558
00:33:29,560 --> 00:33:34,830
And so we ended up building out a nice device mode in DevTools that would allow you to

559
00:33:34,880 --> 00:33:38,999
preview, you know, what your site would look like at different viewport sizes.

560
00:33:39,000 --> 00:33:41,519
You can very quickly kind of toggle and say, "Yeah,

561
00:33:41,520 --> 00:33:45,990
this is what it roughly looks like on an iPhone or a Pixel device."

562
00:33:46,040 --> 00:33:47,710
And of course, you know,

563
00:33:47,760 --> 00:33:52,039
the the absolute best kind of testing would be trying it out on one of those app those

564
00:33:52,040 --> 00:33:57,119
actual devices, but even to quickly get a sense of whether you're headed in the right

565
00:33:57,120 --> 00:34:00,230
direction was a was very valuable to people.

566
00:34:00,280 --> 00:34:05,870
And we would evolve that over time as more of those best practices started to establish.

567
00:34:05,920 --> 00:34:10,760
I guess the web apps growing up, so PWAs, progressive web apps.

568
00:34:10,800 --> 00:34:14,310
Uh there was a period of time when, you know,

569
00:34:14,360 --> 00:34:19,878
people really wanted to make the web uh competitive compared to native.

570
00:34:19,879 --> 00:34:22,550
And so you think about, "Well, what are the things that are missing?"

571
00:34:22,600 --> 00:34:28,829
Well, uh you need a really good story for offline caching, push notifications,

572
00:34:28,879 --> 00:34:30,550
background sync.

573
00:34:30,600 --> 00:34:33,039
All of these capabilities that, you know,

574
00:34:33,040 --> 00:34:38,239
we didn't necessarily have a strong story for and because these are non-trivial features,

575
00:34:38,240 --> 00:34:40,719
you need to have a debugging story around all of them.

576
00:34:40,720 --> 00:34:44,439
And so, we helped build out the application panel so that you can go in and for any of

577
00:34:44,440 --> 00:34:48,999
these features, whether it's debugging service workers or it's debugging your cache or

578
00:34:49,000 --> 00:34:52,270
debugging any of these things, you're able to do that.

579
00:34:52,320 --> 00:34:56,950
And so, even though the tool set has expanded over time for each of these eras,

580
00:34:57,000 --> 00:34:59,559
I feel like DevTools has been able to keep up,

581
00:34:59,560 --> 00:35:04,319
especially as the APIs in the browser has also been evolving over time to meet these

582
00:35:04,320 --> 00:35:05,119
moments. >> Well,

583
00:35:05,120 --> 00:35:09,439
this is interesting because I I usually when I look through different companies and their

584
00:35:09,440 --> 00:35:14,990
strengths, Microsoft is amazing at building IDEs and so is for example JetBrains.

585
00:35:15,040 --> 00:35:22,799
But for Google, I never felt that Google was any good at building IDEs except for

586
00:35:22,800 --> 00:35:23,839
inside of Chrome.

587
00:35:23,840 --> 00:35:27,239
Like whenever I I have to debug a web application,

588
00:35:27,240 --> 00:35:29,679
I always I the past like many many years,

589
00:35:29,680 --> 00:35:32,719
I use Chrome DevTools because it it had I mean,

590
00:35:32,720 --> 00:35:35,959
the kind of debug functionality I'm used to having Visual Studio have,

591
00:35:35,960 --> 00:35:37,839
which is breakpoints, conditional breakpoints,

592
00:35:37,840 --> 00:35:42,479
all sorts of so many debug options from as as you we just said, performance,

593
00:35:42,480 --> 00:35:45,399
memory, being able to simulate some of those things.

594
00:35:45,400 --> 00:35:49,719
So, it's very interesting to for me to see that it's almost as if I'm not sure if this

595
00:35:49,720 --> 00:35:51,999
was you, your team or Google as a whole,

596
00:35:52,000 --> 00:35:55,839
but they realized the browser is very important and so so they built like almost like

597
00:35:55,840 --> 00:35:57,719
an it's almost like an IDE inside of it.

598
00:35:57,720 --> 00:36:04,279
You can you can edit the things inline and I think as engineers or as developers,

599
00:36:04,280 --> 00:36:08,239
unless you work in front end, you never really notice this, but well when you do,

600
00:36:08,240 --> 00:36:10,559
it's fascinating how how how it came together.

601
00:36:10,560 --> 00:36:14,279
>> Yeah, it's really fascinating and I think that uh are we an IDE,

602
00:36:14,280 --> 00:36:15,359
aren't we an IDE,

603
00:36:15,360 --> 00:36:19,199
is that a direction we want to go in was always a hot topic uh for the team.

604
00:36:19,200 --> 00:36:22,399
And I think that where things kind of landed was well,

605
00:36:22,400 --> 00:36:25,079
we want to meet developers where they're at because you're always going to have your

606
00:36:25,080 --> 00:36:26,960
favorite, you know, editor.

607
00:36:27,000 --> 00:36:30,559
Now, we're talking about, you know, your your control planes for your agents.

608
00:36:30,560 --> 00:36:32,159
You're always going to have a different surface, right,

609
00:36:32,160 --> 00:36:33,999
that you want to primarily work in.

610
00:36:34,000 --> 00:36:37,399
And as long as DevTools can meet you where you're at and be useful,

611
00:36:37,400 --> 00:36:40,159
I think that that that's been something the team has tried to do.

612
00:36:40,160 --> 00:36:41,839
We continued having other eras.

613
00:36:41,840 --> 00:36:48,519
Um Yang Gao uh became uh our next tech lead uh after after Pavel and helped us through

614
00:36:48,520 --> 00:36:53,719
the era of trying to figure out AI is now in the picture and we want to both be able

615
00:36:53,720 --> 00:36:58,879
to help humans reason through this massive amount of data that the browser generates

616
00:36:58,880 --> 00:37:03,919
for you, as well as make it possible for you to connect your agent up to Chrome and DevTools

617
00:37:03,920 --> 00:37:08,120
and be able to have it just automate, you know, a lot of these journeys for you.

618
00:37:08,160 --> 00:37:11,550
And so, I think that for the first of those problems,

619
00:37:11,600 --> 00:37:16,310
uh I remember anytime I would work with a big site on their performance problems,

620
00:37:16,360 --> 00:37:19,199
uh you could easily spend half a day, um you know,

621
00:37:19,200 --> 00:37:23,120
just looking at traces before you've even written any fixes at all.

622
00:37:23,160 --> 00:37:25,310
And now that we have LLMs,

623
00:37:25,360 --> 00:37:29,959
it's very quick to like reason through massive stack traces and actually be able to get

624
00:37:29,960 --> 00:37:31,359
down to fixes you can make.

625
00:37:31,360 --> 00:37:35,110
And that's just been really, really wonderful to see happen.

626
00:37:35,160 --> 00:37:39,319
>> Addy just described using LLMs to go from massive stack traces to working fixes,

627
00:37:39,320 --> 00:37:42,670
which is a perfect moment to talk about our season sponsor, Sentry.

628
00:37:42,720 --> 00:37:45,159
You probably already know what Sentry is because you're a developer.

629
00:37:45,160 --> 00:37:47,239
If not, just ask a dev and they'll tell you.

630
00:37:47,240 --> 00:37:51,279
I use Sentry to monitor the back end of the Pragmatic Engineer for any and all errors.

631
00:37:51,280 --> 00:37:53,319
Of course, Sentry doesn't only do errors.

632
00:37:53,320 --> 00:37:56,070
They also have logs, replays, spans, profiles,

633
00:37:56,120 --> 00:37:58,999
and more because they're all connected by the same trace.

634
00:37:59,000 --> 00:38:03,319
One new capability Sentry has built that I'm really liking is the ability to fix errors.

635
00:38:03,320 --> 00:38:04,039
Let me show you.

636
00:38:04,040 --> 00:38:06,679
Here's the list of errors on my admin back end.

637
00:38:06,680 --> 00:38:09,079
There's a recent error on off that I want to check out.

638
00:38:09,080 --> 00:38:11,639
Let's have Sear run an auto fix for us.

639
00:38:11,640 --> 00:38:13,999
Sear is Sentry's AI debugging tool.

640
00:38:14,000 --> 00:38:16,880
First, it generates a root cause analysis.

641
00:38:17,000 --> 00:38:21,470
It's finding some problem with HTTP versus HTTPS URLs.

642
00:38:21,520 --> 00:38:24,039
Cool. Now that we know what's going wrong,

643
00:38:24,040 --> 00:38:27,079
Sentry can create a plan on how to go about fixing it.

644
00:38:27,080 --> 00:38:29,199
I could go and edit this plan, but I'm happy with it.

645
00:38:29,200 --> 00:38:31,590
So, let's create an actual code fix.

646
00:38:31,640 --> 00:38:33,670
Here's a code fix that Sentry generated.

647
00:38:33,720 --> 00:38:38,079
Assuming it looks good, and in my case it does, let's draft a pull request.

648
00:38:38,080 --> 00:38:41,950
And boom, the pull request is created, ready to merge.

649
00:38:42,000 --> 00:38:45,919
What I love about Autofix is how Sentry went from showing a list of errors inside my

650
00:38:45,920 --> 00:38:51,279
application to offering me a fast way to fix it and close the loop while I stay in charge

651
00:38:51,280 --> 00:38:52,839
of this bug fix the whole time.

652
00:38:52,840 --> 00:38:55,559
Debugging just got a whole lot faster and a whole lot easier.

653
00:38:55,560 --> 00:38:57,640
Check out Sentry at sentry.io/pragmatic

654
00:38:58,040 --> 00:39:00,839
and start detecting errors, diagnosing their root causes,

655
00:39:00,840 --> 00:39:03,510
and fixing issues and regressions today.

656
00:39:03,560 --> 00:39:06,110
Addy mentioned things that change when we work with Alamos.

657
00:39:06,160 --> 00:39:07,479
One thing is for sure.

658
00:39:07,480 --> 00:39:10,319
If you work with agents, your job is no longer writing code,

659
00:39:10,320 --> 00:39:12,630
it's specifying and testing it.

660
00:39:12,680 --> 00:39:15,560
And this leads us to our presenting sponsor, Antithesis.

661
00:39:15,880 --> 00:39:19,199
Antithesis is the most effective method of verifying agentic code today.

662
00:39:19,200 --> 00:39:20,559
Let me explain how it works.

663
00:39:20,560 --> 00:39:23,430
Antithesis runs your whole system in a hostile simulation.

664
00:39:23,480 --> 00:39:26,990
By doing so, it finds every bug before users do.

665
00:39:27,040 --> 00:39:29,239
And because the simulation is fully deterministic,

666
00:39:29,240 --> 00:39:33,279
Antithesis doesn't only find bugs, it gives you a perfect reproduction of every issue.

667
00:39:33,280 --> 00:39:34,039
To create such a tool,

668
00:39:34,040 --> 00:39:37,239
the Antithesis team needed to invent new kinds of debugging tools as well.

669
00:39:37,240 --> 00:39:40,559
For example, here's what's called a bug probability graph.

670
00:39:40,560 --> 00:39:44,320
The X axis is virtual time and the Y axis is probability.

671
00:39:44,440 --> 00:39:46,519
As Antithesis runs the hostile simulations,

672
00:39:46,520 --> 00:39:49,550
it plots time frames when the bug probability increases,

673
00:39:49,600 --> 00:39:52,510
which greatly helps with finding root cause of bugs.

674
00:39:52,560 --> 00:39:54,950
And Antithesis also has a log visualizer.

675
00:39:55,000 --> 00:39:58,599
Vertical lines going down represent events branching off from the same state,

676
00:39:58,600 --> 00:40:00,679
and the purple dots are where the bug happens.

677
00:40:00,680 --> 00:40:04,359
Antithesis is as good as it gets being able to ship agent-written code.

678
00:40:04,360 --> 00:40:06,279
It's what teams at Jane Street, fly.io,

679
00:40:06,280 --> 00:40:09,270
and the etcd community use to ship with full confidence.

680
00:40:09,320 --> 00:40:12,270
Head to antithesis.com/pragmatic to learn more.

681
00:40:12,320 --> 00:40:16,350
And with this, let's get back to Addy and talk about Core Web Vitals.

682
00:40:16,400 --> 00:40:18,830
>> And one area that you really pushed,

683
00:40:18,880 --> 00:40:22,079
you and the team pushed the industry together as core web vitals.

684
00:40:22,080 --> 00:40:27,239
You know, these are a standardized set of metrics to just figure out the real world experience

685
00:40:27,240 --> 00:40:31,279
of web pages. And some of the You know, before this, again,

686
00:40:31,280 --> 00:40:33,439
you would as a developer, you would measure like, right,

687
00:40:33,440 --> 00:40:36,799
how quick does it render or how quick does it download?

688
00:40:36,800 --> 00:40:37,839
It was very simple stuff.

689
00:40:37,840 --> 00:40:42,679
But you introduced things like LCP, largest contentful paint, CLS,

690
00:40:42,680 --> 00:40:48,999
cumulative layout shift, FID, first input delay, and then IMP, interaction to next paint.

691
00:40:49,000 --> 00:40:51,799
Like you were there, like how did the team come up with these things?

692
00:40:51,800 --> 00:40:54,559
They're if you're not a web engineer,

693
00:40:54,560 --> 00:40:57,839
there's still it takes a little time to understand them,

694
00:40:57,840 --> 00:41:01,959
but but it does actually explain like how users feel.

695
00:41:01,960 --> 00:41:08,319
Like I feel you somehow inside of Google managed to connect the kind of feel to a number.

696
00:41:08,320 --> 00:41:15,630
>> I think that the Chrome team has always had an appreciation for user experience research.

697
00:41:15,680 --> 00:41:21,679
And again, every every time there was a new moment for the web,

698
00:41:21,680 --> 00:41:24,599
we'd re-consult that research to understand, well,

699
00:41:24,600 --> 00:41:27,599
what are users' expectations and how can we help meet them?

700
00:41:27,600 --> 00:41:34,759
The way that we used to reason about performance was very much like, hey, is a page loading?

701
00:41:34,760 --> 00:41:36,039
And what does that even mean?

702
00:41:36,040 --> 00:41:38,879
Well, for many people, is the page ready?

703
00:41:38,880 --> 00:41:40,359
But what does ready mean?

704
00:41:40,360 --> 00:41:42,439
Does that mean that I see it?

705
00:41:42,440 --> 00:41:46,630
Does it mean that I can click around it and anything actually happens?

706
00:41:46,680 --> 00:41:52,399
Um and so, I think for a very long time we had this this almost nebulous way of thinking

707
00:41:52,400 --> 00:41:54,310
about page load times.

708
00:41:54,360 --> 00:42:00,270
And the team felt like it was finally time to come up with a more nuanced perspective

709
00:42:00,320 --> 00:42:02,510
around how we reason about performance.

710
00:42:02,560 --> 00:42:04,999
And so, if you break it down,

711
00:42:05,000 --> 00:42:09,599
there are a number of key moments across the user's journey that they care about.

712
00:42:09,600 --> 00:42:11,390
Is it happening?

713
00:42:11,440 --> 00:42:12,479
Is anything loading?

714
00:42:12,480 --> 00:42:13,839
You know, do you see a header?

715
00:42:13,840 --> 00:42:14,879
Do you see a spinner?

716
00:42:14,880 --> 00:42:16,199
Do you see anything at all?

717
00:42:16,200 --> 00:42:18,679
Is there something useful there for you?

718
00:42:18,680 --> 00:42:21,359
So, maybe that's a header image.

719
00:42:21,360 --> 00:42:22,399
Maybe it's a hero image.

720
00:42:22,400 --> 00:42:24,119
Maybe it is a hero video.

721
00:42:24,120 --> 00:42:27,239
Maybe it's like the core piece of content on the page.

722
00:42:27,240 --> 00:42:30,550
Is it useful? Is it usable?

723
00:42:30,600 --> 00:42:33,879
Right? There are and all of these different moments can correlate to these different

724
00:42:33,880 --> 00:42:36,559
metrics. So, for things like your hero image,

725
00:42:36,560 --> 00:42:39,479
you can think about that as your largest contentful paint.

726
00:42:39,480 --> 00:42:41,479
And that's not going to generalize across every page.

727
00:42:41,480 --> 00:42:44,599
In some cases, the image may not be the most important thing.

728
00:42:44,600 --> 00:42:46,839
It might be, you know, the article text.

729
00:42:46,840 --> 00:42:49,239
There may be cases where, uh, you know,

730
00:42:49,240 --> 00:42:53,159
you want to be able to interact fairly quickly with a page.

731
00:42:53,160 --> 00:42:59,079
I can remember, um, many times over the years when I might be shopping and, uh,

732
00:42:59,080 --> 00:43:00,879
whether it's on my phone or on my desktop,

733
00:43:00,880 --> 00:43:04,430
I will click like the add to cart button and just crickets.

734
00:43:04,480 --> 00:43:06,039
>> Yeah. >> Nothing will happen.

735
00:43:06,040 --> 00:43:10,599
>> Cuz JavaScript did not load or the event handler or or the or maybe the event handler

736
00:43:10,600 --> 00:43:13,759
was not attached because not all elements finished loading.

737
00:43:13,760 --> 00:43:17,439
We know as engineers what's happening, but as a user it's like >> Yeah.

738
00:43:17,440 --> 00:43:20,319
As a user, like, wait, what's what's happening?

739
00:43:20,320 --> 00:43:23,199
>> then stuff can happen where you you just tap tap tap,

740
00:43:23,200 --> 00:43:27,519
the event handler gets attached and now you're adding it like twice or three times,

741
00:43:27,520 --> 00:43:29,239
but you don't know and yeah.

742
00:43:29,240 --> 00:43:32,599
>> Humans are humans are are shockingly simple, you know, uh,

743
00:43:32,600 --> 00:43:36,039
if you think about the experience you have with somebody that's just trying to cross

744
00:43:36,040 --> 00:43:39,599
the street, if, uh, you know, if the light doesn't turn, you know,

745
00:43:39,600 --> 00:43:42,719
doesn't say they can walk fast enough, they'll just keep hitting that button.

746
00:43:42,720 --> 00:43:44,999
That's the same experience they have on the internet.

747
00:43:45,000 --> 00:43:49,719
I think that there were other aspects of user experience that, um,

748
00:43:49,720 --> 00:43:52,360
I think we acknowledge were actually kind of problematic.

749
00:43:52,480 --> 00:43:54,439
One big one was, over the years,

750
00:43:54,440 --> 00:43:57,279
obviously sites tried to monetize as heavily as they could,

751
00:43:57,280 --> 00:44:01,159
and so you would see not just banner ads, but you'd see modals,

752
00:44:01,160 --> 00:44:05,150
you'd see all of these things thrown up in front of your face.

753
00:44:05,200 --> 00:44:08,319
And you know, even if you set aside, you know,

754
00:44:08,320 --> 00:44:12,390
maybe there's some validity around a business needs to monetize,

755
00:44:12,440 --> 00:44:15,550
those things shouldn't cause a really bad experience.

756
00:44:15,600 --> 00:44:17,990
If I'm on a page that has a bunch of ads,

757
00:44:18,040 --> 00:44:22,399
I shouldn't start reading an article and then suddenly everything gets pushed down, right?

758
00:44:22,400 --> 00:44:24,590
Just because the ad is finally loaded.

759
00:44:24,640 --> 00:44:27,959
And so, that's where cumulative layout shift kind of comes from.

760
00:44:27,960 --> 00:44:29,239
It's this idea that, "Hey,

761
00:44:29,240 --> 00:44:33,670
we should be trying to keep that page stable so the user has a good time."

762
00:44:33,720 --> 00:44:39,679
There was a lot of iteration around how do we define these metrics in a way that captures

763
00:44:39,680 --> 00:44:43,639
a few of these different use cases that are very nuanced because the internet is not

764
00:44:43,640 --> 00:44:44,759
all that homogeneous.

765
00:44:44,760 --> 00:44:48,679
There are lots of different ways that a person can think about the value of a page and

766
00:44:48,680 --> 00:44:49,880
what's important.

767
00:44:49,920 --> 00:44:52,359
And so, the team did a lot of experiments,

768
00:44:52,360 --> 00:44:55,830
experimented with lots of different ways of thinking about these metrics,

769
00:44:55,880 --> 00:45:01,079
and worked very heavily with both the standards community and developers to validate

770
00:45:01,080 --> 00:45:05,159
like, "Hey, do you actually believe that these things line up with how you would say

771
00:45:05,160 --> 00:45:07,470
you think about the value of your pages?"

772
00:45:07,520 --> 00:45:13,550
One of the things that I always find fascinating is there are some companies where,

773
00:45:13,600 --> 00:45:17,079
you know, they they have thought from the ground up like if you start from a blank white

774
00:45:17,080 --> 00:45:20,639
screen, what is actually important to the user end to end.

775
00:45:20,640 --> 00:45:23,399
And then there are many companies where they haven't, for whatever reason,

776
00:45:23,400 --> 00:45:27,390
time or they just didn't about it, they haven't gone through that journey.

777
00:45:27,440 --> 00:45:32,839
And so, Core Web Vitals allowed them to finally get a more nuanced conversation going

778
00:45:32,840 --> 00:45:34,919
about like, "Hey, what's actually important to us?

779
00:45:34,920 --> 00:45:38,319
How can we make sure that whatever key action the user has to take,

780
00:45:38,320 --> 00:45:41,479
they can do it pretty quickly and be guaranteed that they're not going to have a bad

781
00:45:41,480 --> 00:45:44,319
time?" >> Now, you spent 14 years inside of Google.

782
00:45:44,320 --> 00:45:47,399
You most of it was inside of Chrome organization there.

783
00:45:47,400 --> 00:45:51,719
You moved over to to Cloud AI and we're we're with generative AI as well.

784
00:45:51,720 --> 00:45:54,839
We've done research before on Google's engineering culture,

785
00:45:54,840 --> 00:46:00,519
but can you can you summarize like what it felt working there in terms of what and especially

786
00:46:00,520 --> 00:46:02,599
comparing to the startups that you worked before,

787
00:46:02,600 --> 00:46:06,000
you also talked with with companies now outside of Google,

788
00:46:06,040 --> 00:46:09,079
what were things that were uniquely Google?

789
00:46:09,080 --> 00:46:10,559
>> As part of my Google journey,

790
00:46:10,560 --> 00:46:12,519
there was a lot of work that I did on the developer side,

791
00:46:12,520 --> 00:46:15,239
but there's also a lot of work that I did on the consumer side.

792
00:46:15,240 --> 00:46:18,470
So, working on Chrome performance, for example.

793
00:46:18,520 --> 00:46:24,879
And when you're working on something that goes out to billions and billions of users,

794
00:46:24,880 --> 00:46:28,230
which is the case for for many Google products now,

795
00:46:28,280 --> 00:46:33,350
um the way that you think about engineering culture, velocity,

796
00:46:33,400 --> 00:46:36,519
experimentation is very very different, I think,

797
00:46:36,520 --> 00:46:39,199
than sometimes how a startup might approach things,

798
00:46:39,200 --> 00:46:41,159
especially if you're trying to move very fast.

799
00:46:41,160 --> 00:46:45,919
When we try to make a change inside a browser that has a global audience with a lot of

800
00:46:45,920 --> 00:46:50,079
people, there's a lot of experimentation that has to happen,

801
00:46:50,080 --> 00:46:55,839
and a lot of experimentation that also requires just like testing out, well, hey,

802
00:46:55,840 --> 00:46:58,159
does this problem not have one solution,

803
00:46:58,160 --> 00:47:01,870
but actually a couple of different ones depending on what market you're in?

804
00:47:01,920 --> 00:47:08,399
And how do you evaluate success when maybe we have 20 other experiments or 100 other

805
00:47:08,400 --> 00:47:10,910
experiments happening at the same time?

806
00:47:10,960 --> 00:47:16,079
And so, the AB testing culture, I would say was a very big thing,

807
00:47:16,080 --> 00:47:19,639
and kudos to the Chrome team for having what is now, I would say,

808
00:47:19,640 --> 00:47:24,239
a fairly um stable and rigorous process for being able to try those things out in the

809
00:47:24,240 --> 00:47:26,719
real world. I also felt that,

810
00:47:26,720 --> 00:47:30,879
even though sometimes from the outside it didn't necessarily always uh come across,

811
00:47:30,880 --> 00:47:32,990
zoomed out at the Google level,

812
00:47:33,040 --> 00:47:39,279
I did feel like there were many people that cared a lot about developer goodwill and

813
00:47:39,280 --> 00:47:40,790
developer sentiment.

814
00:47:40,840 --> 00:47:44,959
But when you have, you know, a very large company, obviously you're not, you know,

815
00:47:44,960 --> 00:47:48,039
every you're not it's going to be very challenging to have every group talking to every

816
00:47:48,040 --> 00:47:50,280
other group. >> Impossible.

817
00:47:50,480 --> 00:47:53,910
>> We always made best efforts to try, you know,

818
00:47:53,960 --> 00:47:57,359
um getting to a place where we were doing the right things for developers as best we

819
00:47:57,360 --> 00:48:02,119
could. But, I was glad to see that sentiment and that level of care for the community

820
00:48:02,120 --> 00:48:03,440
and for our users.

821
00:48:03,480 --> 00:48:09,070
I also appreciated that Google was um was open to change.

822
00:48:09,120 --> 00:48:15,679
So, I would say if if I had to summarize my my one big change contribution to Chrome's

823
00:48:15,680 --> 00:48:19,350
culture, it would be meeting developers where they are at.

824
00:48:19,400 --> 00:48:23,919
And that embrace of people are going to use whatever tech they want to use.

825
00:48:23,920 --> 00:48:26,759
You can't tell people what to use very often.

826
00:48:26,760 --> 00:48:28,279
They're going to use whatever they want,

827
00:48:28,280 --> 00:48:32,670
and your job is to help them be successful on your platform,

828
00:48:32,720 --> 00:48:34,719
and to help your users have a great time.

829
00:48:34,720 --> 00:48:38,759
I think that there were a lot of decisions we made over the years that help make that

830
00:48:38,760 --> 00:48:40,990
um a little bit more possible.

831
00:48:41,040 --> 00:48:45,879
And uh you know, we had good collaborations with different framework teams.

832
00:48:45,880 --> 00:48:49,550
We took their feedback about APIs they would like to see in the platform.

833
00:48:49,600 --> 00:48:55,310
It became a lot more of a collaboration with the community rather than kind of guessing

834
00:48:55,360 --> 00:48:58,399
what we thought, you know, the community needed to be successful.

835
00:48:58,400 --> 00:49:00,959
And so, I was very happy to see that happen.

836
00:49:00,960 --> 00:49:08,159
I would also say that Google was very good at allowing um different parts of the company

837
00:49:08,160 --> 00:49:12,310
to share their learnings towards some point of convergence.

838
00:49:12,360 --> 00:49:17,230
Uh so, for example, the Software Engineering at Google book, one of my favorite books.

839
00:49:17,280 --> 00:49:22,559
>> I was very happy to see different flavors of that over the years internally at the

840
00:49:22,560 --> 00:49:26,759
company because you work at such a big company, >> Um >> um you're always curious,

841
00:49:26,760 --> 00:49:29,119
well, what is best practice, right?

842
00:49:29,120 --> 00:49:32,479
Like, is there a best practice at >> there were like internal writings of like,

843
00:49:32,480 --> 00:49:37,199
here is how this org is doing some parts of software engineering building or experimentation

844
00:49:37,200 --> 00:49:41,279
or whatever. >> Yeah, one of my favorite things to do was um you know,

845
00:49:41,280 --> 00:49:42,319
I was curious, well,

846
00:49:42,320 --> 00:49:47,230
my team might have a perspective on testing uh or user experience,

847
00:49:47,280 --> 00:49:50,039
but how does the YouTube team think about it?

848
00:49:50,040 --> 00:49:51,590
And are there parallels?

849
00:49:51,640 --> 00:49:53,839
Are there things that we could learn from each other?

850
00:49:53,840 --> 00:49:55,279
And there certainly were, you know,

851
00:49:55,280 --> 00:49:59,399
even looking at how other people think about the world can sometimes lead to collaboration

852
00:49:59,400 --> 00:50:00,719
opportunities. Um,

853
00:50:00,720 --> 00:50:05,759
we actually worked with uh the YouTube team um to improve their Core Web Vitals uh at

854
00:50:05,760 --> 00:50:06,519
one point, you know,

855
00:50:06,520 --> 00:50:10,239
and they were they were excited to see that they were just more refined metrics and ways

856
00:50:10,240 --> 00:50:11,679
of thinking about experience.

857
00:50:11,680 --> 00:50:15,039
>> I mean I mean I I guess it's just important to to point out that this collaborative

858
00:50:15,040 --> 00:50:18,359
nature is not a given in any and all large companies.

859
00:50:18,360 --> 00:50:20,799
There are some companies don't want to name names right now,

860
00:50:20,800 --> 00:50:25,879
but where organizations don't feel that they're incentivized to work with each other

861
00:50:25,880 --> 00:50:27,439
because they might have different goals.

862
00:50:27,440 --> 00:50:28,639
And it's not that they hate each other,

863
00:50:28,640 --> 00:50:31,519
they're just like focused on themselves and it can feel a lot more, I guess,

864
00:50:31,520 --> 00:50:33,519
political in that sense.

865
00:50:33,520 --> 00:50:37,759
>> We talk a lot about high agency these days.

866
00:50:37,760 --> 00:50:42,199
And um I think that sometimes when you see those collaborations happen,

867
00:50:42,200 --> 00:50:46,319
it's because there are people with enough agency on both sides that they want to make

868
00:50:46,320 --> 00:50:52,990
it happen. Um and they see the mutual value in collaborating because exploring,

869
00:50:53,040 --> 00:50:56,280
you know, how to improve the user experience for something like YouTube,

870
00:50:56,320 --> 00:50:59,639
it was extremely nuanced, extremely educational, very nuanced,

871
00:50:59,640 --> 00:51:01,159
but also took a very long time.

872
00:51:01,160 --> 00:51:03,799
And we just felt like the value was there.

873
00:51:03,800 --> 00:51:05,479
I was glad that we could make it happen, you know.

874
00:51:05,480 --> 00:51:08,799
>> Can we talk about your specific career path inside of Google?

875
00:51:08,800 --> 00:51:10,639
So, you spent 14 years there,

876
00:51:10,640 --> 00:51:16,239
which is a very long tenure and I'm starting to develop a bias for like it's nice to

877
00:51:16,240 --> 00:51:18,919
have long tenures somewhere at some point in your career.

878
00:51:18,920 --> 00:51:19,959
There's a lot of value to it.

879
00:51:19,960 --> 00:51:24,719
We were just talking with uh with with Simon uh the founder of Turbo Buffer about this

880
00:51:24,720 --> 00:51:27,079
earlier. What level did you get in?

881
00:51:27,080 --> 00:51:29,080
How was your career progression?

882
00:51:29,240 --> 00:51:30,990
At what point did you become a manager?

883
00:51:31,040 --> 00:51:34,150
And how did you think about things like career,

884
00:51:34,200 --> 00:51:37,320
compensation, growing?

885
00:51:37,440 --> 00:51:44,350
>> Yeah. Um so, I started my Google career uh back when I was living in the UK.

886
00:51:44,400 --> 00:51:46,599
Um actually So, you joined Google UK?

887
00:51:46,600 --> 00:51:53,079
Yeah, I joined Google originally and uh I believe I joined at a level four like at the

888
00:51:53,080 --> 00:51:55,919
that was one of the mid mid level software engineer.

889
00:51:55,920 --> 00:51:59,919
>> Um back then and I was a developer relations engineer.

890
00:51:59,920 --> 00:52:01,599
So, a person that's in DevRel okay,

891
00:52:01,600 --> 00:52:05,119
you're a little bit more focused on you know the builder side of things.

892
00:52:05,120 --> 00:52:11,559
Over the years I kind of got promoted in that role to like level five and level six.

893
00:52:11,560 --> 00:52:16,119
I became a manager within DevRel and then >> When you were at level six at the staff

894
00:52:16,120 --> 00:52:23,470
level? >> Yeah and then I was was leading part of the DevRel team and

895
00:52:23,520 --> 00:52:30,870
at some point maybe five or six years in um I started to feel like you know I I loved

896
00:52:30,920 --> 00:52:35,159
doing developer relations but I'll I I am very much a builder at heart.

897
00:52:35,160 --> 00:52:37,079
I love I love engineering and I love product.

898
00:52:37,080 --> 00:52:39,359
I love all of it you know but >> I get it.

899
00:52:39,360 --> 00:52:45,119
>> I was very curious you know what it would be like to be on the other side of that

900
00:52:45,120 --> 00:52:47,399
because I'd been an engineer in prior to Google.

901
00:52:47,400 --> 00:52:52,159
I hadn't been you know in an official DevRel position prior to that and I was interested

902
00:52:52,160 --> 00:52:58,639
in going back down that direction and so over the years I transitioned back into kind

903
00:52:58,640 --> 00:53:03,310
of software engineering and specifically like an engineering manager role.

904
00:53:03,360 --> 00:53:10,119
Um that gave me the flexibility to both do like engineering work but also manage teams.

905
00:53:10,120 --> 00:53:11,959
>> But you just had a smaller team at that point.

906
00:53:11,960 --> 00:53:14,120
>> At the at the start

907
00:53:14,440 --> 00:53:21,559
had a smaller team and then it grew out I would say the average at one point was probably

908
00:53:21,560 --> 00:53:24,080
in the 45s to 50s.

909
00:53:24,200 --> 00:53:29,559
I I think that depending on where you are in your leadership or manager journey,

910
00:53:29,560 --> 00:53:33,079
you know success means different things and I not success from a career perspective but

911
00:53:33,080 --> 00:53:39,319
just success for the organization because ultimately what you want to get to is a place

912
00:53:39,320 --> 00:53:44,279
where ideally the team is almost self-sufficient and I write about this a little bit

913
00:53:44,280 --> 00:53:46,959
in um my book Leading Effective Engineering Teams,

914
00:53:46,960 --> 00:53:51,839
but you want to get to a point where you know, your your machine,

915
00:53:51,840 --> 00:53:54,679
your org is self-sufficient enough that you know,

916
00:53:54,680 --> 00:53:59,239
you just need to occasionally tap the blimp, make sure that things are working.

917
00:53:59,240 --> 00:54:01,559
You can course correct if it's not,

918
00:54:01,560 --> 00:54:05,559
but that frees you up to then focus on the next important sets of problems that the org

919
00:54:05,560 --> 00:54:08,110
needs to, you know, tackle heads on.

920
00:54:08,160 --> 00:54:13,199
And that allowed me, for example, to really get deep into thinking about, okay,

921
00:54:13,200 --> 00:54:16,630
well, model quality is starting to get better.

922
00:54:16,680 --> 00:54:18,080
What does that mean for developers?

923
00:54:18,120 --> 00:54:19,759
What does that mean for developer tooling?

924
00:54:19,760 --> 00:54:25,439
What does it mean for how we think about benchmarks and collaborations with third-party

925
00:54:25,440 --> 00:54:29,480
vendors and all of these other things that are part of developer success.

926
00:54:29,640 --> 00:54:32,919
And so I was I was glad that I had that time,

927
00:54:32,920 --> 00:54:37,519
and then I could take those learnings back to the team and work with them to evolve us

928
00:54:37,520 --> 00:54:39,239
into this moment where we could, you know,

929
00:54:39,240 --> 00:54:43,039
help developers maximize how useful DevTools can be,

930
00:54:43,040 --> 00:54:45,239
and DevTools and Chrome can be for agents.

931
00:54:45,240 --> 00:54:47,639
>> So, do I understand correctly that you know,

932
00:54:47,640 --> 00:54:50,319
you you were an individual individual contributor,

933
00:54:50,320 --> 00:54:51,799
you were going up the career ladder,

934
00:54:51,800 --> 00:54:56,879
which is somewhat expected at a at a large company like Google with the right mentors

935
00:54:56,880 --> 00:54:57,999
and the right structure.

936
00:54:58,000 --> 00:55:01,999
And then when you became a manager and you switched but you decided to build a bit more,

937
00:55:02,000 --> 00:55:05,399
you then focused on you still have a growing and increasingly large team,

938
00:55:05,400 --> 00:55:07,519
I mean 40 people, that's that's not a small team,

939
00:55:07,520 --> 00:55:11,279
but you you tried to help the team fix any issues,

940
00:55:11,280 --> 00:55:15,319
help them mostly run by themselves so that you would have some time to actually do some

941
00:55:15,320 --> 00:55:18,919
individual contributor-like work so you can keep your hands dirty,

942
00:55:18,920 --> 00:55:20,159
but also help the team.

943
00:55:20,160 --> 00:55:23,959
>> Yeah. >> So, like it it seems like you Do I understand that you just prioritized to

944
00:55:23,960 --> 00:55:25,640
have that time to build?

945
00:55:25,680 --> 00:55:29,799
Because of course, when you're manager, this could easily suck up all of your time.

946
00:55:29,800 --> 00:55:35,159
>> absolutely. And I don't want to make small of of all the work it takes to get to that

947
00:55:35,160 --> 00:55:38,279
point, because a lot of management is trying to work towards that point.

948
00:55:38,280 --> 00:55:45,360
You need to build out a team structure like in in some cases you have managers

949
00:55:45,400 --> 00:55:47,759
managing >> managers of other teams.

950
00:55:47,760 --> 00:55:48,519
>> Of other teams.

951
00:55:48,520 --> 00:55:51,639
And we had a global team of people.

952
00:55:51,640 --> 00:55:56,799
Of course, that comes with navigating time zones and coordination overhead and communication

953
00:55:56,800 --> 00:55:57,999
and all those things.

954
00:55:58,000 --> 00:56:01,999
And so I think that we were we were fortunate that we were able to get to a place where

955
00:56:02,000 --> 00:56:04,960
the team was um largely pretty effective.

956
00:56:05,000 --> 00:56:06,399
We were able to create more of the space.

957
00:56:06,400 --> 00:56:09,639
And then I take those learnings and I try to help some of my other managers.

958
00:56:09,640 --> 00:56:12,639
Like, how do you how do you create the space now for you so that you can also help us

959
00:56:12,640 --> 00:56:15,990
on this journey of modernizing for the AI moment.

960
00:56:16,040 --> 00:56:23,119
Um so I went I went from L6 to L7 um to director um in my

961
00:56:23,120 --> 00:56:25,479
>> Is is director L8 or L7 as director?

962
00:56:25,480 --> 00:56:26,359
>> Directors are L8.

963
00:56:26,360 --> 00:56:29,159
>> Oh, wow. So that that's kind of well, congrats.

964
00:56:29,160 --> 00:56:34,639
It it's it's it becomes every level becomes somewhat harder and harder as I understand.

965
00:56:34,640 --> 00:56:39,279
But did you care too much about the actual levels or was it more about the work and things

966
00:56:39,280 --> 00:56:42,959
just followed? >> I think for a very long time um it was about the work.

967
00:56:42,960 --> 00:56:48,519
But I also like as you as you get to a point where you feel like the organization is

968
00:56:48,520 --> 00:56:51,999
in a healthy place, um you do start thinking about okay, well,

969
00:56:52,000 --> 00:56:54,999
next level of my career, taking on different kinds of problems.

970
00:56:55,000 --> 00:56:56,599
>> Yeah, is it more more like the next challenge, right?

971
00:56:56,600 --> 00:56:57,359
>> Yeah, the next challenge.

972
00:56:57,360 --> 00:57:03,639
And so I was very much um wanting to go for a director kind of promotion for for quite

973
00:57:03,640 --> 00:57:05,919
a while and I was working towards that.

974
00:57:05,920 --> 00:57:06,799
And I think that, you know,

975
00:57:06,800 --> 00:57:10,239
for anyone that's gone through career changes or promotions, you know,

976
00:57:10,240 --> 00:57:13,959
you know that you kind of have to be doing the job for a while before you get it.

977
00:57:13,960 --> 00:57:19,239
And um what kind of got you where you are isn't what's what's going to get you to that

978
00:57:19,240 --> 00:57:20,159
next level, right?

979
00:57:20,160 --> 00:57:21,910
It's a different set of challenges.

980
00:57:21,960 --> 00:57:24,119
And so I was excited to, you know,

981
00:57:24,120 --> 00:57:29,070
get to start experiencing those kinds of challenges and and working more across Google,

982
00:57:29,120 --> 00:57:34,359
you know, working more with our VP and SVP layers to try figuring out well, yeah,

983
00:57:34,360 --> 00:57:39,039
what what is the next couple of years or what is the next year look like for Android,

984
00:57:39,040 --> 00:57:43,519
for Chrome, for our different platform teams as we're going through these kind of revolutionary

985
00:57:43,520 --> 00:57:45,519
moments. We're trying to rethink everything.

986
00:57:45,520 --> 00:57:50,110
>> I did want to ask because we have a lot of pretty experienced viewers and and listeners.

987
00:57:50,160 --> 00:57:54,079
What is the difference in becoming a director at Google?

988
00:57:54,080 --> 00:57:57,959
Specifically because director it does the first executive level.

989
00:57:57,960 --> 00:57:59,559
I mean, different companies call different,

990
00:57:59,560 --> 00:58:05,520
but like it's the first one which it it might be included in terms of responsibility,

991
00:58:06,240 --> 00:58:09,879
the weight on your shoulder cuz it does feel like that feels in the management chain

992
00:58:09,880 --> 00:58:13,520
that is the biggest jump at a large company like this.

993
00:58:13,760 --> 00:58:19,670
>> I think that a good way to think about it is when I was coming up through the ranks,

994
00:58:19,720 --> 00:58:25,359
uh your director was very often your first point of contact as you said at the executive

995
00:58:25,360 --> 00:58:30,680
level. They would be the ones who would be keeping you on the hook for making sure that

996
00:58:30,720 --> 00:58:35,320
any of your annual goals, quarterly goals, any of that was on track.

997
00:58:35,360 --> 00:58:39,399
They'd be the ones that you'd be looking to sponsor any large programs,

998
00:58:39,400 --> 00:58:41,399
any new projects, things like that.

999
00:58:41,400 --> 00:58:44,399
If things were going like way off track and you were, you know,

1000
00:58:44,400 --> 00:58:45,239
being held accountable,

1001
00:58:45,240 --> 00:58:49,399
the directors were often the ones that would be having review forums regularly to make

1002
00:58:49,400 --> 00:58:53,239
sure that that whole ship is actually still steering in the right direction.

1003
00:58:53,240 --> 00:58:58,120
And so there was an increased feeling of accountability at that level.

1004
00:58:58,160 --> 00:59:01,679
Um you have to pay attention to the details.

1005
00:59:01,680 --> 00:59:05,759
I think that you can't be successful in that role if you're kind of just letting go.

1006
00:59:05,760 --> 00:59:10,479
And when I say like you you want ideally to have a self- running org,

1007
00:59:10,480 --> 00:59:13,679
it's not about letting go entirely at all,

1008
00:59:13,680 --> 00:59:19,200
but it's about having enough of a system in place where you get the information you need,

1009
00:59:19,240 --> 00:59:24,199
any decisions, any blocks that your teams are running into are surfaced quickly to you

1010
00:59:24,200 --> 00:59:25,839
so you can help them unblock them.

1011
00:59:25,840 --> 00:59:28,639
I think that that's really one of the biggest pieces,

1012
00:59:28,640 --> 00:59:35,839
like making sure that the business goals get done and making sure that people who perhaps

1013
00:59:35,840 --> 00:59:41,039
sometimes don't necessarily understand how to connect the tech uh that's being done back

1014
00:59:41,040 --> 00:59:43,759
to the business goals, like see that through line very clearly.

1015
00:59:43,760 --> 00:59:44,839
I remember that you know,

1016
00:59:44,840 --> 00:59:51,119
and I I was doing the director role through my time working on Gemini and Cloud AI.

1017
00:59:51,120 --> 00:59:55,719
I was responsible for some of our like one of our top goals for the year.

1018
00:59:55,720 --> 00:59:59,599
You're expected to report on that every week or two and be held accountable.

1019
00:59:59,600 --> 01:00:04,079
So, you need to do do to make sure that everything happens to keep those numbers and

1020
01:00:04,080 --> 01:00:05,519
those goals moving in the right direction.

1021
01:00:05,520 --> 01:00:08,239
So, there's a lot of accountability, I would say, that comes with that level.

1022
01:00:08,240 --> 01:00:10,359
>> sounds like it's almost like if you're juggling stuff,

1023
01:00:10,360 --> 01:00:15,110
you're given like two extra balls, which is like now you both the accountability,

1024
01:00:15,160 --> 01:00:19,039
communicating upwards with with execs owning the business goals while doing everything

1025
01:00:19,040 --> 01:00:22,799
else in terms of like running an now probably larger team,

1026
01:00:22,800 --> 01:00:25,999
being able to deep dive into the details, so keeping yourself up-to-date.

1027
01:00:26,000 --> 01:00:29,999
So, yeah, well, I I I guess it it kind of makes sense that there's a trajectory where

1028
01:00:30,000 --> 01:00:33,719
if the longer you work in an organization, the more context you'll have,

1029
01:00:33,720 --> 01:00:35,239
the more ready you often become.

1030
01:00:35,240 --> 01:00:36,039
>> Absolutely. Absolutely.

1031
01:00:36,040 --> 01:00:41,559
And I think an interesting um anecdote that I think is worth sharing is and I I don't

1032
01:00:41,560 --> 01:00:43,390
think this was specific to Google.

1033
01:00:43,440 --> 01:00:50,279
One of the things I found most exciting in the last couple of years was seeing as model

1034
01:00:50,280 --> 01:00:53,670
qualities gotten better and and harnesses and tools have gotten better,

1035
01:00:53,720 --> 01:00:59,279
how many people um that were directors or VPs or SVPs or any of these levels were actually

1036
01:00:59,280 --> 01:01:02,510
rolling up their sleeves and trying things out.

1037
01:01:02,560 --> 01:01:07,159
Um and that was that was awesome to see because every week you could then have conversations

1038
01:01:07,160 --> 01:01:10,119
with people like, "Hey, what did you build at the weekend?

1039
01:01:10,120 --> 01:01:11,359
What models are you trying out?

1040
01:01:11,360 --> 01:01:13,279
Like, what are you running into friction with?

1041
01:01:13,280 --> 01:01:14,519
What workflows are you using?"

1042
01:01:14,520 --> 01:01:17,999
And that's not something that was happening before.

1043
01:01:18,000 --> 01:01:22,790
Execs were very typically, you know, focused on big company problems or big work problems.

1044
01:01:22,840 --> 01:01:24,959
Yeah, but that's been changing in the last couple of years.

1045
01:01:24,960 --> 01:01:27,079
>> Which rece is a very nice segue into the next topic,

1046
01:01:27,080 --> 01:01:32,830
which is how AI in your observation and experience is changing software engineering.

1047
01:01:32,880 --> 01:01:37,399
Right before we started talking about one question that comes up to from a lot of people

1048
01:01:37,400 --> 01:01:40,719
and you're also thinking about is this idea of like cognitive surrender.

1049
01:01:40,720 --> 01:01:42,559
>> Yeah. >> Let's get into that.

1050
01:01:42,560 --> 01:01:45,239
>> Yeah, so there's two pieces here.

1051
01:01:45,240 --> 01:01:47,479
Um the first is cognitive debt.

1052
01:01:47,480 --> 01:01:49,960
So the more that you use AI,

1053
01:01:50,000 --> 01:01:54,919
it's it's sort of the erosion of your ability to have good memory and have good understanding

1054
01:01:54,920 --> 01:01:57,430
of the problems that you're working on.

1055
01:01:57,480 --> 01:02:02,079
And the natural follow-up to that is cognitive surrender, which is where you,

1056
01:02:02,080 --> 01:02:07,159
you know, you blindly give in to whatever the AI says as your answer.

1057
01:02:07,160 --> 01:02:09,350
Its answer becomes your answer.

1058
01:02:09,400 --> 01:02:14,479
And so you start to really let go of critical thinking and your ability to solve problems

1059
01:02:14,480 --> 01:02:16,790
just goes to the wayside.

1060
01:02:16,840 --> 01:02:20,119
Um I think that that's something we want to avoid because you know,

1061
01:02:20,120 --> 01:02:25,479
I'm I'm personally I'm a I'm a big fan of the evolution curve we're seeing with harness

1062
01:02:25,480 --> 01:02:28,999
engineering and loop engineering and software factories and all of these things.

1063
01:02:29,000 --> 01:02:30,790
I'm very excited about them.

1064
01:02:30,840 --> 01:02:32,439
Um but at the same time,

1065
01:02:32,440 --> 01:02:38,639
I think that we still need to understand enough about how things work so that if something

1066
01:02:38,640 --> 01:02:43,799
does go wrong, we're actually able to fix it and not just hope and pray that the agent

1067
01:02:43,800 --> 01:02:45,319
is able to figure things out.

1068
01:02:45,320 --> 01:02:51,559
>> And it was about a year ago where you wrote about the importance of when you're working

1069
01:02:51,560 --> 01:02:54,079
with an agent, and this was before they were as capable as today,

1070
01:02:54,080 --> 01:02:55,759
but when you're working with an agent,

1071
01:02:55,760 --> 01:02:59,239
read through read through what it it has think through and then, you know,

1072
01:02:59,240 --> 01:03:02,479
when it generates the code, read through that code, make sure you understand.

1073
01:03:02,480 --> 01:03:04,479
So like you're kind of like doing a review.

1074
01:03:04,480 --> 01:03:06,790
Now we have a lot more powerful agents.

1075
01:03:06,840 --> 01:03:11,040
Um we can now some people work like with multiple agents.

1076
01:03:11,160 --> 01:03:14,479
What is your thinking on the kind of the reading,

1077
01:03:14,480 --> 01:03:19,399
the going at the same pace of the agent of and and you know like there's a friction of

1078
01:03:19,400 --> 01:03:22,919
like it's not so much easier so like not not like go because you want to let go and have

1079
01:03:22,920 --> 01:03:26,399
cognitive depth is [clears throat] just like if they're faster and it's pretty good for

1080
01:03:26,400 --> 01:03:30,630
the most part. >> With many challenges people run into in life,

1081
01:03:30,680 --> 01:03:34,319
um there's a lack of intentionality around wanting to avoid them.

1082
01:03:34,320 --> 01:03:37,750
And that this is one of those places where I see this happen quite a lot.

1083
01:03:37,800 --> 01:03:40,679
Um and my thinking on this has changed a little bit.

1084
01:03:40,680 --> 01:03:44,799
A year ago, you know, maybe you would have, you know,

1085
01:03:44,800 --> 01:03:48,879
like one thinking message from the agent saying, "Hey, I'm I'm thinking in the background."

1086
01:03:48,880 --> 01:03:52,399
And you'd expand it and you would see a trajectory and you'd see the summary of like

1087
01:03:52,400 --> 01:03:53,479
all the things that are happening.

1088
01:03:53,480 --> 01:03:55,479
>> And it was like in speed where you could follow as well.

1089
01:03:55,480 --> 01:03:58,839
It's like it's like every few seconds something coming.

1090
01:03:58,840 --> 01:04:02,950
>> Yeah. And now, if you're using quad code or code x,

1091
01:04:03,000 --> 01:04:07,110
um it's very possible that 20 or 30 sub agents have fired.

1092
01:04:07,160 --> 01:04:11,270
I am not going to click through 30 of those things to read through their trajectories.

1093
01:04:11,320 --> 01:04:14,359
But I do make sure that I do two things.

1094
01:04:14,360 --> 01:04:18,799
The first thing I do is I try to make sure that if there is a summary at the very end,

1095
01:04:18,800 --> 01:04:23,910
here are all the decisions that were made, I will read through that end to end.

1096
01:04:23,960 --> 01:04:28,150
If there hasn't been, I will prompt for that decision process.

1097
01:04:28,200 --> 01:04:32,359
And you have to be careful because you don't want a model to kind of BS you about like

1098
01:04:32,360 --> 01:04:36,160
the decisions that were made cuz sometimes it can just like make things up, right?

1099
01:04:36,200 --> 01:04:40,319
>> It runs and as we know it's not deliberate necessarily but it runs out of context

1100
01:04:40,320 --> 01:04:42,959
window like there's limitations to these things.

1101
01:04:42,960 --> 01:04:46,239
>> Exactly. And there like I guess this goes on to the second thing.

1102
01:04:46,240 --> 01:04:51,200
I'm a really big fan of this idea of mutual amplification.

1103
01:04:51,440 --> 01:04:55,990
If you are working with an agent, a coding agent,

1104
01:04:56,040 --> 01:04:59,959
there are a lot of things that you can do to make sure that the agent is getting better

1105
01:04:59,960 --> 01:05:03,479
every day and you as an engineer are getting better every day.

1106
01:05:03,480 --> 01:05:04,999
There are simple things that can play into that.

1107
01:05:05,000 --> 01:05:07,919
Things like even within the session or within this project,

1108
01:05:07,920 --> 01:05:10,559
can you log your learnings from the session?

1109
01:05:10,560 --> 01:05:15,839
Can you log any decisions that were made, any friction that you ran into,

1110
01:05:15,840 --> 01:05:19,679
anything that you think is unique about how you've approached this problem that I should

1111
01:05:19,680 --> 01:05:21,430
just keep in mind?

1112
01:05:21,480 --> 01:05:22,359
That's intentionality.

1113
01:05:22,360 --> 01:05:26,510
That's like I I want to understand how things work behind the scenes.

1114
01:05:26,560 --> 01:05:31,279
And as long as you have that curiosity and that thirst for at least being just a little

1115
01:05:31,280 --> 01:05:33,479
bit curious, I think that, you know,

1116
01:05:33,480 --> 01:05:37,239
you can work with models in a way where you're still preserving a little bit of your

1117
01:05:37,240 --> 01:05:39,559
cognitive understanding about how things work.

1118
01:05:39,560 --> 01:05:45,319
>> One new building block that's coming up in gen engineering is this idea of loop engineering

1119
01:05:45,320 --> 01:05:50,670
and Peter Steinberg wrote about it, Boris Cherny wrote about it about running loops.

1120
01:05:50,720 --> 01:05:53,319
A lot of us are trying to figure out what loops exactly are.

1121
01:05:53,320 --> 01:05:56,960
You also wrote a post about loops.

1122
01:05:57,320 --> 01:05:59,239
What do you think loops are?

1123
01:05:59,240 --> 01:06:00,319
How should we think of them?

1124
01:06:00,320 --> 01:06:04,239
Or is just some something that is useful for a few people?

1125
01:06:04,240 --> 01:06:05,559
Where are you at with that?

1126
01:06:05,560 --> 01:06:07,239
>> A good way to think about So,

1127
01:06:07,240 --> 01:06:14,150
loops are part of this journey we are on to effectively create software factories or,

1128
01:06:14,200 --> 01:06:18,959
you know, some some people like >> A software factory meaning like a thing where you

1129
01:06:18,960 --> 01:06:21,439
you know, like it you give some instructions,

1130
01:06:21,440 --> 01:06:26,639
you're like in a factory like I would like to produce a car and then there's a fully

1131
01:06:26,640 --> 01:06:29,879
automated factory and the car comes out.

1132
01:06:29,880 --> 01:06:35,559
>> So, instead of focusing um on purely the prompting towards getting an outcome,

1133
01:06:35,560 --> 01:06:38,819
you're building a system that can do the prompting and generate the outcome,

1134
01:06:38,820 --> 01:06:42,239
>> [clears throat] >> do the testing and verification for you.

1135
01:06:42,240 --> 01:06:43,720
And it's effectively

1136
01:06:44,120 --> 01:06:45,879
the next step of, you know,

1137
01:06:45,880 --> 01:06:49,719
every phase of of software evolution is just like a rising tide of abstractions.

1138
01:06:49,720 --> 01:06:51,670
This is the next abstraction.

1139
01:06:51,720 --> 01:06:55,800
And it comes with a lot of nuance because I think that, you know,

1140
01:06:55,840 --> 01:06:57,199
if you tell someone, "Yeah,

1141
01:06:57,200 --> 01:07:00,870
create a create a system that will just do all of your work for you."

1142
01:07:00,920 --> 01:07:03,639
Anyone that's been in the industry for a while are going to have obvious questions like,

1143
01:07:03,640 --> 01:07:05,390
"What about quality?

1144
01:07:05,440 --> 01:07:09,190
What are you actually How are you making sure things aren't going off the rails?

1145
01:07:09,240 --> 01:07:13,799
And so, I think that you have to be very intentional with Okay, well,

1146
01:07:13,800 --> 01:07:16,880
what are the parts of this where you're keeping the human in the loop?

1147
01:07:16,920 --> 01:07:21,119
Are you having your system flag to you that hey,

1148
01:07:21,120 --> 01:07:23,559
there changes that were touched that actually, you know,

1149
01:07:23,560 --> 01:07:25,639
are hitting a pretty critical part of the system,

1150
01:07:25,640 --> 01:07:28,359
and you probably do want human review on this.

1151
01:07:28,360 --> 01:07:34,599
But, simply just having your loops build everything without having some guardrails around

1152
01:07:34,600 --> 01:07:38,710
the blast radius without having guardrails around how you think about quality,

1153
01:07:38,760 --> 01:07:40,400
I think is a recipe for disaster.

1154
01:07:40,440 --> 01:07:42,639
>> I hear the analogy of software factory a lot of places.

1155
01:07:42,640 --> 01:07:45,319
And again, it And And of course, dark factory as well.

1156
01:07:45,320 --> 01:07:48,999
Dark factory meaning it's a fully automated factory as lights are turned off because

1157
01:07:49,000 --> 01:07:51,719
the robots don't need to see and you save energy and and money.

1158
01:07:51,720 --> 01:07:55,319
But, one thing that I'm I keep thinking that is off on this analogy is like, okay,

1159
01:07:55,320 --> 01:07:56,639
in a factory, you produce a thing.

1160
01:07:56,640 --> 01:07:58,959
It could be a car, it could be a screw, it could be something.

1161
01:07:58,960 --> 01:08:01,230
It's It's there, and it's done.

1162
01:08:01,280 --> 01:08:06,599
But, with software, specifically SaaS and and most software that we do, it's not done.

1163
01:08:06,600 --> 01:08:09,510
We Like, when it's finished, we release it to production.

1164
01:08:09,560 --> 01:08:12,559
And that's where it crashes, the bugs come out.

1165
01:08:12,560 --> 01:08:14,919
So, I wonder if this this whole idea of like, okay,

1166
01:08:14,920 --> 01:08:18,789
we'll have a factory that produces the software, and it does all the testing,

1167
01:08:18,839 --> 01:08:23,479
if in production it's not connected to how it's running and having that feedback,

1168
01:08:23,480 --> 01:08:24,999
that's You You see what I mean?

1169
01:08:25,000 --> 01:08:28,798
Like, it's a different type of factory that we're talking about.

1170
01:08:28,799 --> 01:08:33,159
>> hit You hit the nail exactly on sort of the next phase of that.

1171
01:08:33,160 --> 01:08:40,278
You can If you can have a system that can sort of decide uh what needs to get built,

1172
01:08:40,279 --> 01:08:43,190
how to verify, how to test, and all of those things,

1173
01:08:43,240 --> 01:08:47,390
there's nothing stopping you from then connecting that up to your telemetry,

1174
01:08:47,440 --> 01:08:51,190
up to your other systems, up to user feedback,

1175
01:08:51,240 --> 01:08:54,758
up to any other signals that can help build out the product.

1176
01:08:54,759 --> 01:08:57,030
You can connect it up to the product backlog,

1177
01:08:57,080 --> 01:09:01,639
and you can potentially see a world where you then have this system that has access to

1178
01:09:01,640 --> 01:09:06,679
all of these different signals for how the product can be improved to a point where maybe

1179
01:09:06,680 --> 01:09:08,479
it even could get proactive.

1180
01:09:08,480 --> 01:09:11,399
>> Yeah, and we're seeing there's so many examples that you can plug it up.

1181
01:09:11,400 --> 01:09:13,309
For example, if you're using Sentry,

1182
01:09:13,359 --> 01:09:17,679
Sentry has automations where like if an error fires in Sentry that is not new,

1183
01:09:17,680 --> 01:09:22,798
you could have a hook that kicks off your favorite coding agent where it one shots a

1184
01:09:22,799 --> 01:09:24,838
fix and it puts you in your review.

1185
01:09:24,839 --> 01:09:28,479
Now, of course, you could get you could take it further and you could allow it to automatically

1186
01:09:28,480 --> 01:09:31,959
do it, which sounds like a bad idea today, but you could do it.

1187
01:09:31,960 --> 01:09:35,200
And I wonder is when we're talking about loops,

1188
01:09:35,240 --> 01:09:40,318
is this for example a loop that we say and maybe the the loop is just not a good word

1189
01:09:40,319 --> 01:09:42,789
for it. Maybe it's I think I heard workflow.

1190
01:09:42,839 --> 01:09:47,239
I heard like or if I say feedback loop, okay, like that might be a better word.

1191
01:09:47,240 --> 01:09:50,798
Maybe is it just a wording thing where like we're a little bit confused with the >> Yeah,

1192
01:09:50,799 --> 01:09:55,119
I mean, I I think that given how fast things are moving,

1193
01:09:55,120 --> 01:09:59,239
we are very likely to see new terminology sprout out every month.

1194
01:09:59,240 --> 01:10:03,070
And some of them will be good fits and some of them will continue to require some refinement.

1195
01:10:03,120 --> 01:10:07,399
So, I could totally see workflow being a better fit than loop,

1196
01:10:07,400 --> 01:10:11,439
but from a visual perspective, I do I personally do see it as a loop.

1197
01:10:11,440 --> 01:10:13,239
Workflow also also works.

1198
01:10:13,240 --> 01:10:14,039
>> But But then,

1199
01:10:14,040 --> 01:10:19,959
can you give me examples of loops that you've you've used or you have seen people on

1200
01:10:19,960 --> 01:10:22,240
your team or people in this industry use?

1201
01:10:22,280 --> 01:10:27,719
>> Yeah, so I was just mentioning being able to connect multiple signals up to,

1202
01:10:27,720 --> 01:10:32,479
you know, your software factory or or your real >> from production >> be logs or errors

1203
01:10:32,480 --> 01:10:33,710
or all those things?

1204
01:10:33,760 --> 01:10:41,039
>> um I have one app where I allow people to submit issues to

1205
01:10:41,040 --> 01:10:43,230
it if they run into any problems.

1206
01:10:43,280 --> 01:10:45,359
And historically, yeah, like a bug report.

1207
01:10:45,360 --> 01:10:48,039
And historically, I would, you know,

1208
01:10:48,040 --> 01:10:52,719
manually go through everyone and whenever I had time and then make a call on terms of

1209
01:10:52,720 --> 01:10:55,719
like, okay, well, I only have time to address so-and-so and so.

1210
01:10:55,720 --> 01:10:57,560
um I can't go through the full backlog.

1211
01:10:57,600 --> 01:11:00,159
You can now connect up so many other sources of data.

1212
01:11:00,160 --> 01:11:02,439
You can connect up your Google Analytics.

1213
01:11:02,440 --> 01:11:05,959
You can connect up, you know, if you're deploying to a certain hosting provider,

1214
01:11:05,960 --> 01:11:09,199
there are all kinds of logs that you might get from those sessions as well.

1215
01:11:09,200 --> 01:11:10,679
You can connect it up to that.

1216
01:11:10,680 --> 01:11:14,879
And then you can end up with a system where it's able to make decisions and prioritization

1217
01:11:14,880 --> 01:11:20,199
and then of course do the implementation based on not just one dimension of feedback.

1218
01:11:20,200 --> 01:11:21,239
So, for example,

1219
01:11:21,240 --> 01:11:26,479
if uh in my product it's noticing that there is a particular view that is really,

1220
01:11:26,480 --> 01:11:31,759
really slow. But, it now knows that that's happening for users in India,

1221
01:11:31,760 --> 01:11:34,280
but that I'm getting a lot of traffic from people in India.

1222
01:11:34,320 --> 01:11:37,119
It can influence the priority of how much I care about that.

1223
01:11:37,120 --> 01:11:40,439
Now, how much does priority matter these days when an agent can go through your whole

1224
01:11:40,440 --> 01:11:42,310
backlog and implement everything?

1225
01:11:42,360 --> 01:11:48,639
I think it still depends if you care about having to go in and manually do some work

1226
01:11:48,640 --> 01:11:51,520
to like take a look, okay, well, you you said you improved performance.

1227
01:11:51,560 --> 01:11:53,039
What did you actually change?

1228
01:11:53,040 --> 01:11:57,230
How much do I have to manually test this thing on these kinds of devices myself?

1229
01:11:57,280 --> 01:12:00,159
Because I can tell you to go and, you know, do some emulated testing.

1230
01:12:00,160 --> 01:12:01,119
I'm sure it'll help,

1231
01:12:01,120 --> 01:12:08,359
but for me it's just about being able to make more refined product decisions without

1232
01:12:08,360 --> 01:12:10,839
having to sift through all the different signals myself.

1233
01:12:10,840 --> 01:12:15,159
>> I I do see more and more people it's experimenting trying to put these things in place

1234
01:12:15,160 --> 01:12:17,759
again like from from the one shotting, the bug fix.

1235
01:12:17,760 --> 01:12:22,110
There's really no excuse to like not act on errors on on logs.

1236
01:12:22,160 --> 01:12:23,559
Uh open source projects,

1237
01:12:23,560 --> 01:12:26,719
popular ones now have things like when people submit an issue,

1238
01:12:26,720 --> 01:12:29,230
there's a bot that tries to reproduce it.

1239
01:12:29,280 --> 01:12:29,999
All of these things.

1240
01:12:30,000 --> 01:12:31,559
So, I I I see them as loops.

1241
01:12:31,560 --> 01:12:33,719
One question that does come up there is, okay, well,

1242
01:12:33,720 --> 01:12:37,479
we are this is a lot of stuff that software engineers used to then we didn't have all

1243
01:12:37,480 --> 01:12:39,910
the time for it, but we we did a lot of it.

1244
01:12:39,960 --> 01:12:42,959
And what this means for the future of the profession, Ryan Dahl,

1245
01:12:42,960 --> 01:12:46,079
the creator of Node.js wrote that I I quote him,

1246
01:12:46,080 --> 01:12:49,319
"This has been said a thousand times before, but allow me to add my own voice.

1247
01:12:49,320 --> 01:12:51,710
The era of humans writing code is over."

1248
01:12:51,760 --> 01:12:55,599
Disturbing for those of us who identify as software engineers, but no less true.

1249
01:12:55,600 --> 01:12:57,839
That's not to say software engineers don't have work to do,

1250
01:12:57,840 --> 01:13:00,479
but writing synthesis directly is not it.

1251
01:13:00,480 --> 01:13:03,799
And a lot of our time spent I remember when when I interviewed people at Uber,

1252
01:13:03,800 --> 01:13:06,759
I would tell them like, well, we're going to spend at least 50% writing code,

1253
01:13:06,760 --> 01:13:08,950
so we're testing you on writing code.

1254
01:13:09,000 --> 01:13:10,590
This is kind of vanishing.

1255
01:13:10,640 --> 01:13:13,279
>> Yeah. >> What do you see replacing it?

1256
01:13:13,280 --> 01:13:18,719
And what what do you see the essence of software engineers, builders, AI engineers,

1257
01:13:18,720 --> 01:13:20,119
however you call them be?

1258
01:13:20,120 --> 01:13:23,119
>> Yeah. >> I always go back to what is alpha.

1259
01:13:23,120 --> 01:13:27,879
So, my definition of alpha alpha meaning the definition of alpha is advantage, right?

1260
01:13:27,880 --> 01:13:32,319
So, what what is the current thing that models are not very good at doing?

1261
01:13:32,320 --> 01:13:38,319
Alpha is going to decay in some way with every model release or every series of model

1262
01:13:38,320 --> 01:13:40,590
releases. So, it's going to change over time.

1263
01:13:40,640 --> 01:13:42,070
So, for software engineers,

1264
01:13:42,120 --> 01:13:49,159
we very often say that your alpha is in taste in terms of are we building

1265
01:13:49,160 --> 01:13:49,759
the right thing?

1266
01:13:49,760 --> 01:13:51,599
Where are we putting our energy?

1267
01:13:51,600 --> 01:13:54,830
Is the thing that we are building actually good?

1268
01:13:54,880 --> 01:13:57,119
And good, you know, sometimes people will say, yeah,

1269
01:13:57,120 --> 01:13:59,230
but an agent can tell you if it's good.

1270
01:13:59,280 --> 01:14:00,479
I push back on that.

1271
01:14:00,480 --> 01:14:04,479
An agent can tell you if a thing looks correct, if it's matching a spec.

1272
01:14:04,480 --> 01:14:07,070
It doesn't necessarily mean it can tell you what's good.

1273
01:14:07,120 --> 01:14:11,870
Um I think that good can mean good from a user experience perspective,

1274
01:14:11,920 --> 01:14:12,919
could be delightful,

1275
01:14:12,920 --> 01:14:16,319
could be something that a person will actually want to come back to.

1276
01:14:16,320 --> 01:14:21,039
And it is still something that is sufficiently nuanced that I think it's going to take

1277
01:14:21,040 --> 01:14:25,790
time for models to actually catch up to a point where they can replace that fully.

1278
01:14:25,840 --> 01:14:28,480
We tell people that judgment, verification,

1279
01:14:28,680 --> 01:14:30,719
all of these other aspects continue to be important.

1280
01:14:30,720 --> 01:14:32,190
And I do believe that.

1281
01:14:32,240 --> 01:14:35,199
But even if you if you follow through and you say, okay, well,

1282
01:14:35,200 --> 01:14:40,240
maybe a year from or two from now, models will catch up these different aspects.

1283
01:14:40,560 --> 01:14:45,919
We still need engineers to be answerable for these different systems.

1284
01:14:45,920 --> 01:14:47,479
And to be >> Accountable, right?

1285
01:14:47,480 --> 01:14:49,679
>> Uh yes, accountable, answerable.

1286
01:14:49,680 --> 01:14:51,959
And that's something that doesn't just happen overnight.

1287
01:14:51,960 --> 01:14:57,270
That happens when you understand a system, people trust you, and you have that expertise.

1288
01:14:57,320 --> 01:15:02,359
An example I've been telling people this week is back when I worked on Chrome,

1289
01:15:02,360 --> 01:15:04,559
you know, Chromium is a massive code base.

1290
01:15:04,560 --> 01:15:06,559
It's one of the largest code bases in the world.

1291
01:15:06,560 --> 01:15:12,990
And it's sufficiently complex that for every key part of that system,

1292
01:15:13,040 --> 01:15:16,550
you will have a directory with >> an owners file.

1293
01:15:16,600 --> 01:15:20,839
>> And that owners file is going to contain a small number of people who are effectively

1294
01:15:20,840 --> 01:15:23,159
accountable for that part of the system.

1295
01:15:23,160 --> 01:15:26,479
They might might not have written all of the code for it in the same way that,

1296
01:15:26,480 --> 01:15:28,279
you know, we may not have written all of the code.

1297
01:15:28,280 --> 01:15:31,159
Our agents may have written not written, you know, written some of the code.

1298
01:15:31,160 --> 01:15:35,559
But they're the person that's on the hook for understanding, for gating,

1299
01:15:35,560 --> 01:15:41,550
for making sure that someone is deciding what ships, what's blocked, what do we defer.

1300
01:15:41,600 --> 01:15:46,959
And so, I think that that is something that engineers are going to continue to be valuable

1301
01:15:46,960 --> 01:15:51,839
for. And that's going to help us to make sure we're building stuff that is stable, reliable.

1302
01:15:51,840 --> 01:15:55,399
People can actually, you know, use it with some confidence.

1303
01:15:55,400 --> 01:16:00,639
>> I I do agree with this because I I think accountability is some That's why so many

1304
01:16:00,640 --> 01:16:02,799
businesses [clears throat] are are working.

1305
01:16:02,800 --> 01:16:03,559
That's why, you know,

1306
01:16:03,560 --> 01:16:07,999
lawyers always have a job because the the regulation is there,

1307
01:16:08,000 --> 01:16:11,719
and you can look up all the court cases, and you could understand how the law is interpreted.

1308
01:16:11,720 --> 01:16:16,199
But they've done this, and they often take some level of accountability.

1309
01:16:16,200 --> 01:16:21,399
In fact, if they grossly not do their job, you actually have an option to,

1310
01:16:21,400 --> 01:16:26,240
for example, take legal action against a a firm if they would have

1311
01:16:26,600 --> 01:16:29,799
be proven to like actually just like ignore what they're doing.

1312
01:16:29,800 --> 01:16:31,079
And I I I guess, you know,

1313
01:16:31,080 --> 01:16:34,759
like that's a good example where like in in software and in anywhere where there's value,

1314
01:16:34,760 --> 01:16:35,559
this will be valuable.

1315
01:16:35,560 --> 01:16:39,359
Like again, if you're renovating your house, if it's not a big deal,

1316
01:16:39,360 --> 01:16:40,599
you might do it yourself.

1317
01:16:40,600 --> 01:16:42,719
If it's a big deal, you just call a professional.

1318
01:16:42,720 --> 01:16:47,070
>> Yeah. Yeah. And I think there's there's two related notes to this topic.

1319
01:16:47,120 --> 01:16:51,239
Um you know, every time that we've made it easier to create software,

1320
01:16:51,240 --> 01:16:53,639
we've exponentially created more of it.

1321
01:16:53,640 --> 01:16:57,559
So, the total addressable market for builders >> And this is happening right now.

1322
01:16:57,560 --> 01:17:01,919
We're seeing it in the stats and iOS app releases, websites, all of that.

1323
01:17:01,920 --> 01:17:03,479
>> Yeah, it's going through the roof.

1324
01:17:03,480 --> 01:17:04,559
And that's not without nuance.

1325
01:17:04,560 --> 01:17:06,199
That's not to say, you know,

1326
01:17:06,200 --> 01:17:11,239
that every single app that's being created it has the same value, right?

1327
01:17:11,240 --> 01:17:13,799
We of course have these conversations about like, yes,

1328
01:17:13,800 --> 01:17:17,359
if your app is like a prompt away from somebody else copying it, you know,

1329
01:17:17,360 --> 01:17:19,279
it's a different world that we live in.

1330
01:17:19,280 --> 01:17:22,959
But that still doesn't change the fact that we have a much larger number of people that

1331
01:17:22,960 --> 01:17:27,359
can build now. And that's a lot more potential businesses and startups that could potentially

1332
01:17:27,360 --> 01:17:33,390
thrive. I continue to be very excited about the profession from that aspect.

1333
01:17:33,440 --> 01:17:39,799
I also think that every point in time in human history when automation or form of automation

1334
01:17:39,800 --> 01:17:41,280
has come into the picture,

1335
01:17:41,320 --> 01:17:45,959
we've automated away certain kinds of jobs and then replace them with other kinds of

1336
01:17:45,960 --> 01:17:50,839
jobs. And so, I think a big question for the future is what are those jobs going to be

1337
01:17:50,840 --> 01:17:52,870
in this new knowledge economy?

1338
01:17:52,920 --> 01:17:56,399
Um we may not necessarily have exact, you know,

1339
01:17:56,400 --> 01:17:58,359
frames for what those are they're going to look like just yet,

1340
01:17:58,360 --> 01:17:59,879
but I do think those are going to come.

1341
01:17:59,880 --> 01:18:01,080
>> Yeah.

1342
01:18:01,600 --> 01:18:06,759
And I wanted to talk to you about your writing as a fellow writer to a fellow writer.

1343
01:18:06,760 --> 01:18:12,079
You've been a really prolific writer in terms of books released just in the past few

1344
01:18:12,080 --> 01:18:15,719
years. You you've written the short book Software Engineering the Soft Parts,

1345
01:18:15,720 --> 01:18:19,039
a free book, about 50 pages, a really good read.

1346
01:18:19,040 --> 01:18:24,790
You've written Leading Effective Teams 2 years ago and last year Vibe Coding.

1347
01:18:24,840 --> 01:18:29,839
I wanted to ask and on top of this you regularly write long-form on social media,

1348
01:18:29,840 --> 01:18:33,390
LinkedIn, X, your blog, your newsletter.

1349
01:18:33,440 --> 01:18:36,519
You write a lot for someone who actually has a full-time job and I can tell you,

1350
01:18:36,520 --> 01:18:39,870
when my my full-time job often involves writing,

1351
01:18:39,920 --> 01:18:44,359
how has your workflow changed in writing when it comes to now,

1352
01:18:44,360 --> 01:18:47,439
especially we have AI tools or or other tools?

1353
01:18:47,440 --> 01:18:54,439
>> I would say that um now that it is very easy for anyone to use an agent to

1354
01:18:54,440 --> 01:18:56,399
create a body of text,

1355
01:18:56,400 --> 01:19:00,959
I think it's more important than ever for us to make sure that the ideas we're putting

1356
01:19:00,960 --> 01:19:03,870
out in the world are actually worth people reading.

1357
01:19:03,920 --> 01:19:08,439
Um because if you're asking somebody to spend 5, 10, 15 minutes reading a thing,

1358
01:19:08,440 --> 01:19:10,799
like actually put some effort into it.

1359
01:19:10,800 --> 01:19:14,839
My my workflow has changed quite a lot in the last couple of years.

1360
01:19:14,840 --> 01:19:17,319
I've now published, I think, 18 books.

1361
01:19:17,320 --> 01:19:20,639
I've worked with O'Reilly on many, many titles over the years.

1362
01:19:20,640 --> 01:19:25,239
Um I think the agents have helped me the most probably with just being able to reason

1363
01:19:25,240 --> 01:19:26,990
about the thoughts in my head.

1364
01:19:27,040 --> 01:19:32,919
Um and especially try to connect those back to how other people are thinking about related

1365
01:19:32,920 --> 01:19:38,279
problems. So, on any given week, um we can take Loop Engineering as one example,

1366
01:19:38,280 --> 01:19:40,599
cuz I was recently putting together a piece on that.

1367
01:19:40,600 --> 01:19:44,799
When I'm working on a piece these days, uh I'm always curious like,

1368
01:19:44,800 --> 01:19:47,679
what are other people thinking that's related to this?

1369
01:19:47,680 --> 01:19:49,639
And so, I can fire off a ton of, you know,

1370
01:19:49,640 --> 01:19:52,559
deep research agents to go and check out, you know,

1371
01:19:52,560 --> 01:19:55,310
Hacker News or Twitter or other places,

1372
01:19:55,360 --> 01:19:58,750
and just give me a sense of what are things people have tried out?

1373
01:19:58,800 --> 01:20:02,920
What are things where people have particularly strong opinions either either way?

1374
01:20:02,960 --> 01:20:05,720
Um what is considered contentious?

1375
01:20:05,880 --> 01:20:07,719
Where What are people excited about?

1376
01:20:07,720 --> 01:20:09,830
And what do they have big questions around?

1377
01:20:09,880 --> 01:20:14,279
And that's not to say, "Hey, agents now write the text for me."

1378
01:20:14,280 --> 01:20:20,599
It's It's about forming um a thesis about what people are struggling with and what educational

1379
01:20:20,600 --> 01:20:23,159
content could be useful for them around that.

1380
01:20:23,160 --> 01:20:26,590
And so, agents have been very useful for me in my research.

1381
01:20:26,640 --> 01:20:30,239
When it comes to writing itself, this is a very interesting one.

1382
01:20:30,240 --> 01:20:31,639
I think that a lot of people struggle with, like,

1383
01:20:31,640 --> 01:20:34,639
how we be using agents and these tools these days.

1384
01:20:34,640 --> 01:20:39,119
I will very often do two things when I've got an idea for a piece.

1385
01:20:39,120 --> 01:20:44,519
I will start to write out a personal kind of handwritten version of a thing and I'll

1386
01:20:44,520 --> 01:20:49,080
also have an agent or different models write out a version of the text as well.

1387
01:20:49,120 --> 01:20:52,840
And I'll compare sort of okay, well, I started out with a thesis.

1388
01:20:53,400 --> 01:20:56,079
How did those other agents reason about this thesis?

1389
01:20:56,080 --> 01:20:59,399
Did they take it in a very different direction to what I was thinking about?

1390
01:20:59,400 --> 01:21:03,959
Or did did we all kind of converge on the same thing roughly and there's not really a

1391
01:21:03,960 --> 01:21:05,519
lot of value that they're offering me.

1392
01:21:05,520 --> 01:21:10,390
Once I actually feel like I've got the ideas then pulled for my piece.

1393
01:21:10,440 --> 01:21:15,999
Um for me readability is important and so even if I've handwritten a thing,

1394
01:21:16,000 --> 01:21:20,200
I will often put that through a model to try improving readability.

1395
01:21:20,320 --> 01:21:26,310
And that's a hard thing sometimes because I still feel like models are sometimes not

1396
01:21:26,360 --> 01:21:30,950
the best at writing human looking even if you're editing something.

1397
01:21:31,000 --> 01:21:33,519
Writing human looking text.

1398
01:21:33,520 --> 01:21:36,359
I remember the other day I was trying to play around with hey,

1399
01:21:36,360 --> 01:21:38,590
can I can I improve my workflow?

1400
01:21:38,640 --> 01:21:44,559
And I feel like I easily wasted three hours of time because no matter what I did um one

1401
01:21:44,560 --> 01:21:49,799
of the models I was using continued to generate text that looked like it had triads and

1402
01:21:49,800 --> 01:21:52,150
these patterns, you know,

1403
01:21:52,200 --> 01:21:57,479
>> of of AI written text and I really struggled with that because it feels like,

1404
01:21:57,480 --> 01:22:00,799
you know, is it diminishing returns trying to use the tools >> but specifically >> Yeah.

1405
01:22:00,800 --> 01:22:02,319
>> specifically on loop engineering.

1406
01:22:02,320 --> 01:22:05,119
So uh navi aka neat code,

1407
01:22:05,120 --> 01:22:09,199
he did a video where he he looked at the loop engineering specifically your post as well

1408
01:22:09,200 --> 01:22:10,399
and he was reading it.

1409
01:22:10,400 --> 01:22:11,799
He was reading the part automation.

1410
01:22:11,800 --> 01:22:15,999
This is the heartbeat and he kind of read a few paragraphs and he was saying it felt

1411
01:22:16,000 --> 01:22:20,399
abstract. It felt that there were like terms that an AI would have done and he said that

1412
01:22:20,400 --> 01:22:24,319
well, either this is AI generated or it might be someone's thoughts,

1413
01:22:24,320 --> 01:22:30,479
but then an AI put it out and and when I also read it in in that specific that Loop Engineering

1414
01:22:30,480 --> 01:22:32,439
piece like I missed the specifics.

1415
01:22:32,440 --> 01:22:35,919
Right now we talked about like all right, here's the things that you have been doing.

1416
01:22:35,920 --> 01:22:42,359
Yeah. And I was wondering on like how did you write this and and how do you feel about

1417
01:22:42,360 --> 01:22:44,639
that that that that specific piece now?

1418
01:22:44,640 --> 01:22:49,630
>> For that piece specifically, so I started off with a handwritten piece.

1419
01:22:49,680 --> 01:22:54,910
Um I did a number of like editorial passes myself.

1420
01:22:54,960 --> 01:22:59,719
I then handed it off to a model to try improving the readability pass and that's where

1421
01:22:59,720 --> 01:23:03,759
I start to struggle because I'm a fan of structured writing.

1422
01:23:03,760 --> 01:23:04,919
>> Yeah. >> Um >> Oh, I know.

1423
01:23:04,920 --> 01:23:07,510
>> You know, I'm a I'm a big fan of very structured writing.

1424
01:23:07,560 --> 01:23:12,319
Um I am not a I I remember the kind of writing I was writing 10 years ago maybe even

1425
01:23:12,320 --> 01:23:14,279
and I remember, you know,

1426
01:23:14,280 --> 01:23:18,310
you were mentioning people who like to write struggle with time.

1427
01:23:18,360 --> 01:23:22,079
I would very often write articles in the 15 minutes I had before, you know,

1428
01:23:22,080 --> 01:23:26,799
my next meeting and I just just try to add more paragraphs and it wasn't as structured

1429
01:23:26,800 --> 01:23:28,510
or as high quality as I'd like.

1430
01:23:28,560 --> 01:23:35,839
And so I sometimes struggle with are people looking for authenticity even

1431
01:23:35,840 --> 01:23:37,999
when it's not that structured?

1432
01:23:38,000 --> 01:23:39,440
So, for example,

1433
01:23:39,800 --> 01:23:44,359
I might have the the version of Loop Engineering I started out with even after a few

1434
01:23:44,360 --> 01:23:51,270
iterations, did it have a good enough um line through or thread through the whole thing

1435
01:23:51,320 --> 01:23:52,750
that made sense?

1436
01:23:52,800 --> 01:23:55,800
Um probably not or at least that's how I felt at the time.

1437
01:23:55,840 --> 01:23:59,839
But using an agent to try helping rework that,

1438
01:23:59,840 --> 01:24:04,719
so it did have a clearer line through it, I felt better about the piece.

1439
01:24:04,720 --> 01:24:06,879
But somebody else reading it may felt like, okay, well,

1440
01:24:06,880 --> 01:24:10,639
actually I would have been I would have felt better if it wasn't as structured >> If

1441
01:24:10,640 --> 01:24:14,199
it was a bit more raw that you did not feel that good about.

1442
01:24:14,200 --> 01:24:18,239
>> Yeah. Yeah. And you know, that you can you can say the same thing about,

1443
01:24:18,240 --> 01:24:21,759
you know, typos, about, oh well, hey,

1444
01:24:21,760 --> 01:24:27,399
is the article following a consistent structure or beats compared to a final piece?

1445
01:24:27,400 --> 01:24:28,599
So, that's something I struggle with.

1446
01:24:28,600 --> 01:24:31,279
>> Yeah, cuz the final piece don't get me wrong, like it's you know,

1447
01:24:31,280 --> 01:24:34,359
when when we look at views and comments, a lot of people appreciated it.

1448
01:24:34,360 --> 01:24:35,559
And when you read through, again,

1449
01:24:35,560 --> 01:24:38,359
I'll I'll link it in the the show notes below to to read it.

1450
01:24:38,360 --> 01:24:41,430
It did have a a clear top-level structure.

1451
01:24:41,480 --> 01:24:46,919
To me, it felt that it was maybe more wordy than it needed to be and it just lacked the

1452
01:24:46,920 --> 01:24:48,120
specifics.

1453
01:24:48,480 --> 01:24:51,599
But I I do see by the way other people experimenting with this as well.

1454
01:24:51,600 --> 01:24:56,399
Um I I talked with Michael Novati who was criticized for a post which he actually worked

1455
01:24:56,400 --> 01:24:59,719
a lot with, but it sounded very AI because in the end he did it.

1456
01:24:59,720 --> 01:25:03,439
And later he wrote another post which looked a lot better and asked him what he changed.

1457
01:25:03,440 --> 01:25:06,199
He said like, "Oh, I'm actually just like tweaking the output a lot more."

1458
01:25:06,200 --> 01:25:09,630
Because he's also a big fan of of dumping his thoughts,

1459
01:25:09,680 --> 01:25:12,879
getting some help for structure, and actually, you know,

1460
01:25:12,880 --> 01:25:16,999
like behind the scenes spending a lot of time like, "Will this be worth reading?"

1461
01:25:17,000 --> 01:25:21,199
>> Yeah. And I think that even even with access to better tools these days,

1462
01:25:21,200 --> 01:25:24,719
very often people see an article that I put out,

1463
01:25:24,720 --> 01:25:30,159
I very likely spend probably at least 3 to 7 days just trying to work through it.

1464
01:25:30,160 --> 01:25:33,750
>> It's kind of like like brewing the ideas.

1465
01:25:33,800 --> 01:25:36,159
>> If something comes out very, very quickly,

1466
01:25:36,160 --> 01:25:41,839
it's probably because I had a very clear an an a surprisingly clear vision for what I

1467
01:25:41,840 --> 01:25:45,240
wanted to say. But very often it takes a while for something to bake well.

1468
01:25:45,280 --> 01:25:51,799
And I do end up going through every line of text very often before publishing it a few

1469
01:25:51,800 --> 01:25:59,510
times. And I think that for those of us that are working with tools um with with AI tools,

1470
01:25:59,560 --> 01:26:03,679
you start to question, well, am I being influenced by the way >> Yeah.

1471
01:26:03,680 --> 01:26:06,399
>> that the models cuz the the models are going to in some cases, I think,

1472
01:26:06,400 --> 01:26:09,639
provide a homogeneous take on what writing looks like.

1473
01:26:09,640 --> 01:26:13,239
And you start to feel like, wait, what was my writing style, you know?

1474
01:26:13,240 --> 01:26:16,279
>> Do you feel you're kind of in this middle right now a little bit?

1475
01:26:16,280 --> 01:26:20,719
>> I very much do, and um there's a part, you know,

1476
01:26:20,720 --> 01:26:24,919
you you take it to the experimentation phase, and there will be, you know,

1477
01:26:24,920 --> 01:26:26,159
maybe there are people who will say, "Hey,

1478
01:26:26,160 --> 01:26:29,359
you should train a custom model on your old writing."

1479
01:26:29,360 --> 01:26:32,399
I was a different person when I did my old writing,

1480
01:26:32,400 --> 01:26:37,199
and I had a different set of perspectives, a different set of nuances that I cared about.

1481
01:26:37,200 --> 01:26:41,879
And so, I wouldn't I would feel I would feel a certain way about that person writing,

1482
01:26:41,880 --> 01:26:43,679
you know, these new pieces, too.

1483
01:26:43,680 --> 01:26:48,760
So, I I think that we're still learning um what the best practices around this are.

1484
01:26:48,800 --> 01:26:53,159
And I also, you know, I started I remember um the other week,

1485
01:26:53,160 --> 01:26:58,639
I was just curious like if people are checking out these posts using Pangram or GPT-2

1486
01:26:58,640 --> 01:27:01,279
or any of these things, how does that change my workflow?

1487
01:27:01,280 --> 01:27:05,439
And I was just getting very frustrated cuz I I would literally type out like human sentences

1488
01:27:05,440 --> 01:27:08,639
or human paragraphs, and I'd paste it into Pangram, and be like, "No,

1489
01:27:08,640 --> 01:27:09,559
this doesn't look human-written."

1490
01:27:09,560 --> 01:27:10,599
I'd be like, >> Wow.

1491
01:27:10,600 --> 01:27:12,719
Okay. >> What? And that's not to say anything bad about Pangram.

1492
01:27:12,720 --> 01:27:17,440
That's just to say that I I don't I think that there's opportunity

1493
01:27:17,800 --> 01:27:20,439
for tools to help writers, you know,

1494
01:27:20,440 --> 01:27:23,719
flag flag things and then help them understand like, "Okay, well,

1495
01:27:23,720 --> 01:27:26,959
how do you get back to your human way of writing?"

1496
01:27:26,960 --> 01:27:31,399
>> Yeah. So, as as closing, you've just closed down 14 years at at Google.

1497
01:27:31,400 --> 01:27:33,639
You've announced a big decision last year, leaving.

1498
01:27:33,640 --> 01:27:34,519
Congratulations.

1499
01:27:34,520 --> 01:27:38,559
I know it must have been like a you know, like a big one to decide on.

1500
01:27:38,560 --> 01:27:39,519
What is next for you?

1501
01:27:39,520 --> 01:27:41,830
What are you looking at?

1502
01:27:41,880 --> 01:27:43,430
What are you excited about?

1503
01:27:43,480 --> 01:27:50,159
>> What I am most excited about right now is helping developers and businesses kind of

1504
01:27:50,160 --> 01:27:54,470
meet this next moment of software engineering changing.

1505
01:27:54,520 --> 01:27:56,479
Um I think that there are a lot of open questions.

1506
01:27:56,480 --> 01:27:59,599
Every Every single company I talk to has got so many questions about what the future's

1507
01:27:59,600 --> 01:28:00,519
going to look like,

1508
01:28:00,520 --> 01:28:06,270
but there's also a lot of opportunity in there to to help and to figure it out with them.

1509
01:28:06,320 --> 01:28:08,520
Um so, I'm I'm excited about that.

1510
01:28:08,560 --> 01:28:10,279
Um I'll be sharing, you know,

1511
01:28:10,280 --> 01:28:12,439
in the next couple of months what what what my next thing is,

1512
01:28:12,440 --> 01:28:17,319
but I'm definitely going to be staying very much in this space and um I'm I'm someone

1513
01:28:17,320 --> 01:28:20,639
that enjoys working with developers, working with the ecosystem.

1514
01:28:20,640 --> 01:28:24,399
So, I will very much still be staying in a role that allows me to do that.

1515
01:28:24,400 --> 01:28:27,199
>> So, right as you're exploring your next career step, you know,

1516
01:28:27,200 --> 01:28:29,599
may that be joining another company in exciting role,

1517
01:28:29,600 --> 01:28:32,240
who knows if you'll do something yourself.

1518
01:28:32,480 --> 01:28:35,230
Clearly, you're thinking a lot about your own career.

1519
01:28:35,280 --> 01:28:38,959
What advice would you have to someone who has some experience in the industry working

1520
01:28:38,960 --> 01:28:41,390
as a software engineer or engineering manager,

1521
01:28:41,440 --> 01:28:44,079
and they might be in a similar shoe where they are like, all right,

1522
01:28:44,080 --> 01:28:45,399
it's time for me for a change.

1523
01:28:45,400 --> 01:28:49,230
I want to set myself up for success looking ahead.

1524
01:28:49,280 --> 01:28:52,479
What skills would you advise that they invest in?

1525
01:28:52,480 --> 01:28:56,159
What activities, how to think about their network?

1526
01:28:56,160 --> 01:29:00,879
What do you think will be important in the next couple of years to stay at the the front,

1527
01:29:00,880 --> 01:29:02,710
like the meat of the industry?

1528
01:29:02,760 --> 01:29:07,190
>> What we're very likely to see happen next with engineering careers,

1529
01:29:07,240 --> 01:29:11,959
um as well as product and other roles, is the un- bundling of these careers.

1530
01:29:11,960 --> 01:29:16,390
In a way we un-bundling, where we begin to see more of these roles converge.

1531
01:29:16,440 --> 01:29:19,950
So, the engineer that also has product sense,

1532
01:29:20,000 --> 01:29:23,359
the product person that also has engineering sense or UX sense,

1533
01:29:23,360 --> 01:29:26,030
the UX person that also cares about product.

1534
01:29:26,080 --> 01:29:32,710
So, the guidance that I would give people is think beyond just that narrow lens of engineering.

1535
01:29:32,760 --> 01:29:34,919
There are many people, especially if you are senior,

1536
01:29:34,920 --> 01:29:39,950
that have already had to think about these different aspects of success.

1537
01:29:40,000 --> 01:29:43,790
Um if you are not someone that has had a chance to think about, you know,

1538
01:29:43,840 --> 01:29:50,279
product or technical evangelism or about any or go-to-marketing or any of these other

1539
01:29:50,280 --> 01:29:54,950
aspects that are generally different puzzle pieces how businesses are successful,

1540
01:29:55,000 --> 01:29:57,150
think about the non-engineering things.

1541
01:29:57,200 --> 01:29:59,159
I think there's a lot of value there.

1542
01:29:59,160 --> 01:30:03,879
And if you can show employers that you are not just a builder,

1543
01:30:03,880 --> 01:30:09,670
but you are someone that can help them as these roles start to become a little bit fuzzier.

1544
01:30:09,720 --> 01:30:12,879
I think that you can be successful in these times.

1545
01:30:12,880 --> 01:30:14,079
Don't just be an engineer.

1546
01:30:14,080 --> 01:30:18,119
>> And so sounds like it's one of your core values go back to being curious,

1547
01:30:18,120 --> 01:30:21,719
learn and see where you can help beyond just building.

1548
01:30:21,720 --> 01:30:23,119
>> Yeah, be a lifelong learner,

1549
01:30:23,120 --> 01:30:26,990
be endlessly curious and I think that there will be roles for you in the future.

1550
01:30:27,040 --> 01:30:28,359
>> Addy, thank you very much.

1551
01:30:28,360 --> 01:30:29,239
>> Thank you so much.

1552
01:30:29,240 --> 01:30:30,759
This is great. Thank you for having me.

1553
01:30:30,760 --> 01:30:33,840
>> I really enjoyed this chat with Addy and I hope you did as well.

1554
01:30:33,880 --> 01:30:38,599
I do feel that Addy's career shows that working hard at always going a layer deeper pays

1555
01:30:38,600 --> 01:30:40,959
off over time. When he was a teenager,

1556
01:30:40,960 --> 01:30:44,950
Addy already built a web browser from scratch, which is a massive project.

1557
01:30:45,000 --> 01:30:49,399
He never stopped being curious about web browsers then developer tools and today he brings

1558
01:30:49,400 --> 01:30:51,719
his same curiosity to AI [music] agents.

1559
01:30:51,720 --> 01:30:56,350
The concept I liked that Addy mentioned was this idea of cognitive surrender.

1560
01:30:56,400 --> 01:31:00,919
The more capable AI agents become, the easier it is to let them do what they do.

1561
01:31:00,920 --> 01:31:05,382
For example, a year back you could still follow along how an agent worked step by step.

1562
01:31:05,383 --> 01:31:08,479
[music] But today, if you have multiple sub agents in parallel,

1563
01:31:08,480 --> 01:31:11,000
there's no way you'll keep up with every step.

1564
01:31:11,040 --> 01:31:13,070
This creates this weird paradox.

1565
01:31:13,120 --> 01:31:15,990
AI makes it easier than ever to build software,

1566
01:31:16,040 --> 01:31:19,999
but it also makes it easier than ever to lose understanding of the software that we're

1567
01:31:20,000 --> 01:31:24,630
building. Addy had a really good counterpoint to this, which was mutual amplification.

1568
01:31:24,680 --> 01:31:29,119
You want to amplify your own understanding as the agents get better.

1569
01:31:29,120 --> 01:31:31,439
So, have the agents record decisions,

1570
01:31:31,440 --> 01:31:34,950
document what it learned >> [music] >> and explain unusual choices.

1571
01:31:35,000 --> 01:31:39,799
It's just no longer feasible to understand how or why every single token was generated,

1572
01:31:39,800 --> 01:31:43,479
but you want [music] to keep understanding the important decisions that any of your agents

1573
01:31:43,480 --> 01:31:47,279
make. Finally, I liked our conversation about what happens [music] to software engineers

1574
01:31:47,280 --> 01:31:49,239
when writing code is a smaller part of a job.

1575
01:31:49,240 --> 01:31:52,679
Addy's answer is that accountability remains the job.

1576
01:31:52,680 --> 01:31:54,359
For example, inside of Chromium,

1577
01:31:54,360 --> 01:31:57,359
specific software engineers owns parts of [music] the code base.

1578
01:31:57,360 --> 01:32:01,079
They obviously have not written every line of code in the that that they own,

1579
01:32:01,080 --> 01:32:04,679
but they understand the area, they decide what matters and what doesn't,

1580
01:32:04,680 --> 01:32:07,439
and they are accountable for their part working well.

1581
01:32:07,440 --> 01:32:11,039
I think it's reasonable to assume that AI will push this kind of accountability to be

1582
01:32:11,040 --> 01:32:13,990
more visible [music] for any and all software engineers.

1583
01:32:14,040 --> 01:32:17,519
Do check out the show notes for related The Pragmatic Engineer deep dives on Google's

1584
01:32:17,520 --> 01:32:19,830
engineering culture and AI engineering.

1585
01:32:19,880 --> 01:32:21,199
If you've enjoyed this podcast,

1586
01:32:21,200 --> 01:32:24,599
please do subscribe on your favorite podcast platform and on YouTube.

1587
01:32:24,600 --> 01:32:27,199
A big thank you if you also leave a rating on the show.

1588
01:32:27,200 --> 01:32:30,160
Appreciate it and see you in the next one.
