Building Claude Code with Boris Cherny
Boris Cherny on The Pragmatic Engineer.
Passages
It starts a while back. I think there was kind of like two parallel paths that crossed. So when I was maybe 13 or something like this, I started selling my old Pokemon cards on eBay. and i realized that on ebay you can actually like write html and i was looking at other people's pokemon card listings and i realized like some of them have like big colors and fonts and stuff like this and then i discovered the blink tag and i did everything was blink tag and if i put the blink tag on it i could sell my card you know for like 99 cents instead of 49 cents or whatever so i kind of learned about html this way then i got an html book and kind of learned about html And then the second thing was, this was also, I think, sometime in middle school. We had these old TI-83 graphing calculators and we used them for math. And what I realized is I can get a better answer on the math test if I just program the answers to the math test into my calculator. And so I wrote these little programs to just program the answers. And then the test got harder. So then I had to program solvers instead of the actual questions because I didn't know what, you know, the coefficients and stuff would be ahead of time. And then the math got more advanced like the next year. And so I had to drop down from basic to assembly to just make the program run a little bit faster.
SPEAKER_00Check at the sourceI think this is like middle school or high school, maybe like eighth or ninth grade or something like this. Then the thing I realized is everyone in my class was starting to realize that I had the solver and they got kind of jealous. And so I bought this little serial cable so I can give it to them, too. And then the next math test, everyone on the class just got A's. And the teacher was like, what's going on? Eventually, she realized it was just like, OK, you get away with it once and knock it off. But for me, it was very practical. So, you know, in school, I studied economics. I actually dropped out to start startups. And I never thought that coding would be a career at all. It was always very practical to me. Coding is a means to build things and to make useful things. This startup, the first one was, I think it's like my friends and I were trying to get weed. Yeah. And so we started this like weed review startup. We made like a website we called kind of different dispensaries, I think. And then we just tried to get kind of like weed samples so we could like review it for them. And it actually kind of blew up. And then I actually got more interested in. At the time, no one was like testing this stuff. And so I got into kind of the like chemical testing, kind of chemical analysis. And then after this, I kind of did a bunch of other startups. And then I joined YC actually pretty early. And I was the first hire of this YC startup up in Palo Alto after.
SPEAKER_00Check at the sourceKind of vibes. Vibes, I'd say. Because, you know, startups, it's never a linear path. You always kind of pivot, pivot, pivot. You have to figure out what the market wants and what users want. And it's never the thing that you think. You always try a thing, but the idea is always a hypothesis. And then almost always you have to pivot once, twice, three times. You know, at this medical software company, this is called Agile Diagnosis. This was kind of an early YC company. This was back in maybe 2011, 2012, something like that. It was medical software for doctors. And the idea was there's these clinical decision protocols that vary a lot hospital to hospital. And our idea was there was one hospital in Chicago that had a really great protocol specifically for cardiac symptoms. And so we're like, wouldn't outcomes be great if every hospital in the U.S. would use the same protocol? And so we tried to standardize it and we made this like decision tree software for doctors to use. And I wrote, you know, some of the software. The team was like it was just a few of us. It was a pretty small team. And I wrote the software. It was in a web browser. And I remember this was back in like the Internet Explorer six days. That's what hospitals were using. And I wrote this like SVG renderer because it was this visual decision tree. And we launched it and then we had a DAU chart and the DAUs were flat and couldn't figure it out. And we were piloting it with a few hospitals at the time. And at the time we were based in Palo Alto, we were piloting it with, you know, a few hospitals, including UCSF. And I rode a motorcycle at the time. So I rode my motorcycle up to, you know, UCSF and I shadowed doctors for a couple of days just to see how do they actually use this. And I realized that actually doctors don't have time to sit down and use a computer because you're seeing a patient. Then you have maybe five minutes until the next patient. And in those five minutes, you have to walk down the hall. You have to go to the computer station. You have to open up this totally legacy computer. By the time it boots up, that's like three minutes. Then you open up Inner Explorer 6. That takes like 30 seconds. Then you have to open up this app that we built. You have to sign in and your five minutes are up. You don't even have time to use it. And so we rewrote everything to run on Android and they still weren't using it. And the thing we realized is doctors are walking around with a bunch of residents behind them. In this kind of situation, it's like a social situation, right? Like the thing that matters is they're seen as an authority. They don't want to be seen on their phones. And then we pivoted again. So at that point, we're like, OK, so maybe the doctor isn't the target user. Actually, we want it to be used by maybe nurses or x-ray technicians or something like this. At that point, I left because I was like, this is actually pretty far off from kind of what I wanted to do. This is like the most fun thing for me is finding this product market fit because it's always surprising. You can't have one big idea because the idea is probably going to be wrong. So you kind of form hypotheses. You follow it down and you see what's right.
SPEAKER_00Check at the sourceYeah, I mean, look, there's different kinds of engineers and there's different ways to do it. And, you know, even on our team right now, I look at an engineer like Jared Sumner, and he's just incredible technical mind. He understands systems better than anyone I've met. And, you know, you need people like this. You need people with this kind of depth. For me, engineering has always been a practical thing. And, you know, for me, I've always been a generalist. And like, it doesn't matter if I'm doing, you know, like design or, you know, if I'm doing engineering or user research or whatever.
SPEAKER_00Check at the sourceMy first job I ever had, I was like, I think I was 16. And I just wanted to buy an electric guitar. And so what I did was I started, I just started freelancing. And so I was like, okay, I guess I'll make websites. And I think Fiverr was not a thing back then. So there's some other freelancing websites. So I just started like, I put up a website, I started bidding on stuff. And my first paycheck, I just spent the entire thing on an electric guitar. But it was very practical, right? Because it's like when you're in this kind of setup, you have to do the engineering, you have to do kind of the accounting, you have to do the design, you have to talk to customers.
SPEAKER_00Check at the sourceYeah, so I started on Facebook groups. That was the first time I worked on Vlad Kolesnikov hired me. I think I think he's actually still a Facebook. I think he's on some other team now. And it was cool. Actually, there's a big group of people that I worked with that were these kind of early JavaScript people, too. And, you know, like I did a bunch of JavaScript stuff. And it's funny, like I kept crossing paths with these people. And so Vlad, he worked on BoltJS, which was the software. It was the framework that powered ads manager. which later became React.js. I kept crossing paths with these people. And later on, there was a bunch more people like this. But anyway, so I was working on Facebook groups. I was really excited about it because of this mission of connecting people to their community. This is the thing that drew me in. And at the time, I was a big Reddit user. I became a Reddit user back when I was a teenager because I didn't know anyone else that coded. Even in college, I didn't really know anyone that coded. And honestly, I was always kind of embarrassed about it because I thought it was this nerdy thing. And I thought it was kind of this thing that I knew how to do. But I wanted, you know, I wanted to be like a cool kid. And, you know, like I couldn't like tell people that I coded. It was like it was very nerdy. And at some point I discovered it was some like programming community on Reddit. And I was just shocked. Like there's other people that are into this thing. It's like such a weird hobby. It's so niche. And it was just so exciting to find like-minded people like this and get this connection. And so I just wanted to work on this. I wanted to kind of contribute to this in some way. So I worked on Facebook groups for a while. And then, you know, there's a bunch of different projects. I have to kind of get into details for any of these. Eventually, I became the tech lead for Facebook groups and kind of grew into this. And the org grew. The work really changed. It changed from kind of building to a lot of like doc writing and coordination and kind of delegating to others. The culture was changing at the time. So, you know, this early Facebook culture was disappearing. The docs were coming in. The alignment meetings were coming in. And there was a lot of a lot more work around this kind of foundational stuff like privacy, security, things like this that I think, honestly, early on, a lot of corners were cut in order to grow. But at some point you just have to pay that debt. And that was the time when that happened. Then I spent a few years at Instagram after. And that was also a funny story. My wife got a got a job offer and she was just really excited about it. And she came to me and was like, hey, like I got this offer, but we're going to have to move. Is that OK? Yeah. And I was like, yeah, that's fine. You know, like I work in tech. We can work remotely anywhere. Where's the job? And she was like, it's in Nara. And I was like, where's that? And Nara is like rural Japan.
SPEAKER_00Check at the sourceThis was 12 hours or something difference or something like that. Something like that. Yeah. It was like 2021. Wow. And then I tried to kind of find a team that would sponsor me because there was there were these kind of arcane HR rules about like the time zone you have to be in and the team you have to be co-located with and so on. And so there was a little kind of nascent team for Instagram in Tokyo. And Will Bailey was running the team. He was also the guy that made Instagram stories. And so he was my manager for a while. And so we decided to grow that team together. And I worked remotely from NARA. And then most of the team was in Tokyo. And during this time, I started hacking on Instagram and the stack was just insane. like facebook was the single best web serving stack in the world the the way that hh everything is optimized like from from the hack language to the hhvm runtime to the to graphql as the transport layer to like the client libraries like relay and and all the stuff it was just and react it was just amazing there's no other dev stack in the world that was this good and it's just fully optimized and And then I went to Instagram and it's like, you know, Python where the type checker didn't work. Click to definition didn't work. And it was this like kind of hacked together Django and then like a fork of, you know, the Cython runtime. And just nothing really worked. And so I came to Instagram. I joined the labs team, you know, in Japan. And the idea was to find the next big thing for Instagram. We tried some stuff. But what I very quickly realized is that I was just not effective at working on the stack because it was such a terrible stack. And so I just went and started working on Dev Infra because we needed to fix it. And there's a few projects that we worked on. So one was migrating from Python to the big Facebook monolith. Another one was migrating from REST to GraphQL. And these projects, they're actually in progress. You know, like these are things that involve, it takes hundreds of engineers many years to do this. It's a big code base. It's a big migration. Now it's much faster.
SPEAKER_00Check at the sourceAnd then I just started getting kind of deeper into this. And by the end, by the time I left Instagram, so I was working on this on David for, and kind of leading a bunch of these migrations. That's also where I intersected with Fiona Fung, who is now the manager for the quad code team. I just worked with her and she was just such an amazing leader, this incredible depth and kind of history in tech. And I just thought like, there's no better, there's no better manager for this team.
SPEAKER_00Check at the sourceAnd so the work on Instagram kind of expanded a bit. And by the time I left, I was leading code quality for all of Meta. And so I was responsible for the quality of the code bases across Instagram, Facebook, Messenger, WhatsApp, Reality Labs, kind of all these code bases. At Meta, it was this program called Better Engineering. And the idea was, I think it's sort of like 2016 or 2018 or something. But Zuck mandated that every engineer of the company, 20% of their time has to be spent fixing tech debt. Oh, interesting. And we call this better engineering. And some of this is kind of bottom up where, you know, a team knows best the tech debt that they have to fix. And then some of it is stopped down where you need to do, you know, very big migrations. You need to migrate to new language features, new frameworks, things like this. And at Facebook scale, you know, there was tens of thousands of these migrations every year. And so I just sort of leading all this. And I realized very quick that you just need a little bit more order to it. There was no goals. No one knew kind of like what the outcomes were. There wasn't any tracking. And so we developed a bunch of stuff. One of the ideas was a centralized way to prioritize the different kind of code quality efforts. The second thing was figuring out the impact of code quality on engineering productivity, which turned out to be significant. How did you measure? What did you find there? There was a bunch of stuff. I think some of this has been published. I don't know if all of it has, but essentially you try to do like causal analysis and causal inference. This is the methodology. You try to figure out, like, what are the factors that make it so engineers are more productive? Some of it is code quality. Some of it is outside of code quality. So, for example, Meta went back to, you know, return to office instead of work from home.
SPEAKER_00Check at the sourceBut code quality actually contributes like, you know, double digit percent to productivity, it turns out, even at the biggest scale.
SPEAKER_00Check at the sourceYeah, I think a lot of the big companies have published about this. Like I think Facebook published something. Microsoft publishes a bunch about this. Google does. But yeah, totally. If every time that you build a feature, you have to think about, do I use framework X or Y or Z? These are all options that you can consider because the code base is in a partially migrated state where all of these are around the code somewhere. As an engineer, you're going to have a bad time. As a new hire, you're going to have a bad time. As a model, you might just pick the wrong thing. And then, you know, like the user has to, of course, correct you. So actually, you know, the better thing to do is just always have, you know, a clean code base. Always make sure that when you start a migration, you finish the migration. And this is great for engineers. And nowadays it's great for models too.
SPEAKER_00Check at the sourceHe was my ramp up buddy. So I joined Anthropic. I was trying to figure out kind of like what to do next. And, you know, I met a bunch of people at all the different labs and Anthropic was just awesome. The obvious choice for me because of the mission. This is the thing that personally I know that I need the most. And also just kind of seeing all this change that's happening. It's important to have some sort of framework to think about this and to think about our role in it. I'm also a really big sci-fi reader. Like that's definitely my genre. I'm a big reader. I have like a giant bookshelf at home and stuff. And I just know how bad this thing can go. And I just felt like this is a place that has serious thinkers. People are taking this very seriously and thinking about what can we do to make this thing go better. So when I joined Anthropic, I did a bunch of ramp up projects, just, you know, various stuff that I was hacking on. And I wrote my first pull request by hand because I thought that's how you write code. That used to be how you write code. That used to be how you write code. But even at the time at Anthropic, there was this thing called Clyde and it was the predecessor to Cloud Code. It was super janky. It was like it was Python. You know, it took like 40 seconds to start up. It was research code. It was not agentic. But if you prompt it very carefully and hold the tool just right, it can write code for you. And so Adam rejected my PR and he was like, actually, you should use this Clyde thing for it instead. And I was like, okay, cool. It took me like half a day to figure out how to use this tool because you have to like pass in a bunch of flags and like use it correctly. But then it sped out a working PR. It just one-shotted it. Oh, and this was like 2024. It's like September 2024, August, something like that. And I think for me, this was my first field AGI moment at Anthropic because I was just, oh, my God, like, I didn't know the model could do this. Like I was used to these like kind of tab completions, line level completions and IDE. I had no idea that it could just make a working pull request for me.
SPEAKER_00Check at the sourceSo, yeah, I started hacking on a bunch of different stuff. I was working on some things in product. I worked on reinforcement learning for a little bit just to kind of understand the layer under the layer at which I was building things. This is still advice that I give to a lot of engineers is always understand the layer under. It's really important because that just gives you the depth and you kind of like you have a little bit more levers to work at the layer that you actually work at. This was the advice 10 years ago. It's still the advice today. But the layer under is a little bit different now. Before, it was like, if you're writing JavaScript, understand the JavaScript VM and frameworks and stuff. Now it's like, understand the model. So I was hacking on a bunch of different stuff. Some things shipped, some things didn't ship. And at some point, I just wanted to understand the public Anthropic API because I'd never used it before. And I didn't want to build a UI. I just wanted to hack something up quite quickly because we didn't have cloud code back then. You're still writing code by hand. And I wrote this little bash tool that all it did was it hit the Anthropic API and it was essentially like a chat based application, but just in the terminal because that's what AI used to be. And, you know, I still think about it like engineers are the first adopters. And so when we started to move out of conversational AI to agentic AI, it took a little bit, but engineers understood it pretty quick. And I think now when you ask non-engineers about like, what is AI, they would say it's this conversational AI. It's like a chatbot or something. And that's why I'm actually very excited for, you know, CoWork, this new product that we launched, because it's going to bring the same thing that engineers saw very early to everyone else. But when I think about, you know, CoWork, I think back to this moment that we're talking about, like very early on. Quad code originally wasn't quad code. It was a chatbot because that's what I thought AI was. But we had to kind of figure out kind of what is the next thing. And so at the time I built this chatbot, it was somewhat useful, but it was just a chatbot. And the next thing that I tried was I wanted it to use tools because tool use just came out and I didn't know what it was. And I was like, let's experiment. And I gave it a single tool, which was the bash tool. And I didn't know what to do with the bash tool. And so I asked it, you know, like I actually didn't know if it could even do this, but I asked her like, what music am I listening to? And it just wrote a little Apple script program using like set or whatever. To open up my music player and then like query it to see what music it's listening to. And just one shot at this with Sonnet 3.5. This is actually my second field AGI moment very quickly after the first one. Hmm. And the model just wants to use tools. That's just what I realized. Like this thing, like if you give it a tool, it will figure out how to use it to get the thing done. And I think at the time, when I think about the way that people were approaching AI encoding, Everyone essentially had this mental model of you take the model and you put it in a box and you figure out, like, what is the interface? Like, how do you want to interact with this model? What do you need it to do? Essentially, it's like if you have a program, you stub out some module, stub out some function and you say, OK, this is now AI. But otherwise, the rest of the program is just a program. And so this is just not the way to think about the model. The way to think about it is the model is its own thing. You give it tools. You give it programs that it can run. You let it run programs. You let it write programs. But you don't make it a component of this larger system in this way. And I think there's just like, you know, this is a version of the bitter lesson. The bitter lesson is a very specific framing, but there's many corollaries to it. This is one of the corollaries is just let the model do its thing. Don't try to put it in a box. Don't try to force it to behave a particular way.
SPEAKER_00Check at the sourceThat's right. Yeah, we give it Bash, then I say we, it was just me the first three months, but then the team grew. So it was Bash, it was, and FileEdit, that was the second one.
SPEAKER_00Check at the sourceIn the end, the decision was to release so that we can study safety in the wild. Because when you think about safety and, you know, I keep talking about the word safety. The reason Anthropic exists as a lab is safety. This is the reason it was founded. This is the reason it exists. If you ask anyone at Anthropic why they chose it, it's because of safety. And so if you think about model safety, you know, there's different layers at which to think about it. There's kind of alignment and mechanistic interpretability. This is at the model layer. Then there's evals. And this is kind of like it's kind of putting the model in a Petri dish and synthetically studying it in this way. And then you can study it in the wild and you can see how it actually behaves. You can see how users talk about it. You can see like, what are the risks in the wild? Then you actually learn a lot this way. And by doing this, we've been able to make the model much safer. So in hindsight, it was totally the right decision.
SPEAKER_00Check at the sourceI think it was 4. That was the general availability in February, but I think it was Research Preview before that.
SPEAKER_00Check at the sourceI mean, this is a, you know, Anthropic, we're a research lab, we're a safety lab. And, you know, product is this kind of thing tacked onto the side. Product exists so that we can serve research better and so we can make the model safer. And this is kind of how we think about everything. There's also this funny moment early on when we had this launch review and we were deciding whether to launch it. I remember this moment because we were in the room. I think there was Mike Krieger, there was Dario, there were some other folks in the room and we were deciding what should we do. we were looking at the internal adoption chart, which was just vertical. It was just insane. It was, you know, like nowadays, it's a hundred percent, right? Just a hundred percent. Like nowadays, everyone at every technical employee at Anthropic uses quad code every day is pretty much a hundred percent. For non-technical employees, it's also like it's actually getting quite close to 100%. It's increasing very quickly. Like, you know, like half the sales team uses quad code. And I think that's increasing. It's just it's crazy. Dario had this question about like, how did it grow this fast? Are you like forcing people to use it? And I was like, no, we offer this tool. People vote with their feet. And, you know, it's just like let people use the tool that they prefer. And they chose it. You don't seem like the person who's exactly forcing people to use your tool. Yeah, yeah. I mean, the way we did it, we just, we launched a thing and then we just like listen to the users and we talked to people, we saw how they use it, we followed up, we made it better. And yeah, I mean, now, now we're at the point where quad code writes, I think something like 80% of the code in Anthropic on average. And, you know, it writes all my code for sure.
SPEAKER_00Check at the sourceSo the switch was instant when we started using Opus 4.5. This was before it came out. You know, we were dogfooding it for a little bit and it was just right away. It's such a more capable model. I just found that I didn't have to open my IDE anymore. I just uninstalled my IDE because I just didn't need it at that point.
SPEAKER_00Check at the sourceYeah, I'll be honest, it writes better code than I do.
SPEAKER_00Check at the sourceYeah, yeah. I realized this because also in December, I was traveling a little bit. I was on a coding vacation. We were talking about this before, but I went to Europe. We were just in a different time zone, kind of nomading around. And it was so fun because I was just coding all day, every day, which is my favorite thing to do. And I wrote maybe, you know, like 10, 20 pull requests every day, something like that. Opus 4.5 and Quadcode wrote 100% of every single one. I didn't edit a single line manually. And I realized at the end of that month, Opus introduced maybe two bugs. Whereas if I'd written that by hand, that would have been, you know, like 20 bucks or something like that.
SPEAKER_00Check at the sourceYeah, I mean, look, there's no one right way to use quad code. So I can share some tips and things, but I think the wrong conclusion to draw would be to just copy these and use it. The way we build quad code is we build it to be hackable. Because we know every engineer's workflow is different. There's no one way to do things. There's no two engineers that have the same workflow. It's just every engineer is different.
SPEAKER_00Check at the sourceYeah, it's like we're like graphs people, right? Like you choose your tools. Like we care deeply about it. So there's no one right way to do it. So for me, the way that I do it generally is I have five terminal tabs. Each one of them has a checkout of their repository. So it's five parallel checkouts. And usually all kind of round robin and start quad code in each one. Almost every time I start in plane mode. So that's like shift tab twice in the terminal. And I also overflow as I run out of tabs because there's only so many terminal tabs. I used to use web a lot for this, like quad.ai slash code. That's the place that I overflow to. Nowadays, I actually use the desktop app. It's more convenient. So quad code, you know, it's been in our desktop app for, you know, for many months. It's just the code tab in the quad app. And I actually really like it because it has built in work tree support. So that's existed for a while. And that's quite nice for parallelism. So you have multiple you don't need multiple checkouts. You just have one and then we automatically set up get work trees for you. So you get this kind of environment isolation. The reason I do that is I actually just really hate fiddling with get work trees on the command line. Because it's kind of fiddly, like you need to know the CD.
SPEAKER_00Check at the sourceThat's right. Imagine that you have a folder, but you have maybe like Git makes five copies of that folder in a way that's very cheap and kind of easy to throw away. So you get this kind of isolation. You can work in parallel and the clouds don't interfere.
SPEAKER_00Check at the sourceYeah, exactly. I actually find that over time I'm using the desktop app more and more for this just because I don't need these separate checkouts. And, you know, I just have a bunch of quads running in parallel and I don't have to think about it. The other surprise hit is the iOS app for me. Every day I start, like I wake up and I just start a few agents on my phone. Oh, the native one, yeah. The native one, yeah. It's just like, it's the quad app. It's the code tab in the quad app. And it's the same exact quad code. Except it runs in the cloud, right? It runs in the cloud. Yeah, so you have to kind of configure the environment. Luckily, our environment's pretty simple. So, you know, and we just use hooks for it. So you just use the session start hook and configure it. This is kind of one of the benefits of making quad code really hackable is it's very easy to do this kind of configuration. And this is something, honestly, I would never have predicted because, you know, like I code on a computer. If you told me six months ago, I'd be writing, I don't know, a third. I haven't told the data, maybe like a third half, something like this of my code on a phone. That's crazy. But that's that's what I'm doing today.
SPEAKER_00Check at the sourceYeah, I think there's kind of like two modes to think about or kind of like two kind of workflows to think about. So when you're new to a code base, learn mode is awesome. I highly recommend it. For people that are onboarding to the Quadcode team, people that onboard to Anthropic, The thing that we recommend is so you do for people that haven't tried it, you do slash config in quad code, you pick the output style and you can do learn or explanatory. We usually recommend explanatory because that tends to be better for new code bases that you kind of haven't been in before. For me, once you're familiar with the code base, you just want to be productive, right? Like you just want to ship as much as you can and you want to kind of be effective doing that. um so the world really switches i don't really go deep into tasks anymore i start a quad in plan mode i'll have it kick something off with opus 4.5 i think it got there with 4.6 it just really really does it once there is a good plan it just it will one-shot the implementation almost every time so the most important thing is to go back and forth a little bit to get the plan right So what I do is I start one, I enter plan mode, I give it a prompt. As it's chugging along, I'll go to my second tab and I'll start the second quad also in plan mode, get it chugging along, then go to the third tab, go to the fourth one. Then maybe I'll go back to the first one when I get notified that it's done. And then I'll kind of- Do you have notifications on or do you turn them off? I actually operate in both modes. Sometimes I do like, you know, focus mode on the Mac. So I just have it off. But also sometimes I use the system notifications.
SPEAKER_00Check at the sourceYeah, powerhouse, each one varies a lot. Sometimes it's a few lines, sometimes it's a few hundred or a few thousand lines. They're all just very, very different. It's changed so much. Like back when I was at Instagram, I think I was one of the top two, maybe top three most productive engineers at Instagram just by volume of code written. Oh, wow. So I've always, you know, for me, I've always just coded a lot. Like this is coding is like a way that I can express myself. And it's just like it's a way that my brain thinks also. And so now I just get to do it. But I think with quad code, the kind of code that you write, if you are very productive, it tends to be even it's just the number of PR sort of undersells what's happening. Because I think people that used to be very productive in the old days before AI assistance, a lot of the code maybe was like code migrations or something like that. So like people that ship, you know, 20, 30 PRs every day. A lot of it was like pretty, you know, like a one liner or kind of migrating A to B or whatever. Nowadays, I ship, you know, 20, 30 PRs every day, but every PR is just completely different. Some of them are thousands of lines. Some of them are hundreds. Some of them are dozens of them are one liners. It's none of these are kind of code migrations because actually Quad just does those. And I don't need to be part of that.
SPEAKER_00Check at the sourceYeah, I'll start by thinking, I'll start by talking about how code review used to work for me. So the way that I used to do it is every time, I also used to be one of the most prolific code reviewers. Oh, okay. Yeah, yeah. Right? Or is it code reviewers? That's actually, that's one of the benefits of being in a different time zone. Like I'm not super human. I just didn't have any meetings. And the way that I approach code review is every time that I would have to comment about something, I would drop it in a spreadsheet. And I would like describe the issue. So let's say, you know, like someone named a parameter, you know, in a function badly, I would put that in a spreadsheet. If someone did some bad react pattern or something, I would put that in the spreadsheet. And then over time, I would just kind of tally up the spreadsheet. And any time that a particular row had more than three or four instances, I would write a lint rule for it. So just automate it with kind of static analysis. And so that's what it used to look like for me. I've always tried to automate myself away because there's just so many things to do. And this is one of our superpowers as engineers is we're able to automate all of the tedious work. There's very few other fields where you're able to do this thing. This is a thing uniquely that we're able to do. And this is a thing that I've just always enjoyed because it gives me more free time and I get to do the work I actually enjoy. And so today, the way this looks is a little different, but it mirrors this a little bit. So when quad code writes code, it generally, it will run tests locally. And this is something quad just often decides to do when it's relevant or it'll write new tests. So you kind of do this kind of verification. When we make changes to cloud code, cloud will also test itself. So it'll launch itself kind of in a sub-process. It'll verify itself and it'll test itself end-to-end.
SPEAKER_00Check at the sourceYeah, that's right. That's right. But it'll literally launch itself just in a bash process and kind of just see like, hey, do I still work? Okay. So it'll do this. And this is something that we just didn't code in. Like it just with Opus 4.5 especially, it just started spontaneously doing this. It just wants to kind of check. So we do this and then we also run clod-p. So this is the clod agent SDK in CI. So every pull request at Anthropic is code reviewed by clod code. And that actually catches maybe like 80% of bugs, something like this. And it's the first round of kind of code review. Cloud will automatically address some of these. Some of them it'll leave to a human because it's not sure what to do. There's always an engineer that does the second pass of code review. And there always has to be a person in the loop approving the change.
SPEAKER_00Check at the sourceLike, you know, if you're building some personal side project, like you can just YOLO straight to main, you know, like.
SPEAKER_00Check at the sourceThe very first versions of Cloud Code that were internal, like, you know, I committed straight to main. But then, you know, as soon as you have users and, you know, for Anthropic, our main customer base is enterprises. This is what we care about the most for us, for safety reasons. Security is really important. Privacy is important. These are these are all related. It's also very important for our customers. And so because this is an enterprise product, it has to be secure. It has to be we have to make sure that it meets a certain bar. So we definitely use a lot of automation. But at least for now, there has to be a human in the loop just to make sure.
SPEAKER_00Check at the sourceYeah, absolutely, absolutely. Yeah, we have type checkers, we have linters, we run the build. Cloud is actually so good at writing lint rules. So actually what I do now, I used to tally stuff up in a spreadsheet. Now what I do is when a coworker puts up a pull request and I'm like, this is lintable, I'll just be at cloud, please write a lint rule for this in that PR on their PR. And we have, you know, you just run like slash. I think it's like set up GitHub or something like this. You can do this in quad code and it'll install the GitHub app, which then makes it so you can tag at quad on any pull request, any issue. I use this every single day. So very, very useful. So you want these deterministic steps. Also, though, there are there are ways to get cloud to be a little bit more deterministic. So, for example, you can do best event. You can have it do multiple passes.
SPEAKER_00Check at the sourceAnd so all we do is, you know, we launch parallel agents to do stuff and then we launch parallel deduping agents to check for false positives. But essentially, best of end, the way you implement it is all you say is, cloud, start three agents to do this. And that's it.
SPEAKER_00Check at the sourceYeah, yeah. It's very simple. Like, you know, there's not much to it. There's like, there's a core query loop. There's a few tools that it uses. We delete these tools all the time. We add new tools all the time. We're just always experimenting with it. So there's kind of this core kind of agent part of it. Then there's the 2E part of it. And then there's actually a ton of different pieces around security and making sure that everything that Quadcode does is safe and that there's a human in the loop for when it happens.
SPEAKER_00Check at the sourceYeah, there's kind of a couple versions of this. Safety, there's just many, many layers. And for things like safety and security, there's no one perfect answer. So, you know, it's always a Swiss cheese model. You just need a bunch of layers. And with enough layers, the probability of catching anything goes up. And so you just have to kind of count the number of nines in that probability and pick the threshold that you want. And so for something like prompt injection, for example, we do this generally at three different layers. So let's think about something like WebFetch. So quad fetches a URL and it reads the contents of that web page and then it does something in quad code. So one of the risks for something like this is prompt injection. Maybe there's an instruction on that website to be like, hey, quad, delete all the folders or something like that. So we think about this in a number of ways. The most basic way is it's an alignment problem. And so Opus 4.6 is the most aligned model we've ever released because we've taught the model how to be more resistant to prompt injection. And so you can read about this on the model card. And I think it was part of the release. The second part is that we have classifiers at runtime where if there is a request that seems to be prompt injected, we block it and we just make the model try again. And then the third layer is for something like WebFetch, we actually summarize the results in using a subagent. And then we return that summary back to the main agent. So again, this kind of reduces the probability of prompt injection. And so you can kind of see how this isn't just one mechanism. It's a layer. And by having a bunch of these different layers, it just reduces the probability a lot.
SPEAKER_00Check at the sourceYeah, I mean, this is one of those things where we try so many different things. We try so many different tools and just statistically, most of them we throw away. Even something like the spinner in Quadcode, I think it's gone through like 100 iterations, I want to say. Just the spinner. And, you know, out of those, we've landed maybe like 10 or 20 in production and like 80 of them I probably just threw away because it didn't feel good enough. So just statistically, almost all the code we write, we throw away because it's just so easy to write this code and try stuff and see what feels good. So for something like RAG, we tried a bunch of different approaches early on. So the first one was RAG for retrieval, because I think this I was just like reading up like how people were doing retrieval and it seemed like all the papers were talking about RAG. And so the way I did it was it was like a local vector database. I think it was like written in TypeScript and you just lived on the user machine. And then I was using some like embedding model those in the cloud to compute the embeddings before storing it. And that worked, like, pretty good. But there's a lot of issues with RAG. So, for example, I was finding that the code drifted out of sync. Like, if I make a local function, it's not yet indexed, and so RAG isn't going to find it. There's also this question of, like, how exactly is the index permissioned? So who can access it? I can access it. But then how do we encode that in kind of permission policies? How do we make sure no one else can access it? How do we make sure that if there's a rogue IT person within the company, they can't access someone else's data? This is really, really important that we think about this. And so we just decided it was sort of working, but it also has a lot of downsides. And so we tried a bunch of other stuff. One of them was just using the model to kind of index everything recursively. That was kind of a cool idea. There was another version where we just tried glob and grep. We tried a bunch of different stuff. It turned out that agentic search just outperformed everything. And when I say agentic search, it's a fancy word for glob and grep. That's all it is.
SPEAKER_00Check at the sourceYeah, and this was, it was partially inspired, honestly, by my experience at Instagram. Because at Instagram, click to definition didn't work because the dev stack was just borked like half the time. And I think now it's better. And so what engineers have learned to do instead is, let's say you're looking for the definition of the function foo. Instead of click to definition, what you would do is you would use the global index, which is quite good at meta. And then you would search for foo per opening parentheses. And this worked pretty well. And it's funny because like this works for the model pretty well too.
SPEAKER_00Check at the sourcePermissioning is really complex. There's like everything else that has to do with security. It's a Swiss cheese model. There are a number of classifiers that run to make sure the command is safe. And there's also static analysis that we do to make sure the command is safe. As a user, you can also allow list particular patterns that you know to be safe. So for example, some standard Unix utilities we pre-allow because we know they're read-only, because we know they can't export your data or anything like this. So we just won't prompt you for permission. But actually quite few tools fall into this category because even something like the find command, there's actually a way to execute arbitrary code as part of that command because there's like system flags that you can use for this. Or even something like the said command, there's ways to use this. So there's just like all this like arcania about these various Unix utilities where it's actually not as safe as you think. And so we want to be by default fairly conservative about what we allow by default. As a user, though, you can configure an allow list. So you can say, for example, like these patterns are allowed, these patterns are not allowed. And so we let you define that. And we also check this allow list to make sure that it's safe.
SPEAKER_00Check at the sourceThat's right. This is a funny artifact. This was actually in the very, very first version of quad code. This is the way permissions worked. This is the very first release. This was like September 2024, the first internal release. I remember at the time we weren't sure whether agentic safety could even be solved. And so there was actually a lot of pushback internally from safety teams because they were like, OK, like you can't just let the model run bash commands like that's unsafe. So like, what do you do? Like, this is not a solvable problem. So like, we can't launch this. I brainstormed with Ben Mann and Ben was he started the labs team. He's one of the founders at Anthropic. He's actually he's the person that hired me to Anthropic. We just came up with permission prompts as the way to do this.
SPEAKER_00Check at the sourceI think it's kind of an acknowledgement that everyone just is figuring stuff out and if you kind of squint and look at the work people are doing it's all quite similar and it's kind of quite generalist and If you talk to the average software engineer, they might not just be doing coding. They might also be doing a little design. They might also be talking to users. They might be writing their own product requirements. They might be writing software and also, you know, doing research. They might be writing product code and also infrastructure code. At Anthropic, there's a lot of generalists. This is also, you know, from my background, this is one of the reasons that I gravitated towards it. And I think member of technical staff just kind of encodes this in the way that people talk to each other, even if they don't know each other. Without this title, the default would have been, I see your name on Slack and under your name, it's a software engineer. And then I'm like, well, OK, I guess you're like you're the coding person. And so I'm not going to ask you like product questions. But when everyone's title is member of technical staff, by default, you assume everyone does everything. And so it kind of inverts this relationship between people, even if you don't know each other well yet. In a way, it's kind of this optimism built into the structure. I think it's also a glimpse of the future, because I think this is where software engineering is going. I think this is where every discipline is going, is more of this generalist model. It definitely feels like it in software engineering.
SPEAKER_00Check at the sourceI remember back in June or July of last year, I walked into the office and there's a row of data scientists that's right next to the quad code team, at least at the time. And I walked in and our data scientist for the quad code team had quad code up on his monitor. And he was using it. And I was like, this is interesting because you're a data scientist. Why are you using a terminal? You didn't have Node.js installed because we depended on Node.js back then. I was like, are you are you dogfooding it? Like, are you just like trying to like figure out how this thing works or something? He's like, no, no, I'm like, I'm using it to run queries. He was just like using it to run SQL. And it has like little like ASCII visualizations in the terminal. And then the next week, the entire row of data scientists had quadcode running on their computers. And this expanded. And so if you look at the team today, on the Quad Code team, everyone codes. The engineers code, our engineering manager codes, designers code, data scientists code, our finance guy codes, everyone on the team codes. And I think part of it is Quad Code just makes it so easy. So you don't really have to understand the code base. You can just like dive in and kind of make small changes quite easily. But I think another thing is people are able to use cloud code to do their jobs more, whether it's, you know, financial forecasts or, you know, data science or whatever. And by doing this, it's actually quite an easy crossover to just use it to write a little bit of code also. So it's just a way to dip your toe in the water.
SPEAKER_00Check at the sourceSome of this I think is because Anthropic is still, you know, it's still a startup. So you don't actually have to align with that many people. Usually you can just kind of talk about it or do it in Slack or whatever. Um, but yeah, also part of it is, you know, like Kat used to be an engineering manager. She's, she's extremely technical. And I think this is, this is the way that, you know, our product team thinks about it too, is, you know, better to send a PR.
SPEAKER_00Check at the sourceYeah, absolutely. I mean, on our team, the culture is we don't really write stuff. We just, we show. It's a little hard to reflect back on the time before because I think now just prototyping everything is so baked into the way that we build. Just everything is prototyped multiple times. Like, you know, we launched agent teams earlier this week. This is our implementation of swarms. It's very exciting because it just lets quad do more work for longer, more autonomously. You have a bunch of different uncorrelated context windows and you have this kind of communication between agents. They can just do more. This is something that Daisy and Suzanne and other folks on the team and Karen, they prototype this for months. And they tried all in all probably hundreds of versions of this before they got a user experience that felt really good. It was just really, really hard to get right. There's just no way we could have shipped this if we started with, you know, like static mocks in Figma or if we started with a PRD or something like this. It's a thing that you have to build and you have to feel and you have to see how it feels.
SPEAKER_00Check at the sourceYeah, that's right. I mean, we're in this world right now also where we just, we don't know what the right answer is. You know, I think back in the old way of building, the cost of building was high. And so you had to actually spend a lot of effort to aim very carefully before you take your shot. Because after you take your shot, it's very hard to course correct. You can only take so few shots. But now it's changed. The cost of building is very low, but also we don't know where we're aiming. So we just have to like, we have to try and we have to see what feels good. And it's just very, very exploratory. And I think also a big part of it is humility, where, you know, personally, I'm wrong like half the time. I'd say like most of my ideas are bad. At least half of them are bad. And I don't know which half until I try it.
SPEAKER_00Check at the sourceThat's right. It's like, I have to try it myself and then I have to see what others think. Because, you know, my intuition does not always match others.
SPEAKER_00Check at the sourceYeah. And there's a lot of examples of this. Like we launched this kind of condensed view for file reads and file search just because the model is just so agentic now. Like I felt like half the screen is these like file reads and I actually don't care if I get, you know, I read a thing. I don't really care what it is. And so we condensed this down to make the output a little bit more readable. I really liked it after probably 30 prototypes or something like this. It took so much effort to make that feel really good and clean. We rolled it out to employees at Anthropic for about a month and we had everyone dogfooded and I fixed another probably dozen bugs, dozen tweaks based on all this feedback. We launched it externally and, you know, almost all users liked it. But there were a few users that didn't because they want more expanded output. And so on the GitHub issue, I was just going back and forth with people to be like, you know, like, what don't you like? And people gave a lot of feedback. I shipped another version. Then some people liked it. Some people didn't. And so I iterated again and kind of made it good. And it's actually, I think, almost there where people can configure it the way that they want. But still, the default is really good. But this is just the process. You know, we get it right some of the time. We have to learn from our users. We want to hear from people so we can get it right. Do you use ticketing systems for your work?
SPEAKER_00Check at the sourceSo at Anthropic, we leave it up to teams. On the Quadco team, we leave it up to every person. uh different people use uh use this differently for example i don't use a ticketing system some people like to use asana or notes or something like this one of the coolest things that i saw this is maybe like three months ago or something we launched plugins and the way we launched that is uh daisy for a weekend she had a very early version of swarms and she let the swarm run and she told that your job is to build plugins You have to come up with a spec. Then you have to make an Asana board and split up into tasks. And then all the different agents have to build it. And she set up a container and she set up a quad in dangerous mode. And she let it run for the entire weekend. It spawned a couple hundred agents. They made a hundred tasks on the Asana board. And then they implemented it. And that's pretty much the version of plugins that we shipped. These kind of coordination systems, they used to be for humans. But I think nowadays it's just as much for models. Let's talk about Cloud Cowork.
SPEAKER_00Check at the sourceThe team was really small. It was just a few people. For a long time, we felt that there is some product to be built for non-engineers. The reason we felt this is for a long time, people that were using quad code are non-engineers. And so, you know, in the product world, when you see latent demand, you see people jumping through hoops to use a product that was not designed for them. that's a really good sign it's time to build another product that is built just for them there's all these people on twitter that there's this one guy that was using uh quad code to like monitor his tomato plants i just i love this it was like get like a webcam set up and the quad was like oh my god i'm so happy that our plant is budding and because it was it had like a webcam and just like every day it was like monitoring it and it was so happy that the tomatoes were growing There was someone that was using quad code to, you know, recover photos off of a corrupted hard drive. And it was like his wedding photos. Wow. You know, like I said, our entire finance team at Anthropic uses quad code. Our sales team uses quad code. So there's just all these people that are non-engineers that were using it. And at that point, Quadcode, it's available in a lot of form factors, right? Like we started in a terminal, then we expanded and we added support for IDEs. So we have extensions for, you know, every VS Code-based IDE, every JetBrains-based IDE. There's also iOS and Android apps. There's the desktop app. There's web. So then there's like Slack and GitHub apps. So we kind of expanded to all these places to make quad code easier for engineers. But ultimately, none of these are built still for non-engineers. And so quad code evolved a lot, but it still felt like there's a there's kind of a gap and there's a product that could make this even easier for people. And so for the last couple of months, the team was kind of hacking around and just saying, like, what is the right product? And at some point, someone came up with this idea of like, what if we just take quad code at some guardrails? So, for example, co-workshops with a virtual machine. This is one of the many ways that we make sure it's really safe, especially for non-technical users that don't want to read like bash commands to figure out what it's doing. And they were hacking on this. I think it was something like 10 days until end or something. It was just fully built with quad code. And then we shipped it.
SPEAKER_00Check at the sourceIn some places, I think there's less complexity than you would think. In some places, there's more complexity. So on the product side, it's quite simple because it's just the quad desktop app. So, you know, you download the quad app. It's a single desktop app. It has a tab for co-work. It has a tab for code. It has a tab for chat. So it is just one app. And we're able to inherit a lot of that product logic. There's some UI rendering code. Under the hood, you know, it's just the same quad code running. It's the same quad agent SDK that powers quad code. A lot of the complexity actually is about safety. Because we know, like I said, we know the user is non-technical. And so we just want to make sure they have a good experience. And so, for example, if someone launches the app and then, you know, like they delete a bunch of family photos, that's really not good. And so we wanted to make sure that we protect against this. So you can't accidentally do that. And so that's where a lot of the guardrails came from. So there's a bunch of classifiers running on the back end. This is for safety and, again, extra mitigations for things like prompt injection and risks like this around security. On the front end, there's an entire virtual machine that we ship. There's a bunch of operating system level integrations to make sure people don't accidentally delete things. So just around safety, there's a lot there. And then we also had to rethink the permission system. Because we inherit the permission system from quad code. But also for co-work, actually a big part of the value is not just running locally, but it's using all of your tools the way that quad code uses it. But the thing is, for non-technical users, your tools aren't really available as CLIs. Some of them are available over MCP. Many of them are available in a browser. And so co-work is really, really good when you pair it with a Chrome extension. And this is the way that I usually use it. So, you know, for example, I use it every week to do project management for the team. We have like we have a spreadsheet that tracks kind of at a really high level what everyone's working on. And this is kind of my personal way of project managing. You know, other people, like I said, use Asana, other people use notes or whatever. For my own tests, I don't use anything, but kind of for the team overall, I have the spreadsheet. And I have cowork on a check-in and I just ask cowork every week, hey, can you look at the rows for any status that has not been filled out? Can you just ping the engineer on Slack? And so it'll open one tab in Chrome for the spreadsheet. It'll open another tab with Slack and then it'll just start messaging engineers in Slack and it just one shots it. There's like one engineer's name for some reason they can't autocomplete, but everything else it just gets. And so this is actually like from a safety point of view, we also thought pretty deeply about this Chrome extension and how this works and how the permissioning model should interact with this local permissioning model. So there's also a bunch of code to kind of make sure that that feels smooth.
SPEAKER_00Check at the sourceYeah, just Electron and TypeScript. Actually, some of the people working on it are early Electron folks. So Felix, who's, you know, the creator of Cowork, he was a really early engineer on Electron and he helped build it. Oh, amazing. And Cowork launched macOS only.
SPEAKER_00Check at the sourceYeah, so Windows coming soon. I think probably by the time this podcast comes out, we will have Windows support. We just wanted to start early and start learning. You know, like everything we do at Anthropic, it's kind of like the way that I told my own story. One of the things I like about Anthropic is it just really, really matches the way that people here think about it. You know, back to this point where like we don't have high certainty about the things that we build and our intuition is often wrong. And so we just have to like learn from users and figure out what people actually want and just spend a lot of time listening to people and understanding the feedback deeply. This is the way that we build a product. And so we always launch a little bit before it's ready.
SPEAKER_00Check at the sourceAlso, it didn't support, you know, like a lot of different stacks. And then over the coming weeks, we added support for every stack. Now Quadcode supports every single stack, you know, like Windows, whatever weird Linux destroyer you use, macOS, we support everything. And so for CodeWork also, we just wanted to launch early. We wanted to start with Mac because that was just the starting point. But yeah, it's going to support everything.
SPEAKER_00Check at the sourceYeah, there's there's some off the shelf vendors that we use. There's some custom code that we use. So it's actually it's a mix of both. There's nothing too surprising about it. There's one thing about Anthropic that's kind of interesting is because we're an enterprise company and we care a lot about privacy and security, we can't see people's data. And so, you know, like if someone reports a bug, like I actually can't pull up your logs to kind of see what's going on. A lot of work goes into kind of figuring out how to log events and things like this in a privacy-preserving way.
SPEAKER_00Check at the sourceYeah. Every day, the team is landing so many fixes. The most surprising thing is just how much people are loving it, to be honest. When Quadcode first came out, it actually wasn't an overnight hit. This is something people think it was, but it was sort of a slow takeoff at the beginning. And I think the first big inflection was in May when we released Opus 4 and Sonnet 4. That's when it really clicked. And that's when our growth became exponential. But at the beginning, it was sort of a research preview. People didn't really know how to use it. Some people got it immediately, but most people didn't. It took a little while. For co-work, it's a much steeper growth trajectory than Quadcode was at the beginning. So it's just been an instant hit. And that's actually been very surprising. I didn't really expect that.
SPEAKER_00Check at the sourceWe're always doing experiments, right? There's all sorts of ways to get more mileage out of quad code. One way you can do it is by extending context. Another way is auto-compacting context. So it's essentially infinite context. And that's what we have right now. Another way is using sub-agents. So you have multiple agents kind of working together. There's just like a lot of different approaches to get a little bit more mileage out of the context window. There's this one idea called uncorrelated context windows. That's what we call it. And the idea is you have multiple context windows, but they essentially start fresh. So they don't know about each other. And so an example of this is like a correlated context window is if you have one, if you have the model and it does a task and then you have it just do a second task in that same context window. And in this case, the second task knows about the first one because it's in the same window. But for something like a subagent, it's uncorrelated because the main agent prompts the subagent, but the subagent's context window is fresh. Besides that prompt, it doesn't know what's in the parent context window. And you can see this actually a little bit in, for example, like subagents versus skills. Because when you run a skill, you know, or a slash command, it sees the parent context window versus for a subagent, it doesn't. So it's uncorrelated. There's some cases where you want that context. There's some cases when you don't. And there's this kind of interesting thing where uncorrelated context windows and just throwing more context at the problem and throwing more tokens at it when the windows are uncorrelated gives you better results. It's actually a form of test time compute to do this. And for something like Teams, we've been experimenting with this for a while, I think since maybe like October or September or something like this. And it really just felt like with Opus 4.6, it clicked. where the model figured out really how to use this. And sometimes you see these kind of cute exchanges where the agents are talking to each other and they're like discussing something. And this is very cool to see. It's very like humanistic in a way. But there's other times where you just get very good results. And so we had a bunch of internal evaluations, for example, where we have Quad build something very, very complex, something more complex than what a single Quad would build. And we saw the results just really, really improve with Opus 4.6 with Teams. And that's why we felt it's the right time to release it. We also wanted to be careful. And the reason you have to opt into it, the reason it's a research preview is it uses a ton of tokens because it's just a bunch of quads that are running. Not everyone wants this all the time. So just excited to see how people use it and to hear the feedback. It's something you want for fairly complex tasks. You don't probably want this for every task. The main quad decides the roles for the sub-quads. We don't have a regimented way to do this. It's context-specific. I wouldn't say there's one right way to do it. I think actually a lot of the magic of this comes out of this idea of uncorrelated context windows. It's less about the specific configuration of the agents, but it's something that people should experiment with.
SPEAKER_00Check at the sourceWell, you know, like I said before, plugins were fully built with Swarms. There's a bunch of other features since that were built in this way. So yeah, I think for anything where you see a single quad struggling, Swarms can help. It's an interesting tool to look at.
SPEAKER_00Check at the sourceThe model is improving so quickly that the ideas that worked with the old model might not work with the new model. The things that didn't work with the new model might work or with the old model might work with the new model. And it's weird because there's just not a lot of other technologies like this. So I just don't really have a lot of experience to draw on to figure out how I should approach this. And it's been this new skill that I've had to learn. In a way, it's like you just always have to bring this beginner mindset. Honestly, like I'm using the word humility a lot, but you always just have to bring this kind of intellectual humility because just all of these ideas that were bad before are now good and the inverse. I think that's honestly it. It's something I constantly have to remind myself about. And it's funny, back in the old world, when someone tries an idea again and we've tried it in the past and it didn't work, usually the feedback is like, why are you doing this again? Yeah, yeah. You should learn.
SPEAKER_00Check at the sourceYeah, that's right. That's right. And it's something like Microsoft. It's funny because it's like every 10 years it goes in and out of style. But yeah, now now it's I think the first time ever where it's actually not crazy to just try the same idea every few months because the model improves and it just works. And I actually see this with engineers on the team, like new people that are newer to the team, people that are newer to engineering sometimes do things in a better way than than I do. And I just have to like look at them and I have to learn and I have to adjust my expectations. You know, like an example of this is, you know, when we release features, sometimes I'll like screenshot myself using them on, you know, on X or on threads or whatever, just to kind of talk about it. But recently Tariq, our, you know, our DevRel guy, he actually codes a lot. He's amazing. And he just started automating this. So he's having like Cloud Code generate its own videos for its launches. And he just started doing this.
SPEAKER_00Check at the sourceThat's the challenge. Yeah, I think it's something that used to be a thing that we do as software engineers. It's becoming a thing that everyone is able to do. There was a moment, you know, like when I started coding, it was a very practical thing and it was a way to get things done. And at some point, I just fell in love with the art of coding and languages and kind of the tools themselves. And at some point, I kind of fell down this rabbit hole. I wrote a book about a programming language. TypeScript.
SPEAKER_00Check at the sourceYeah, yeah, yeah. That's right. It was funny, actually. There was this amazing moment for me in my little town in Japan. I went to the bookstore and I found that book translated in Japanese. No. In this tiny town. And that was just like the coolest moment. And then I actually realized I don't remember TypeScript at all because I was only writing Python for a couple of years at that point. Yeah. Yeah. And like at some point I started the first, the biggest TypeScript meetup in the world. That was in SF. And I got to meet kind of a lot of my heroes. There was like Chris Kowal, who wrote like general theory of reactivity. There was Ryan Dahl, the guy that made Node. One of the first times that I went really deep into this community and just the language itself and the tools themselves. And for something like TypeScript, there's this beauty in the type system because Heilsberg is just like, he's just brilliant. Like the idea of like conditional types and just like anything can be a literal type. And there's these very deep ideas that even the most hardcore functional languages do not have. Like even in something like Haskell, like it doesn't go this far. And Anders just took it and he pushed it much further than had been pushed. And, you know, like Joe Pamer and a bunch of other folks kind of explored a lot of these ideas and thought of this. And I think for them, it was also very practical, right? Because they had these large untyped JavaScript code bases. How do you gradually migrate it to something typed? And you have to come up with these very beautiful ideas to do this. For me, Scala was another kind of rabbit hole that I fell into and kind of like this functional programming world and Still, when I write code and when the model writes code, I always think in the types first. That's what matters is what is the type signature? That matters more than the code itself and getting that right. So there is this beauty to it. There's an art to it for sure. But in the end, it's a practical thing. And in the end, this is a thing that we use to build things. And, you know, it's a means. It's a means to an end. It's not an end to itself. I think one metaphor I have for kind of this moment in time that we're in is the printing press in, you know, like the 1400s or whatever. Because at that moment, it was actually quite similar, right? Like there was a group of scribes that, you know, knew how to write.
SPEAKER_00Check at the sourceYeah. Yeah. And at least in Europe, like you have to like a lord or a king or something had to had to employ you and then you have to go through, you know, years of training. And there was this class of scribes that knew how to write. They were employed by someone like this. Often the king themselves, like, or, you know, the queen was not literate. So it was this very, very niche skill. And it was like less than 1% of the population was literate in Europe, you know, back then. Yeah. And then the printing press came out. And what happened? So the cost of printed material went down something like 100x over the next, I think, 30 years, 50 years or something, the quantity of printed materials went up like 10,000x in the next 50, 100 years. This was the first effect. Literacy, it took a little while for it to catch up. So I think global literacy, it went up to something like 70%, but that took like another 200 years, 300 years. Because learning to read is just very hard. Learning to write is hard. It takes a lot of effort. It takes education system. It takes, you know, infrastructure to have paper and ink and the free time to do this instead of working on a farm. So it kind of it took early stage of industrialization to actually get there. But but I think this effect of making it so this thing that was locked away in ivory tower and now it's accessible to everyone. This is just, you know, like none of the things around us would exist today without this. Like if if we weren't literate, if the people that built, you know, this microphone weren't weren't literate, it would have just been very hard to have a modern economy. None of these things would exist. And I just kind of think about back then, if people had to predict what would happen when the printing press came out, no one would have predicted that the microphone would become a thing. So I just feel like this is the best analog for the moment that we're in right now.
SPEAKER_00Check at the sourceYeah, exactly. And if you think about what happened to the scribes, right, like they ceased to become scribes. But now there's a category of writers and authors like these people now exist. And the reason they exist is because the market for literature has expanded a ton.
SPEAKER_00Check at the sourceAnd the most exciting thing for me is it's just so impossible to say today what will happen after this happens and after this transition happens. Just, you know, the economy as we know it would not have existed without it. So what's next? Like what is the thing that we can't even predict today that will exist because anyone can do this?
SPEAKER_00Check at the sourceIt's hard to name individuals because honestly, this is just the strongest. These are the strongest people I've ever worked with in my career. There's all sorts of different archetypes. There's some people that are really amazing prototypers. So take something from zero to 0.5. Just, you know, figure out like what are some cool ideas? What is the technology and walk? There's other people that are amazing at finding product market fit. So kind of 0.5 to one or maybe zero to one. There's other people that span different disciplines. And I'm just seeing more and more of these people. Like I said, like people that span product engineering and infrastructure engineering or, you know, product and design or design and engineering. I think I'm just seeing a lot more of these of these hybrids.
SPEAKER_00Check at the sourceI think one thing I wasn't sure about is how big a problem is safety, to be totally honest. I joined Anthropic because, like I said, I read a lot of sci-fi and I know how bad this thing can go if it goes bad. It wasn't something I was sure about. But seeing it from the inside and then seeing how the new risks that have arisen in the last year, it just makes me much, much more worried about it. So I think it's it was kind of an important thing for me. Now it's just the most important thing for me is how do we make sure this thing goes well?
SPEAKER_00Check at the sourceOkay, so the stuff that's left behind is maybe very strong opinions about code style and languages and things like this. I can't wait to get past these endless language debates and framework debates and all this stuff. Because the model can just use whatever language and framework, and if you don't like it, it can just rewrite it for you. So it just doesn't matter anymore. I think something that still matters a lot today is it's being methodical and hypothesis driven. This matters both in product design in this world where everything is being disrupted and we need to figure out what to build next. And this is something everyone is thinking about. But it also matters for engineering day to day, you know, something like debugging. You just have to be very methodical about it. And the model can do this and it can help a lot. But I think still we're in this transition point where you still need to have the skill. I don't know if you're still going to need to have it in six months. Other skills that I think are more valuable are being curious and being open to doing things beyond your swim lane. So, you know, if you're working on engineering, but you really understand the business side, you can just build really awesome products. And I think the next, you know, billion dollar product, you know, like after Quadcode, whatever the next startup is that, you know, becomes the next trillion dollar startup. It might just be like one person that has some cool idea and their brain just is able to think across, you know, engineering and product and business or, you know, like design and finance and something else. Like it's people are going to become more and more multidiscipline and this will become more and more rewarded. So in some ways, I think this will be the year of the generalist. I think the other skill that's actually been rewarded a bit is having a short attention span. Yeah. It's, you know, like teenagers are using, you know, like TikTok and all this stuff. And I think in some ways it's kind of dangerous for society because, like, you want people that can think deeply and can contemplate ideas and aren't just moving on to the next idea very quick. But in some ways, I think this year is kind of the year that is going to reward. It's like the year of ADHD. Yeah. because the work for me has become jumping between clods. It's become managing clods. And so it's not so much about deep work. It's about how good am I about context switching and, you know, jumping across multiple different contexts very quickly.
SPEAKER_00Check at the sourceI've gone down a Xixin Liu rabbit hole. So he's the three-body problem guy, but he actually has like a lot of other really great books. I really love his short stories. He has a couple books of short stories. I'm a big fan. For people that are new to sci-fi and you want like a little bit like harder sci-fi, I really love Accelerando by Strauss. This is a book I would totally recommend. It's like essentially the product roadmap for the next 50 years. It starts with takeoff kind of starting to happen and kind of AI singularity. And then it ends up with like these kind of like group lobster consciousnesses orbiting Jupiter. And it's just like amazing. And the thing that I think it really captures is just the pace, this like quickening, quickening, quickening pace of how this feels. It really matches the feeling right now. And then on the technical side, I would strongly recommend functional programming in Scala. Even if language choice just doesn't matter as much anymore, I think there is this art to functional programming that just teaches you how to code better. And it'll just teach you how to think in types. If you read this book, I think what's really important is to do the exercises also. And I've gone through and I've done all of them probably like three times over. And it's just amazing. It really just like knocks this idea of functional types into your head. And it's just the thing you can't stop thinking about. Of course. Thank you so much. This was awesome. Yeah. Thanks, Gergay.
SPEAKER_00Check at the source
Every passage above is taken from this recording: The Pragmatic Engineer, Building Claude Code with Boris Cherny.