Overview
Addy Osmani reflects on his path from building a web browser as a teenager in rural Ireland to spending 14 years at Google, where he worked across Chrome, Chrome DevTools, Core Web Vitals, developer relations, and engineering leadership. The conversation also looks ahead: how AI agents are changing software work, why engineers need to retain accountability for agent-produced systems, and how careers may blend engineering, product, and UX skills.
Key Takeaways
Building a browser taught Osmani how much error recovery modern browsers must handle. Real-world sites often contain malformed HTML, failing resources, and broken scripts, yet browsers still need to render something usable. That tolerance is a major part of what makes browser engineering difficult.
Chrome DevTools grew alongside the web platform. As browsers added service workers, offline caches, push notifications, responsive device emulation, performance traces, and other capabilities, developers needed ways to inspect and debug them. Osmani describes DevTools as a tool that aims to support developers in their preferred workflow rather than replace their editor outright.
Core Web Vitals came from reframing performance around user perception. A page is not simply "loaded" or "not loaded." Users care whether they can see useful content, whether the interface shifts unexpectedly, and whether a click produces a timely response. Metrics such as LCP and INP turn those moments into measurable signals.
Osmani's management approach was to build teams that could operate with less day-to-day intervention. For a leader managing roughly 45 to 50 people at one point, that meant establishing structure, surfacing blockers quickly, and helping managers create room for broader work. Becoming a director added more direct accountability for organizational goals, cross-team coordination, and regular executive reporting.
AI agents expand what a single person can attempt, but they also create a risk of "cognitive surrender": accepting work that is too complex or fast-moving to inspect fully. The host's closing reflection frames the countermeasure as mutual amplification: use agents to document decisions, explain unusual choices, and preserve human understanding of high-impact work.
Osmani sees "alpha" as the advantage humans retain where models are currently weaker. For engineers, that includes judgment about what is worth building, product taste, user experience, and accountability. Models may check whether work matches a specification, but that is different from deciding whether a product is good or desirable.
Practical Steps
When evaluating web performance, inspect the full user path rather than relying on a single load-time number. Check whether primary content appears quickly, whether the layout moves, and whether key actions respond without delay.
Use agents for bounded research tasks that would otherwise consume hours. Give them a clear question, specify acceptable sources, and ask for a synthesis you can review before making decisions.
Connect production signals to engineering work. Feed bug reports, error logs, analytics, latency data, and user feedback into a triage process so issues can be prioritized using actual impact rather than whichever report was seen most recently.
Put guardrails around agent-written changes. Require tests, identify sensitive parts of the codebase that need human review, limit blast radius, and keep a record of why the system made a change.
Broaden your career surface area. Senior engineers should build product judgment, UX awareness, communication skills, and familiarity with go-to-market concerns. Osmani expects roles to overlap more as AI reduces the separation between implementation, planning, and validation.
Notable Quotes
"Humans are shockingly simple." - Addy Osmani, on users repeatedly clicking an unresponsive interface.
"An agent can tell you if a thing looks correct, if it's matching a spec. It doesn't necessarily mean it can tell you what's good." - Addy Osmani
"We still need engineers to be answerable for these different systems." - Addy Osmani
Full Transcript
If you've ever opened Chrome DevTools or optimized a page for Core Web Vitals, you've used software built by Addy Osmani. Addy spent 14 years at Google, most of it on Chrome, going from software engineer to director of engineering. And when starting out in tech as a teenager in rural Ireland, he built his own web browser from the ground up. Today we talk about the inside story of Chrome DevTools, why it became the closest thing Google has to an IDE, and the problems that are still unsolved, like memory debugging. What becomes different when you become a director at Google, and how Addy stayed hands-on building software while building an engineering org with more than 50 people. How AI is changing software engineering, cognitive depth, cognitive surrender, loop engineering, and software factories, and many more. If you want to hear from someone who has spent decades helping developers understand the web and is now thinking deeply about how AI changes software engineering, this episode is for you. This episode is presented by Antithesis. If you work with agents, your job is no longer just writing code, it's specifying and testing it. Antithesis is the most effective method of verifying agentic code today. Before we get into Addy's journey at Google, I wanted to talk about a really cool product at Google, Google Cloud Run and their recently launched Cloud Run Sandboxes. When you're building AI applications or AI agents, you often want to run untrusted programs like execute some Python code the model generated, or run a headless browser to fetch data from the web, or even execute code submitted by a user. But how do you make this fast and secure? This is exactly what Cloud Run Sandboxes do. Cloud Run Sandboxes are ephemeral, isolated gVisor environments that spin up extremely fast. They were built with security in mind. They enforce credential and environment isolation. Basically, they have no access to your service's environment variables or secrets. Sandboxes also operate with locked-down network egress, denied by default, to the internet. Accelerate development, eliminate infrastructure toil, and run untrusted workloads with confidence on Google Cloud Run. Try Cloud Run Sandboxes today at cloud.run. Adi, it's so nice to have you in person on the podcast. Oh, thank you for having me. And before we kick off into your career and how you got started, I wanted to ask, just before we started recording, we were talking about how has your day-to-day workflow changed recently a bunch, thanks to all these tools. So agents have allowed me to take the improbable and turn it into the possible in ways that are kind of weird and wonderful every day. I manage a lot of my life now using agents. And one example, just from this week, we've got the AI World Fair happening in San Francisco. I'm doing a closing keynote a couple of days in. And so I wanted to make sure I wasn't repeating any beats that other speakers had gone into depth on. And I also wanted to make sure there was good connective tissue from my talk to a lot of the other sessions that had happened. Now, normally in the old days, you kind of pray and hope that there was any content from these sessions online, and maybe you'd look through the abstract. I was able to fire off a bunch of agents, you know, go through everything that you can find about the talks from the last couple of days, look at the abstracts, any social content, anything around that that can be useful. And that was able to help me kind of sculpt what I already wanted to talk about into something that I hope is refined and will give people a way to connect from other parts of this conference back to, you know, the way that I'm going to close it up. That for me just feels very empowering. You know, something that would have taken a very long time, if I would have even been able to do it at all, is now very much within reach. And then you mentioned that it feels like, and a lot of people tell you, like, there's the kind of like both fun and chaos at the same time right now, like everywhere, right? Yeah. Yeah, absolutely. I think that, you know, for many of us, when you have a lot of ideas or a lot of vision, you're often bounded by time or how much can I actually do? And in some ways, agents have unchained us. And this is one of those reasons why, you know, you keep hearing, oh, hey, what are you doing with all of that time? Agents have freed up while I'm doing more work. I think for many of us, if we didn't enjoy it, we wouldn't be filling that time up with work, but we're having fun with it. And so it's fun thriving in that chaos. Yeah. But now take me back to the very beginning. A lot of us know you and I've gotten to know you through your work at Google, through your books, but I'd like to start from even before. Where did you start out? How did you have your first contact with computers and how did you build a web browser when you were a teenager in high school? So I've always been fascinated with understanding how things work. I grew up in rural Ireland, which was at times, you know, we didn't necessarily have the best internet connectivity. This was back in the days of dial-up. And so my first contact with computers was, you know, I was probably eight or nine years old. We were very fortunate that my dad was able to get us our first desktop machine. And you know, I'd play around with apps, I'd play around with just like trying to browse the internet. And it was always fascinating to me, like, how does any of this work? I'm just typing in something into an address bar and all this information is just rendering somehow. I'm getting back text, photos, videos, like how does any of this stuff work? And so over time, like I would build out websites, I'd start to get into programming. My very first programming language was Pascal. So I'm a big fan of the Borland tool suite. I learned C++ when I was fairly young. And there was one year when I noticed that we had a kind of popular national science competition. And traditionally, that competition was very much about, you know, hey, do students have interesting breakthroughs or thoughts on physics or chemistry or any of those things? But this, the year that I'm talking about was the first year where they actually started to really take computing seriously. And as I mentioned, I didn't have the best internet connection. This was also during the time when, especially if you were a teenager, you started to get into, you know, learning about downloading stuff. And we didn't have fast internet connections back then. If you cared about, you know, checking out a song, you could be waiting hours for that to download. If you cared about trying out a music video, man, that could be a night, two days sometimes to download it. And so I tried to study how these kind of download managers that were popping up worked. And download managers kind of offered this one hook. Well, rather than making one connection to a server, what if we spawned multiple threads and made multiple connections to a server and we kind of chunked content? You know, it's classical computer science, you know, break down problems into smaller chunks. And so that was one of the ways. And if the server supported, you know, chunking, you were able to, in some cases, actually get your file downloaded a little bit faster. And so it dawned on me like, hey, we're using this technique for downloading individual files. Has anyone applied this to how we browse the web? And so obviously, I couldn't, you know, do something complicated before I took my first baby steps. And so I thought, okay, I'm going to try exploring how you build a browser. I started to read, you know, specifications. I was probably 15 years old when I started this, 15, 16, but I started to read specifications. Okay. HTML, CSS, JavaScript. One of the things that I gained a great deal of respect for, and I still have a lot of respect for, is developers throw all kinds of weird crap at browsers, and yet they still render something, right? If you ever want, you know, if you ever want an interesting experiment in therapy, if you're ever feeling bad about your code, open up the dev tools and just browse the web for 10 minutes. The number of things that will go wrong, and yet you'll still be able to probably interact with the site, is just wild. And going wrong, you can just look at the warnings and errors, honestly, just that. And so that was one of the most complicated things when I was trying to build a browser. It was like, yeah, you can parse HTML, you can parse documents, you can load up images, but as soon as you run into pages that stop following those specs, and they take a very loose interpretation of what's supported, you have to really, you know, roll your sleeves up and try to behave the way that actual consumer browsers did. And so I had my fun building out a browser. Adding interactivity and JavaScript support was very difficult, managed to get it working, and then I'm a sucker for pain because I decided, well, I guess Applets and Flash and, you know, we had Windows Media Player back then, so people were, like, embedding all kinds of interesting content. I told myself, well, it's not a complete browser if it doesn't support all these other things. And so I added support for them. And then I could finally get on to what I actually wanted to work on, which was exploring if I could speed up web browsing for this point in time when you were kind of constrained by the hardware and bandwidth that was available locally. Back then, this was a personal pain because before I could get a good internet connection, I would literally every weekend, especially wear cargo pants that had a lot of pockets, and I would fill my cargo pants with floppy disks, and I would walk down to our local library that just happened to have a slightly faster internet connection, and I would try to, like, save as much as I could, then go back home, check it out on my computer. And so this was a personal mission for me. I really, really wanted a faster internet connection. About Angular, Backbone, UI, XJS. And if, you know, if you're too young for any of these terms to mean anything, that's also totally okay. But there was this burgeoning community of libraries and frameworks that were starting to pop up. And one thing that I personally struggled with was, well, how do these things differ? You know, you can go and you can check out the landing page for any of these projects, and they all say like, yeah, we're going to help you build apps, easier. But I was very big into education and trying to understand how these things worked. So I started off by creating basically the same application in every one of these frameworks and tried to standardize the functionality so that if you were in the same position I was and you just wanted to get a sense of, okay, well, how does the architecture philosophy change between these things? How does the syntax differ? If they're telling you to build a component or a piece of UI, what is the position they're taking on it versus somebody else? And so I got a lot of personal value out of the way that I was building this thing up. And so I put it out into the world. I had no expectations of it being useful. But basically it was you implemented a to-do app or the same to-do app with the different frameworks, and you could kind of compare how they differ. Yeah, yeah. And the idea was I wanted an application that was simple enough for almost anybody to be able to use and reason about, but it needed to have enough interactivity and enough functionality that you could really kind of stress test at least some of that functionality a framework offered. In some cases, you know, that would be state management or routing or other things. And so I put this out into the world. I was kind of shocked at how many other developers were running into this exact same challenge. And the project quickly took off. It started to get a lot of stars back in the day. It got thousands and thousands of stars very quickly, and I didn't quite know what was happening. And before long, I had people who were working on new frameworks or new versions of frameworks reaching out to me, saying like, Hey, this is cool. Here's my pull request with my framework. Can you add it? Can we work together on standardizing it? I met some of my first true open source friends through this project, people who are now, you know, very well established in their own means, like Sindre Sorhus, who's written quite a lot of Node modules over time. This idea of just giving people a simple enough application ended up becoming, in some ways, a standard for a number of years. I began to see that, you know, if a framework was giving people a tutorial about how to use them, they would actually use it to do MVC app as their baseline. It's been so many years. That was the start of my career in many ways. Even this last year, I still see labs sometimes, like, showing off to do MVC apps when they're trying to test out features. And the longevity of this thing has been very surprising to me. Another thing that was surprising was at one point when the project was taking off, Apple reached out to me. Yeah, Apple reached out to me, and specifically the people who are working on Safari and WebKit. And they said, you know, Hey, we're interested in working on a browser benchmark to help browser vendors understand, like, are they doing a good job at being responsive? And responsive here doesn't mean responsive in the mobile sense, but responsive in terms of interactivity, and are we responding to clicks and taps quickly? They reached out to me and they said, Hey, would you like to collaborate with us on this thing? And what that turned out to be was Speedometer. Speedometer, over the years, has become the primary responsiveness benchmark, web application benchmark for all browsers, and has continued to be for a very long time. Browser vendors now collaborate together on it. They've kept it up to date. So as new frameworks, as new architectural paradigms have come out over the years, they've kept updating it. And that, in many ways, has carried the legacy of that project through to today. And I've been just very happy that it's given people value of any kind. And you were building stuff on the side. You were also working at consultancies, AOL, at different startups. How did Google come along? So Google was an interesting one. I remember one of my first longer periods of time spent in the U.S. was when I was visiting my wife and her parents out in the Midwest, and I was sitting, I remember, in their room watching TV, and there was this documentary about Google that came on, and they showed early engineers that had been working there and why they enjoyed the environment. And I told myself, you know, I would love to work in a place like that someday. I continued to put out free education into the front-end world, the JavaScript world, web app world over the years. And at some point, I guess Google noticed that it was useful to some people, and so they reached out and wanted to interview me for a dev rel and builder role. There was some tooling that they were trying to build out at the time that they thought could be a good use of some of my skills, but also some just general... Evangelism they wanted to do in the tech community. And, you know, the stars aligned, just happened to work out, and I ended up working on the Chrome team. And then when you joined, can you tell us a little bit more about when you joined the Chrome team? What was Chrome like? What kind of work did you and the team do? Because now Chrome is synonymous for web browser. I know there's other browsers, and every now and then, of course, they have some market share, but Chrome has largely won the market. But back then when you joined, this was not the case just yet, was it? I remember back when I joined, it was a period when we were very excited about developers bringing their creativity to the platform. So what can you do to push on the platform and show us both what's possible as well as the gaps so that we can potentially help fill those gaps and build better APIs? So I remember there was this great Chrome Experiments site that we had back in the day where we would, you know, sometimes work with studios or work with developers and just showcase, like, hey, here's a cool WebGL example that maybe you wouldn't have otherwise come across, and that served as inspiration for some people to maybe even go and then learn more about shaders or, you know, different libraries. It was also a period of time when I would say front-end tooling was still very much heavily evolving. Yeah, we're talking 2012, 2013. Yeah, we're talking 2012, 2013. This was at a time prior to what I would now call meta frameworks. So like Next.js, for example, a meta framework. It did not exist. Didn't exist. So we're going all the way back to a time when we didn't have the best built tools, even for front-end. We didn't have things like ESBuild even. Yeah, we didn't have, we didn't necessarily have well-standardized JavaScript modules, you know, in all browsers. People were still using, you know, AMD and UMD, CommonJS, things like that. And, you know, the build tooling and the scaffolding tooling was still very much evolving. And so this was the period of time when you went through things like Grunt. For anyone that, you know, maybe we're dating ourselves, but Grunt as a build system. And also when you debugged the browser, you would use Firebug. You would open it in Firefox and then hope that, like, in IE it would work. But if it didn't, there weren't many good debugging tools in IE specifically. Later they became better, but back there was a time when there was not. Yeah, and I think that, you know, back in the heyday, there was a lot of workarounds people were trying to apply to still have a toolbox of some sort before things got much better. We put some work into working with, you know, the folks who were building out build tools and test runners and scaffolding tools. We worked on our own contribution called Yeoman back in the day. And Yeoman was really about, I don't know that I'd call it, you know, the first meta-framework, but I would call it an attempt at trying to bring just a little bit of organization to your starting point. Yeoman was a scaffolding tool we created where you would get a wizard in your CLI and you'd kind of say, Well, yeah, I'm trying to build this thing, and maybe I'm interested in using this UI library and this testing library, and maybe I'm interested in deploying to this target. Now, for folks who are listening in, those ideas might now sound very standard and things that you will find in all the tools you're regularly using. Back then they didn't exist. And I wouldn't be surprised if many of the modules we created back then are still being used under the hood for some of your favorite tools. So it was very fun getting to be a part of that moment where we were trying to, like, figure things out and reduce friction. But I will say that, you know, there was this long period where we kept changing tools what felt like every once in a while, right? You went from Grunt to Gulp to Webpack to, you know... To Veet, Rollup, all these things kept evolving, and I was happy to see the evolution. But I'm also happy that things, in some ways, feel like they've stabilized. Yeah, there was, I think it was churn, but, I mean, that's when innovation happens. Did you work on Google Chrome DevTools? Yeah. How did that start? Because I remember in 2012, I'm not sure if there was DevTools, but again, there was the state of the art was Firebug. It was, I think it was open source. Look like at different viewport sizes, you can very quickly kind of toggle and say, yeah, this is what it roughly looks like on an iPhone or a Pixel device. And of course, you know, the absolute best kind of testing would be trying it out on one of those actual devices. But even to quickly get a sense of whether you're heading in the right direction was very valuable to people. And we would evolve that over time as more of those best practices started to establish. I guess the web apps growing up, so PWAs, progressive web apps. Yeah. There was a period of time when, you know, people really wanted to make the web competitive compared to native. And so you think about, well, what are the things that are missing? Well, you need a really good story for offline caching, push notifications, background sync, all of these capabilities that, you know, we didn't necessarily have a strong story for. And because these are non-trivial features, you need to have a debugging story around all of them. And so we helped build out the application panel so that you can go in and for any of these features, whether it's debugging service workers or it's debugging your cache or debugging any of these things, you're able to do that. And so even though the toolset has expanded over time for each of these eras, I feel like DevTools has been able to keep up, especially as the APIs in the browser has also been evolving over time to meet these moments. Well, this is interesting because I usually, when I look through different companies and their strengths, Microsoft is amazing at building IDEs, and so is, for example, JetBrains. But for Google, I never felt that Google was any good at building IDEs except for inside of Chrome. Like whenever I have to debug a web application, I always, in the past, like many, many years, I use Chrome DevTools because it had, I mean, the kind of debug functionality I'm used to having Visual Studio have, which is breakpoints, conditional breakpoints, all sorts of so many debug options from, as we just said, performance, memory, being able to simulate some of those things. So it's very interesting for me to see that it's almost as if, I'm not sure if this was you, your team, or Google as a whole, but they realized the browser is very important. And so they built like almost like an IDE inside of it. You can edit the things inline. And I think as engineers or as developers, unless you work in frontend, you never really notice this. But when you do, it's fascinating how it all came together. Yeah, it's really fascinating. And I think that, are we an IDE? Aren't we an IDE? Is that a direction we want to go in was always a hot topic for the team. And I think that where things kind of landed was, well, we want to meet developers where they're at, because you're always going to have your favorite, you know, editor. Now we're talking about, you know, your control planes for your agents. You're always going to have a different surface, right, that you want to primarily work in. And as long as dev tools can meet you where you're at and be useful, I think that that's been something the team has tried to do. We continued having other eras. Yong Gao became our next tech lead after Pavel and helped us through the era of trying to figure out AI is now in the picture, and we want to both be able to help humans reason through this massive amount of data that the browser generates for you, as well as make it possible for you to connect your agent up to Chrome and dev tools and be able to have it just automate, you know, a lot of these journeys for you. And so I think that for the first of those problems, I remember any time I would work with a big site on their performance problems, you could easily spend half a day, you know, just looking at traces before you've even written any fixes at all. And now that we have LLMs, it's very quick to, like, reason through massive stack traces and actually be able to get down to fixes you can make. And that's just been really, really wonderful to see happen. How do you just describe using LLMs to go from massive stack traces to working fixes, which is the perfect moment to talk about our season sponsor, Sentry. You probably already know what Sentry is because you're a developer. If not, just ask a dev and they'll tell you. I use Sentry to monitor the backend of the Pragmatic Engineer for any and all errors. Of course, Sentry doesn't only do errors. They also have logs, replay, spans, profiles, metrics, and more because they're all connected by the same trace. One new capability Sentry has built that I'm really liking is the ability to fix errors. Let me show you. Here's the list of errors on my admin backend. There's a recent error on auth that I want to check out. Let's have Sear run an auto-fix for us. Sear is Sentry's AI debugging tool. First, it generates a root cause analysis. It's finding some problem with HTTP versus HTTPS URLs. Cool. Now that we know what's going wrong, Sear can create a plan on how to go about fixing it. I could go and edit this plan, but I'm happy with it, so let's create an actual code fix. Here's the code fix that Sear generated. Assuming it looks good, and in my case it does, let's draft a pull request. And boom, the pull request is created, ready to merge. What I love about Autofix is how Sentry went from showing a list of errors inside my application to offering me a fast way to fix it and close the loop while I stay in charge of this bug fix the whole time. Debugging just got a whole lot faster and a whole lot easier. Check out Sentry at sentry.io/pragmatic and start detecting errors, diagnosing their root causes, and fixing issues and regressions today. Addy mentioned things that changed when we work with LLMs. One thing is for sure: if you work with agents, your job is no longer writing code; it's specifying and testing it. And this leads us to our presenting sponsor, Anthesis. Anthesis is the most effective method of verifying agentic code today. Let me explain how it works. Anthesis runs your whole system in a hostile simulation. By doing so, it finds every bug before your users do. And because the simulation is fully deterministic and Anthesis doesn't only find bugs, it gives you a perfect reproduction of every issue. To create such a tool, the Anthesis team needed to invent new kinds of debugging tools as well. For example, here's what's called the bug probability graph. The x-axis is virtual time, and the y-axis is probability. As Anthesis runs the hostile simulations, it plots time frames when the bug probability increases, which greatly helps with finding the root cause of bugs. And Anthesis also has a log visualizer. Vertical line is going down represent events branching off from the same state, and the purple dots are where the bug happens. Anthesis is as good as it gets being able to ship agent-written code. It's what teams at Jane Street, Fly.io, and the Etsy community use to ship with full confidence. Head to anthesis.com/pragmatic to learn more. And with this, let's get back to Addy and talk about core web vitals. And one area that you really pushed, you and the team pushed the industry together, is core web vitals. You know, these are a standardized set of metrics to just figure out the real-world experience of web pages. And some of the, you know, before this, again, you would, as a developer, you would measure, like, right, how quick does it render or how quick does it download? It was very simple stuff. But you introduced things like LCP, largest contentful paint, CLS, cumulative layout shift, FID, first input delay, and then INP, interaction to next paint. Like, you were there. Like, how did the team come up with these things? If you're not a web engineer, it still, it takes a little time to understand them. But it does actually explain, like, how users feel. Like, I feel you somehow inside of Google managed to connect the kind of feel to a number. I think that the Chrome team has always had an appreciation for user experience research. And again, every time there was a new moment for the web, would reconsult that research to understand, well, what are users' expectations and how can we help meet them? The way that we used to reason about performance was very much like, hey, is a page loading? And what does that even mean? Well, for many people, is the page ready? But what does ready mean? Does that mean that I see it? Does it mean that I can click around it and anything actually happens? And so I think for a very long time, we had this almost nebulous way of thinking about page load times. And the team felt like it was finally time to come up with a more nuanced perspective around how we reason about performance. And so if you break it down, there are a number of key moments across the user's journey that they care about. Is it happening? Is anything loading? You know, do you see a header? Do you see a spinner? Do you see anything at all? Is there something useful there for you? So maybe that's a header image. Maybe it's a hero image. Maybe it is a hero video. Maybe it's like the core piece of content on the page. Is it useful? Is it usable? Right? And all of these different moments can correlate to these different metrics. So for things like your hero image, you can think about that as your largest contentful paint. And that's not going to generalize across every page. In some cases, the image may not be the most important thing. It might be, you know, the article text. There may be cases where, you know, you... Want to be able to interact fairly quickly with a page. I can remember many times over the years when I might be shopping, and whether it's on my phone or on my desktop, I will click, like, the add to cart button and just crickets. Nothing will happen because the JavaScript did not load, or the event handler, or maybe the event handler was not attached because not all elements finished loading. We know as engineers what's happening, but as a user, it's like— Yeah, as a user, like, wait, what's happening? And the stuff can happen where you just tap, tap, tap, the event handler gets attached, and now you're adding it like twice or three times, but you don't know. Yeah. Humans are shockingly simple. You know, if you think about the experience you have with somebody that's just trying to cross the street, if the light doesn't turn, doesn't say they can walk fast enough, they'll just keep hitting that button. That's the same experience they have on— And sometimes lead to collaboration opportunities. We actually worked with the YouTube team to improve their core web vitals at one point, you know, and they were excited to see that there were just more refined metrics and ways of thinking about experience. I mean, I guess it's just important to point out that this collaborative nature is not a given in any large companies. There are some companies, don't want to name names right now, but where organizations don't feel that they're incentivized to work with each other because they might have different goals. And it's not that they hate each other; they're just, like, focused on themselves, and it can feel a lot more, I guess, political in that sense. Yeah, we talk a lot about high agency these days, and I think that sometimes when you see those collaborations happen, it's because there are people with enough agency on both sides that they want to make it happen, and they see the mutual value in collaborating. Because exploring, you know, how to improve the user experience for something like YouTube, it was extremely nuanced, extremely educational, very nuanced, but also took a very long time. And we just felt like the value was there. I was glad that we could make it happen, you know. Can we talk about your specific career path inside of Google? So you spent 14 years there, which is a very long tenure, and I'm starting to develop a bias for, like, it's nice to have long tenures somewhere at some point in your career. There's a lot of values. We were just talking with Simon, the founder of TurboBuffer, about this earlier. What level did you get in? How was your career progression? At what point did you become a manager? And how did you think about things like career, compensation, growing? Yeah. So I started my Google career back when I was living in the UK, actually. So you joined Google UK? Yeah, I joined Google UK originally, and I believe I joined at a level four, like at the— Yeah, that was one, the mid-level software engineer. Back then, and I was a developer relations engineer, so a person that's in DevRel, but you're a little bit more focused on, you know, the builder side of things. Over the years, I kind of got promoted in that role to, like, level five and level six. I became a manager within DevRel. When you were at level six at the staff level? Yeah, yeah. And then I was leading part of the DevRel team, and at some point, maybe five or six years in, I started to feel like, you know, I loved doing developer relations, but I am very much a builder at heart. I love engineering and I love product. I love all of it, you know. But I get it. I was very curious, you know, what it would be like to be on the other side of that, because I'd been in engineering prior to Google. I hadn't been, you know, in an official DevRel position prior to that. And I was interested in going back down that direction. And so over the years, I transitioned back into kind of software engineering and specifically like an engineering manager role. That gave me the flexibility to both do, like, engineering work, but also manage teams. But you just had a smaller team at that point. At the start, had a smaller team, and then it grew out. I would say the average at one point was probably in the 45s to 50s. I think that depending on where you are in your leadership or manager journey, you know, success means different things. And not success from a career perspective, but just success for the organization. Because ultimately what you want to get to is a place where ideally the team is almost self-sufficient. And I write about this a little bit in my book, Leading Effective Engineering Teams, but you want to get to a point where, you know, your machine, your org is self-sufficient enough that, you know, you just need to occasionally tap the blimp, make sure that things are working. You can course correct if it's not, but that frees you up to then focus on the next important sets of problems that the org needs to, you know, tackle heads on. And that allowed me, for example, to really get deep into thinking about, okay, well, model quality is starting to get better. What does that mean for developers? What does that mean for developer tooling? What does it mean for how we think about benchmarks and collaborations with third-party vendors and all of these other things that are part of developer success? And so I was glad that I had that time. And then I could take those learnings back to the team and work with them to evolve us into this moment where we could help developers maximize how useful dev tools can be and DevTools and Chrome can be for agents. So do I understand correctly that you were an individual contributor, you were going up the career ladder, which is somewhat expected at a large company like Google with the right mentors and the right structure. And then when you became a manager and you switched, you decided to build a bit more. You then focused on, you still had a growing and increasing large team of 40 people. That's not a small team, but you tried to help the team fix any issues, help them mostly run by themselves so that you would have some time to actually do some individual contributor-like work so you can keep your hands dirty, but also help the team. Yeah. So it seems like, do I understand that you just prioritized to have that time to build? Because of course, when you're a manager, this could easily suck up all of your time. Oh yeah, absolutely. And I don't want to make small of all the work it takes to get to that point, because a lot of management is trying to work towards that point. You need to build out a team structure, like in some cases you have managers managing managers, right, of other teams. And we had a global team of people. Of course, that comes with navigating time zones and coordination overhead and communication and all those things. And so I think that we were fortunate that we were able to get to a place where the team was largely pretty effective, and we were able to create more of the space. And then I take those learnings and I try to help some of my other managers, like, how do you create the space now for you so that you can also help us on this journey of modernizing for the AI moment? So I went from L6 to L7 to director in my— Is director L8 or L7? Director's L8. Director's L8. Oh, wow. So that's kind of—well, congrats. It becomes, every level becomes somewhat harder and harder, as I understand. But did you care too much about the actual levels, or was it more about the work and things just followed? I think for a very long time, it was about the work. But also, like, as you get to a point where you feel like the organization is in a healthy place, you do start thinking about, okay, well, next level of my career, taking on different kinds of problems. Is it more like a next challenge, right? Yeah, the next challenge. And so I was very much wanting to go for a director kind of promotion for quite a while, and I was working towards that. And I think that, you know, for anyone that's gone through career changes or promotions, you know that you kind of have to be doing the job for a while before you get it. And what kind of got you where you are isn't what's going to get you to that next level, right? It's a different set of challenges. And so I was excited to, you know, get to start experiencing those kinds of challenges and working more across Google, you know, working more with our VP and SVP layers to try figuring out, well, yeah, what does the next couple of years or what does the next year look like for Android, for Chrome, for different platform teams as we're going through these kind of revolutionary moments? We're trying to rethink everything. I did want to ask, because we have a lot of pretty experienced viewers and listeners, what is the difference in becoming a director at Google specifically? Because director, that's the first executive level. I mean, different companies call it different, but, like, it's the first one which it might be included in terms of— Responsibility, the weight on your shoulder, because it does feel like that feels, in the management chain, that is the biggest jump at a large company like this. I think that a good way to think about it is, when I was coming up through the ranks, your director was very often your first point of contact, as you said, at the executive level. They would be the ones who would be keeping you on the hook for making sure that any of your annual goals, quarterly goals, any of that was on track. They'd be the ones that you'd be looking to sponsor any large programs, any new projects, things like that. If things were going, like, way off track and you were, you know, being held accountable, the directors were often the ones that would be having review forums regularly to make sure that that whole ship is actually still steering in the right direction. And so there is an increased feeling of accountability at that level. You have to pay attention to the details. I think that you can't be successful in that role if you're kind of just letting go. And when I say, like, you want ideally to have a self-running org, it's not about letting go entirely at all, but it's about having enough of a system in place where you get the information you need, any decisions, any blocks that your teams are running into are surfaced quickly to you so you can help them unblock them. I think that that's really one of the biggest pieces, like making sure that the business goals get done and making sure that people who perhaps sometimes don't necessarily understand how to connect the tech that's being done back to the business goals, like see that through line very clearly. I remember that, you know, I was doing the director role through my time working on Gemini and Cloud AI. I was responsible for some of our, like, one of our top goals for the year. You're expected to report on that every week or two and be held accountable. So you need to make sure that everything happens to keep those numbers and those goals moving in the right direction. You know, like, you give some instructions. You're like, in a factory, like, I would like to produce a car, and then there's a fully automated factory, and the car comes out. So instead of focusing on purely the prompting towards getting an outcome, you're building the system that can do the prompting and generate the outcome, do the testing and verification for you. And it's effectively the next step of, you know, every phase of software evolution is just like a rising tide of abstractions. This is the next abstraction. And it comes with a lot of nuance because I think that, you know, if you tell someone, yeah, create a system that will just do all of your work for you, anyone that's been in the industry for a while are going to have obvious questions. They're like, what about quality? How are you making sure things aren't going off the rails? And so I think that you have to be very intentional with, okay, well, what are the parts of this where you're keeping the human in the loop? Are you having your system flag to you that, hey, there are changes that were touched that actually, you know, are hitting a pretty critical part of the system, and you probably do want human review on this. But simply just having your loops build everything without having some guardrails around the blast radius, without having guardrails around how you think about quality, I think is a recipe for disaster. I hear the analogy of software factory a lot of places, and again, and of course dark factory as well. Dark factory meaning it's a fully automated factory, lights are turned off because the robots don't need to see, and you save energy and money. But one thing that I keep thinking that is off on this analogy is like, okay, in a factory you produce a thing. It could be a car, it could be a screw, it could be something. It's there and it's done. But with software, specifically SaaS and most software that we do, it's not done. Like when it's finished, we release it to production. And that's where it crashes, the bugs come out. So I wonder if this whole idea of like, okay, we'll have a factory that produces the software and it does all the testing. If in production it's not connected to how it's running and having that feedback, that's—you see what I mean? Like, it's a different type of factory that we're talking about. So you hit the nail exactly on sort of the next phase of that. If you can have a system that can sort of decide what needs to get built, how to verify, how to test, and all of those things, there's nothing stopping you from then connecting that up to your telemetry, up to your other systems, up to user feedback, up to any other signals that can help build out the product. You can connect it up to the product backlog, and you can potentially see a world where you then have this system that has access to all of these different signals for how the product can be improved to a point where maybe it even could get proactive. Yeah, and we're seeing there's so many examples. You can plug it up, for example, using Sentry. Sentry has automations where, like, if an error fires in Sentry that is net new, you could have a hook that kicks off your favorite coding agent where it one-shots a fix and it puts you in your review. Now, of course, you could take it further and you could allow it to automatically do it, which sounds like a bad idea today, but you could do it. And I wonder, when we're talking about loops, is this, for example, a loop that we say—and maybe the loop is just not a good word for it. Maybe it's, I heard workflow, I heard, like—or if I say feedback loop, okay, like that might be a better word. Maybe is it just a wording thing where we're a little bit confused with the— Yeah, I mean, I think that given how fast things are moving, we are very likely to see new terminology sprout out every month, and some of them will be good fits and some of them will continue to require some refinement. So I could totally see workflow being a better fit than loop, but from a visual perspective, I personally do see it as a loop. Workflow also works. But then can you give me examples of loops that you've used or— You have seen people on your team or people in your industry use. Yeah, so I was just mentioning being able to connect multiple signals up to, you know, your software factory. So from production, make that be logs or errors or all those things. Yeah. So I have one app where I allow people to submit issues to it if they run into any problems. And historically—yeah, like a bug report—and historically, I would, you know, manually go through every one and whenever I had time, and then make a call in terms of like, okay, well, I only have time to address so-and-so-and-so. I can't go through the full backlog. You can now connect up so many other sources of data. You can connect up your Google Analytics. You can connect up, you know, if you're deploying to a certain hosting provider, there are all kinds of logs that you might get from those sessions as well. You can connect it up to that, and then you can end up with a system where it's able to make decisions and prioritization and then, of course, do the implementation based on not just one dimension of feedback. So, for example, if in my product it's noticing that there is a particular view that is really, really slow, but it now knows that that's happening for users in India, but that I'm getting a lot of traffic from people in India, it can influence the priority of how much I care about that. Now, how much does priority matter these days when an agent can go through your whole backlog and implement everything? I think it still depends if you care about having to go in and manually do some work to, like, take a look, okay, well, you said you improved performance. What did you actually change? How much do I have to manually test this thing on these kinds of devices myself? Because I can tell you to go and, you know, do some emulated testing. I'm sure it'll help. But for me, it's just about— Being able to make more refined product decisions without having to sift through all the different signals myself. I do see more and more people experimenting, trying to put these things in place again, like from the one-shotting the bug fix. There's really no excuse to, like, not act on errors, on logs. Open source projects, popular ones now have things like when people submit an issue, there's a bot that tries to reproduce it, all of these things. So I see them as loops. One question that does come up, though, is, okay, well, we are—this is a lot of stuff that software engineers used to, and we didn't have all the time for it, but we did a lot of it. And what this means for the future of the profession. Ryan Dahl, the creator of Node.js, wrote, and I quote him, This has been said a thousand times before, but allow me to add my own voice: the era of humans writing code is over. Disturbing for those of us who identify as software engineers, but no less true. That's not to say software engineers don't have work to do, but writing syntax directly is not it. And a lot of our time spent—I remember when I interviewed people at Uber, I would tell them, like, Well, we're going to spend at least 50% writing code, so we're testing you on writing code. This is kind of vanishing. What do you see replacing it, and what do you see the essence of software engineers, builders, AI engineers, however you call them, be? I always go back to what is alpha. So my definition of alpha is advantage, right? So my definition of alpha is advantage, right? So what is the current thing that models are not very good at doing? Alpha is going to decay in some way with every model release or every series of model releases, so it's going to change over time. So for software engineers, we very often say that your alpha is in taste, in terms of are we building the right thing? Where are we putting our energy? Is the thing that we are building actually good? And good, you know, sometimes people will say, Yeah, but an agent can tell you if it's good. I push back on that. An agent can tell you if a thing looks correct, if it's matching a spec. It doesn't necessarily mean it can tell you what's good. I think that good can mean good from a user experience perspective, could be delightful, could be something that a person will actually want to come back to. And it is still something that is sufficiently nuanced that I think it's going to take time for models to actually catch up to a point where they can replace that fully. We tell people that judgment, verification, all of these other aspects continue to be important, and I do believe that. But even if you follow through and you say, Okay, well, maybe a year or two from now, models will catch up these different aspects, we still need engineers to be answerable for these different systems. Accountable, right? Yes, accountable, answerable. And that's something that doesn't just happen overnight. That happens when you understand a system, people trust you, and you have that expertise. An example I've been telling people this week is back when I worked on Chrome, you know, Chromium is a massive codebase. It's one of the largest codebases in the world, and it's sufficiently complex that for every key part of that system, you will have a directory with an OWNERS file. And that OWNERS file is going to contain a small number of people who are effectively accountable for that part of the system. They might not have written all of the code for it in the same way that, you know, we may not have written all of the code. Our agents may have written some of the code, but they're the person that's on the hook for understanding, for gating, for making sure that someone is deciding what ships, what's blocked, what do we defer. And so I think that that is something that engineers are going to continue to be valuable for. And that's going to help us to make sure we're building stuff that is stable, reliable, people can actually, you know, use it with some confidence. I do agree with this because I think accountability is some—that's why so many businesses are working. That's why, you know, lawyers always have a job because the regulation is there and you can look up all the court cases and you could understand how the law is interpreted. But they've done this, and they often take some level of accountability. In fact, if they grossly not do their job, you actually have an option to, for example, take legal action against a firm if they would have— Write this, and how do you feel about that, that specific piece now? For that piece specifically, so I started off with a handwritten piece. I did a number of, like, editorial passes myself. I then handed it off to a model to try improving the readability pass, and that's where I start to struggle, because I'm a fan of structured writing. Yeah, I know. You know, I'm a big fan of very structured writing. I am not a fan. I remember the kind of writing I was writing 10 years ago, maybe even, and I remember, you know, you were mentioning people who like to write struggle with time. I would very often write articles in the 15 minutes I had before, you know, my next meeting, and I'd just try to add more paragraphs in. It wasn't as structured or as high quality as I'd like. And so I sometimes struggle with, are people looking for authenticity even when it's not that structured? So, for example, I might have the version of loop engineering I started out with, even after a few iterations, did it have a good enough line through or thread through the whole thing that made sense? Probably not, or at least that's how I felt at the time. But using an agent to try helping rework that so it did have a clear line through it, I felt better about the piece. But somebody else reading it may have felt like, okay, well, actually, I would have felt better if it wasn't as structured, if it was a bit more raw, that you did not feel that good about. Yeah, and, you know, you can say the same thing about, you know, typos, about, oh, well, hey, is the article following a consistent structure or beats compared to a final piece? So that's something I struggle with. Yeah, because the final piece, don't get me wrong, like, you know, when we look at views and comments, a lot of people appreciate it. And when you read through, again, I'll link it in the show notes below to read it, it did have a clear top-level structure. To me, it felt that— It was maybe more wordy than it needed to be, and it just lacked the specifics. But I do see, by the way, other people experimenting with this as well. I talked with Michael Novati, who was criticized for a post, which he actually worked a lot with, but it sounded very AI because in the end he did it. And later he wrote another post, which looked a lot better, and I asked him what he's changed. He said, like, Oh, I'm actually just, like, tweaking the output a lot more, because he's also a big fan of dumping his thoughts, getting some help for structure, and actually, you know, like behind the scenes spending a lot of time, like, Will this be worth reading? Yeah. And I think that even with access to better tools these days, very often if people see an article that I put out, I very likely spent probably at least three to seven days just trying to work through it, you know, because brewing the ideas. Yeah. If something comes out very, very quickly, it's probably because I had a very clear, a surprisingly clear vision for what I wanted to say. But very often it takes a while for something to bake well. And I do end up going through every line of text very often before publishing it a few times. And I think that for those of us that are working with tools, with AI tools, you start to question, well, am I being influenced by the way that the models—because the models are going to, in some cases, I think, provide a homogenous take on what writing looks like. Yes. And you start to feel like, wait, what was my writing style, you know? Do you feel you're kind of in this middle right now a little bit? Yeah, I very much do. And there's a part, you know, you take it to the experimentation phase, and there will be, you know, maybe there are people who will say, Hey, you should train a custom model on your old writing. I was a different person. When I did my old writing, and I had a different set of perspectives, a different set of nuances that I cared about. And so I would feel a certain way about that person writing, you know, these new pieces too. So I think that we're still learning what the best practices around this are. And I also, you know, I started, I remember the other week, I was just curious, like if people are checking out these posts using Pangram or GPTs or any of these things, how does that change my workflow? And I was just getting very frustrated because I would literally type out, like, human sentences or human paragraphs, and I'd paste it into Pangram and be like, No, this doesn't look human written. I was like, Wow. And that's not to say anything bad about Pangram. That's just to say that I don't, I think that there's opportunity for tools to help writers, you know, flag things and then help them understand, like, okay, well, how do you get back to your human way of writing? Yeah. So as closing, you've just closed down 14 years at Google. You've announced the big decision last year leaving. Congratulations. I know it must have been like a big one to decide on. What is next for you? What are you looking at? What are you excited about? What I am most excited about right now is helping developers and businesses kind of meet this next moment of software engineering changing. I think there are a lot of open questions. Every single company I talk to has got so many questions about what the future is going to look like. But there's also a lot of opportunity in there to help and to figure it out with them. So I'm excited about that. I'll be sharing, you know, in the next couple of months what my next thing is. But I'm definitely going to be staying very much in this space. And I'm someone that enjoys working with developers, working with the ecosystem. So I will very much still be staying in a role that allows me to do that. So, right as you're exploring your next career step, you know, may that be joining another company in an exciting role. Who knows if you'll do something yourself. Clearly, you're thinking a lot about your own career. What advice would you have to someone who has some experience in the industry, working as a software engineer or engineering manager, and they might be in a similar shoe where they are like, All right, it's time for me for a change. I want to set myself up for success looking ahead. What skills would you advise that they invest in? What activities? How to think about their network? What do you think will be important in the next couple of years to stay at the front, like the meat of the industry? What we are very likely to see happen next with engineering careers, as well as product and other roles, is the unbundling of these careers, where we begin to see more of these roles converge. So the engineer that also has product sense, the product person that also has engineering sense or UX sense, the UX person that also cares about product. So the guidance that I would give people is think beyond just that narrow lens of engineering. There are many people, especially if you are senior, that have already had to think about these different aspects of success. If you are not someone that has had a chance to think about, you know, product or technical evangelism or go-to-market or any of these other aspects that are generally different puzzle pieces how businesses are successful, think about the non-engineering things. I think there's a lot of value there. And if you can show employers that you are not just a builder, but you are someone that can help them as these roles start to become a little bit fuzzier, I think that you can be successful. In these times, don't just be an engineer. And so it sounds like it's one of your core values: go back to being curious, learn, and see where you can help beyond just building. Yeah, be a lifelong learner, be endlessly curious, and I think that there will be roles for you in the future. Addy, thank you very much. Thank you so much. This was great. Thank you for having me. I really enjoyed this chat with Addy, and I hope you did as well. I do feel that Addy's career shows that working hard and always going a layer deeper pays off over time. When he was a teenager, Addy already built a web browser from scratch, which is a massive project. He never stopped being curious about web browsers, then developer tools, and today he brings his same curiosity to AI agents. The concept I liked that Addy mentioned was this idea of cognitive surrender. The more capable AI agents become, the easier it is to let them do what they do. For example, a year back, you could still follow along how an agent worked step by step. But today, if you run multiple sub-agents in parallel, there's no way you'll keep up with every step. This creates this weird paradox. AI makes it easier than ever to build software, but it also makes it easier than ever to lose understanding of the software that we're building. Addy had a really good counterpoint to this, which was mutual amplification. You want to amplify your own understanding as the agents get better. So have the agents record decisions, document what it learned, and explain unusual choices. It's just no longer feasible to understand how or why every single token was generated, but you want to keep understanding the important decisions that any of your agents make. Finally, I liked our conversation about what happens to software engineers when writing code is a smaller part of the job. Addy's answer is that accountability remains the job. For example, inside of Chromium, specific software engineers own parts of the codebase. They obviously have not written every line of code in that part that they own, but they understand the area, they decide what matters and what doesn't, and they are accountable for their part working well. I think it's reasonable to assume that AI will push this kind of accountability to be more visible for For any and all software engineers. Do check out the show notes for related to Pragmatic Engineer deep dives on Google's engineering culture and AI engineering. If you've enjoyed this podcast, please do subscribe on your favorite podcast platform and on YouTube. A big thank you if you also leave a rating on the show. Appreciate it, and see you in the next one.