Intro0:00
Today I'm going to be talking about agents, code bases, and teams—essentially, how do you get your team to actually ship together with agents. And like, I think for the longest time, the one thing that's bugged me is there's so much content about, you know, how do you set up your own code base to work well with agents.
You know, like, what skills do you add? You know, this skill's better, that setup's better. But it all seems to break the moment you actually try to use it with your team in your actual production setup. And like, for individual repos, it kind of makes sense.
But the moment you actually try to use it with your own team setup, it tends to break. And like, I think over the past few months I've figured out how to make it work with a team of folks.
So like, I was leading a team of like 10 people over the last few months, and I think we found a good solution, and I want to share that with you guys. But before we get into that, I just want to recap, like, you know, what's been the journey that we've been on.
Right? So we started, you know, coding agents took off, and a few people got really, really good leverage. Right? And I think all of us were kind of asking, like, is this AGI? You know, like, did we achieve it?
Adoption journey1:05
Then, you know, companies took that and said, well, if one person can do so well, let's just get everyone and let's mandate it and like, token max. Right? And that was clearly a galaxy brain moment. Right? And then the inevitable happened.
You know, AI slop shipped, and there's a bunch of sev-tos. I'm not going to name which companies. But you know, essentially you saw people kind of retracting. They said, I don't think this is the best option here. And eventually model prices climbed.
We saw, you know, people figured out that tokens have to be paid for. Like, you just can't token max your way through life. And budgets got bolted on. And you know, essentially money is being lit on fire, and the money has to come from somewhere.
So given this journey, I want to actually, like, this is the enterprise journey. Right? And what does that do for a single developer? And I think this is an important framing because it really talks about people as a part of a team.
Two axes2:15
Right? And I want to look at it from, like, two axes. So there is the fear axis where people lie on the spectrum. Right? They're coming, it's like, is it coming for my job? Like, am I going to be out of a job?
Or is it like a really handy tool? And they're really, you know, they're not that fearful. Versus like, the confidence they have in how much they're executing it. So they can either use it a lot, or they can use it, you know, not that much because they don't really know how to use it that well.
Now, when we started, like, people said, oh, you know, what is this? Is this the end? Like, am I needed? And fear was pretty high. Utilization was pretty low because people didn't really know how to use it. And then when a few people got outsized leverage, you saw, you know, early adopters, basically people saw them, and people said, okay, well, it looks like I'm still kind of needed if I figure out how to use this thing, so let me actually try using it.
Right? And then we saw, you know, mandates and token maxing, and people kind of got a little skeptical. Like, confidence stayed the same, but people tried to use it a lot more. Right? And then we realized, ah, you know, there's a bunch of slop shipping, there's sev-tos, and I, you know, it's like, I'm not really that scared because, you know, it just ships slop.
Like, I'm going to still be needed. And they don't even know how to use it that well because, like, now the confidence is cratered. Right? And so you've got to figure out how to get people from all the way, wherever they are on the spectrum, to where they're not fearful and they're actually using it a whole lot more.
And this is the framing that I want to, like, I want everyone to keep in mind as they're actually trying to get a team to adopt good, like, AI usage and good AI patterns. Right? And so the question is, you know, what does it take?
Step one, create a CLAUDE.md. Step two, add some skills. Is that it? Do we, like, solve it? You know, I think we all know. Like, you guys are here because, like, clearly, life's not that simple. And like, stuff's messy.
Simple setups3:52
Right? And I think a few people might ask, you know, why doesn't this work? Like, isn't that what, like, everyone does? And I want to, like, just talk about a few things you might see that actually indicate that, yeah, like, this isn't working.
Symptoms4:22
So the first thing is, if you're babysitting your agents, it's not theright setup. Right? And you've got to realize that. If you're seeing people in your team babysitting their agents, something's wrong. You know, one of the things that I heard a lot was, you know, insert whatever latest model there is being really dumb today.
The model didn't change. Right? The harness may have changed underneath. But if it's really, like, that's acceptable to, like, small changes in the harness, clearly your own code base isn't set up well.
It's silently burning context and money. Like, you don't realize it. You know, you go, you blow through like 500k context, you might go to like 750k, a million, and hit auto compact, even though you're not doing, like, a really complicated task.
Clearly something's wrong. You know, if you have long-ass sessions needing constant intervention, there's still something that's wrong. If you're getting a constant slop factory, you obviously know, like, things are not good. And if you're asking, if you find yourself asking, you know, how are these other companies shipping so fast?
Like, how are model companies releasing models at like a month and a half, two month cadence? Clearly they have something which we don't. Right? And so I guess everyone's kind of thinking, so, you know, how do we solve this correctly?
Leadership5:40
And so I think the first thing to realize is we need to frame it correctly. Right? It isn't really an IC's job. It's a job for leadership. It's a job for the company. Right? Making engineers work well with their agents is truly the most impactful thing you could do as an organization because that's going to enable your engineers to ship faster and with confidence and avoid, you know, a lot of incidents.
If we live in this figure it out for yourself paradigm, like, people are going to get outsized productivity, some people aren't, and like, the people who are generating like 10 PRs a day are going to, like, look like, you know, gods compared to people who are shipping like one to two.
And the one to two PR people are actually going to get left with the review burden. And that's actually a really, really bad thing because now not only can they not ship, they're going to actually see bad code and then curse the agents and hence not be able to get onto the let's ship 10 PRs.
Right? And so it's really important to do this. If it's a problem facing the team, there's a few things you can do. Right? The most impactful things that you can do to set up your code base to, like, make it work well require team buy-in.
You can't just, like, if you want to change the way your code base is organized, you can't do that as an IC. Right? And if you're treated as a leadership problem, then you can do things like this. So the other thing this needs is harness engineering.
Right? Per code base. And I think there's a lot of content on this, so I just want to talk about a few principles. But I don't want to, like, make this talk about that because there's a lot of smart people.
Harness7:05
You're at AI engineer. Like, this conference is all about people telling you how to best set up, you know, your code base to make things function well. So I don't want to talk too much about this, but there's a few key principles here.
Smart prompt injection is one of them. You want to treat your entire code base as one way so that you're able to, like, smartly prompt inject the model with just theright context at just theright time without you needing to do it.
And that's the framing. You want to be able to say, okay, I've set it off on this task. It has like a map of how to find the things it needs at the time it needs it. If it's looking at some code and that code has, let's say, some documentation, the documentation needs to live in the comments.
So if it ever grept into that code, it reads the comment, goes to that file, finds all the information about it. That's just one example. The second is close the loop. Right? You've got to make a self-healing system because slop is inevitable.
There is going to be some slop that's going to seep in. But you need to have a pipeline and a way to close the loop, to remove the slop, to detect it, and to be able to, like, self-heal the system.
And then you need to iterate continuously. And I can't emphasize this enough. Like, you can't assume that you do this for a month and you're done. Like, things are going to change constantly underneath. So you need to keep this as one of the things that you have to do as an organization.
And the third most important thing is treat it like a human problem, guys. Like, this isn't, it's not, you know, oh, it's this tool, like, people will figure it out. Let's just mandate our way through life. Like, that's just not going to work.
So treat it like a human problem. Fear is real. Human emotions are real. We should recognize it. So, you know, enough gyan or as, like, it's more like the Hindi way to say, like, you know, enough prof, like, I'm kind of giving you sermons.
But like, how do you really do this? Right? Like, these are our principles. What's the real playbook? So here's what we did, and here's, like, I'm not going to over, like, emphasize on this is the exact way to do it, but this is, like, roughly how we did it, and you can take from it what you choose.
Playbook8:59
The first thing is do the basics. Right? You've got to do themright. Progressive disclosure, I can't emphasize this enough, is really, really powerful. Right? Find your best ICs and find how they're making the code base work for them.
Take those practices and pass them or go ahead. People can't live in their own practices. And this is really hard for engineers to do. It's basically accepting that my setup isn't perfect. And like, engineers don't like to hear that.
But you've got to figure out a way to find those best practices and ship them across, make sure that that's kind of a shared setup. The second thing we did was there's one high value skill that we invested in.
In our case, it was this thing called ship it. What it did was the moment you're done with your code, it takes care of everything from code done to PR ready for review, which means you've got to open a PR, figure out your opinions, handle all the comments, you know, handle all the PR descriptions, the merge comments, everything.
Right? It handles CI failures. It basically runs through these loops. And what this meant was often the skill was running for over an hour. And that scared people, but once you actually figure out, once they saw the value, they get invested.
Right? Because it's one skill which tells them, okay, this AI thing can actually work for me. I don't need to constantly babysit it. I can trust it. The third thing, and really important, is to close the loop. Right?
So we wired issues and boards into the repo. Like, we added CI/CD, we added agentic reviews. We have, like, a code gardener that actually goes back and looks through a whole bunch of, like, every night it'll run and look at the code and check if something, like, not organized correctly.
What does correct organization mean will depend on your code base.
Get people invested. And I can't emphasize this enough. You have to win over the skeptics. It's really easy to say, like, the skeptic is just someone who's scared. It's really hard to get them to buy in. But if you can get them to buy in, you know you're doing somethingright.
You have to get them to be able to edit and play with the shared setup because that's the true way you know that they're actually invested. Right? And this is where you've got to ensure you're iterating constantly. If people are, like, and this is the hardest thing for engineers, again, because you're basically saying, I'm never going to, like, get to perfection in my setup.
But you've got to be okay with that. You have to do it, and you have to treat it like, you know, X percent of your IC time is probably going to be spent on iterating on this thing, which is not going to lead to, like, meaningful PRs, like, upfront.
But it's useful, and it's worth it. And, you know, I don't want to say this is perfect. Right? Like, we faced a ton of issues while doing this. And I'm just going to walk you through some of them.
Problems11:49
But it's an iteration loop. So you've got to treat it like a piece of feedback. So what are the problems we hit? Right? There are too many issues. Like, when we started, like, we blew up to like 400, 500 issues without, like, you know, just, I think, within like a couple of weeks, which is a crazy number for, like, a repo.
And then, you know, there's so many, like, different agents all trying to create issues because they've not been wired correctly. There's a lack of agreement. People, you know, as soon as people saw, like, oh, this isn't working perfectly or the way I expected it, it's super easy for them to say, you know what, I'm just going to go back to babysitting my agent.
You don't want that. You want to actually take their feedback and put it back into the skill and improve the skill.
Agents are taking too long. This is actually one of those expectation-setting things. It's good if agents take too long. That means you can actually go off and do other things and you have confidence that they're doing theright thing.
At the end of the day, like, the moment we hit this reasoning paradigm, the longer the agent, like, thought, the better its output. You can treat it like a, it's almost like a similar mindset for your entire code base and for your skills.
There's going to be merge hell. And, like, we just have to deal with it. We have to figure out a way to deal with this. There is going to be slop when you're going to write experiments. Treat it like its own thing.
Right? What we said was, okay, people are generating this code, but it's not relevant. It's not going to be shipped. It's just a prototype. Treat it like one. Get it to opt out of all the rigorous other standards you've got across your code base.
And realize people vary on the spectrum. Right? And depending on the day, depending on, like, what they're going through, they're going to vary on the spectrum. You have to be able to talk to them and figure out, hey, okay, why are you facing this?
Like, is it, if the model changed, the hardness changed again, you need to go revisit something. Figure that out. And I think the biggest, like, the easiest way to say this is instead of saying, like, the model is so dumb, like, we have to ask, how can I make it smarter?
Or how can I edit, like, and not, this is why I've, like, crossed out the my. It's not a personal setup. It's the shared setup that you have to invest in. And it's a mindset. Right? You have to go full send.
Full send13:55
And, like, I want to end you, I want to end with this. Like, I learned skiing, like, a couple years back. And the, like, the hardest thing for me was you actually have to commit to it. If you're pizza breaking, you're going to crash.
Like, no matter what. You have to commit to the speed in order to actually get and feel like, okay, that's how I can turn and that's how I can truly ski. And so I'm going to leave you with this.
Like, just be okay with, be okay with failing. You have to, you know, go full send and be okay with falling. It's fine. The point is to be able to recover from that, and that'll allow you to truly feel the AGI.
Yeah. Well, that's me, and I'm happy to take any questions.
Yeah.
Q&A14:41
Sorry, you said 2000 last year.
So I'm going to repeat the question for the recording. Strategies that you've found best for progressive disclosure. So I think a couple things. Right? The first thing is even in your skill MD files, don't overload it. Like, we've kind of set a hard limit for, like, 100 lines in your skill MD because your skill is really a folder.
So that's step one. Make sure, and I think I spoke about this during the talk, but when you have, like, some code that requires, like, a runbook, make sure the runbook is reflected in the comments so that if a code, if somehow the code, like, the agent figures its way into, like, grepping into the code base and find that file, it knows I need to go look at this for, like, all the description of how this is relevant.
Right? You have to organize. And I think this is why I talk about harness engineering because your entire code base can be set up to encourage progressive disclosure. Don't overload your CLAUDE.md or your agents MD file into, like, one big thing.
You want to make sure that, like, it's a thin index that can point through theright files, and that's what the agent gets in its, like, first prompt because that's what gets loaded when it starts to work. So these are, like, some really powerful strategies that, and the way you know this is working is when you give it a prompt, when you give it the first prompt, see what it's doing.
Is it grepping, or does it know where to go? How much context is it burning when it, like, immediately, so is it, like, I think, like, 20, 25k tokens get taken anyway, but, like, how much more is getting added?
If you're coming to, like, 40k, 50k, like, something's wrong. That's not really progressive disclosure. So you have to figure out these boundaries and then, like, based on this, it's an iteration cycle.
Allright. Well, if there aren't any other questions, feel free to find me. Happy to talk about harness engineering in general or, like, anything else. But yeah, thank you for listening.





