Raw capture â raw/how-ive-run-major-projects.md
url: https://www.benkuhn.net/pjm/ date_fetched: 2026-07-05 backfilled: true
My few most productive individual weeks at Anthropic have all been âcrisis project management:â coordinating major, time-sensitive implementation or debugging efforts.
In a company like Anthropic, excellent project management is an extremely high-leverage skill, and not just during crises: our work has tons of moving parts with complex, non-obvious interdependencies and hard schedule constraints, which means organizing them is a huge job, and can save weeks of delays if done right. Although a lot of the examples here come from crisis projects, most of the principles here are also the way I try to run any project, just more-so.
I think excellent project management is also rarer than it needs to be. During the crisis projects I didnât feel like I was doing anything particularly impressive; mostly it felt like I was putting in a lot of work but doing things that felt relatively straightforward. On the other hand, I often see other people miss chances to do those things, maybe for lack of having seen a good playbook.
So hereâs an attempt to describe my playbook for when Iâm being intense about project management.
(Iâve described what I did as âcoordinatingâ above, but thatâs underselling it a bit; it mattered a lot for this playbook that I had enough technical context, and organizational trust, to autonomously make most prioritization decisions about the project. Sometimes we instead try to have the trusted decisionmakers not be highly involved in managing execution, and instead farm that out to a lower-context or less-trusted project manager to save the trusted decisionmaker time, but IMO this is usually a false economy for projects where itâs critical that they be executed well.)
For each of the crisis management projects I completely cleared my schedule to focus on them, and ended up spending 6+ hours a day organizing them.
This is a bit unintuitive because Iâm used to thinking of information processing as basically a free action. After all, youâre âjustâ moving info from place to place, not doing real work like coding, right? But if you add it all upârunning meetings, pinging for updates, digesting Slack threads, pinging for updates again, thinking about whatâs next, pinging for updates a third time, etc.âitâs surprisingly time-intensive.
Even more importantly than freeing up time, clearing my schedule made sure the project was the top idea in my mind. If I donât do that, itâs easy for me to let projects âgo on autopilot,â where I keep them running but donât proactively make time to think through things like whether we should change goals, add or drop priorities, or do other ânon-obviousâ things.
For non-crisis projects, itâs often not tenable (or the right prioritization) to spend 6+ hours a day project-managing; but itâs still the case that you can improve execution a lot if you focus and make them a top priority, e.g. by carving out dedicated time every day to check statuses, contemplate priorities, broadcast updates, and so on.
A specific tool that Iâve found critical for staying oriented and updating quickly is a detailed plan for victory, i.e., a list of steps, as concrete as possible, that end with the goal being achieved.
The plan is important because whether or not weâre achieving the plan is the best way to figure out how well or badly things are going. Knowing how well or badly things are going is important because it tells me when to start asking for more support, cutting scope, escalating problems, and otherwise sounding more alarms. One of the most common megaproject failure modes is to not freak out soon enough, and having a concrete plan is the best antidote.
As a both positive and negative example of this, during a recent sprint to release a new implementation of a model, we took a detailed accounting of all the work we thought we had to do to launch.
As the above example shows, having a plan canât completely save you if you underestimate how long all the steps in the plan will take. But it certainly helps! My sense is that the main things that would have helped even more in the above case were:
OODA stands for âobserve, orient, decide, actââin other words, the process by which you update your plans and behavior based on new information.
Most of the large projects Iâve worked on have been characterized by incomplete information:
In fact, Iâd make a stronger claim: usually getting complete information was the hard part of the project, and took up a substantial fraction of the overall critical-path timeline.
For example, letâs take a recent project to kick off a training run. The critical path probably looked something like:
Practically all of these steps are about information-processing, not writing code! Even the step where the compute partner debugged the problems on their side was itself constrained by information processing speed, since there were tens of people working on the debugging effort and coordinating / sharing info between them was difficult. Overall, the project timeline was strongly constrained by how quickly information could round-trip from our compute partnerâs large-scale debugging effort, through their tech lead, me, and Anthropicâs large-scale debugging effort.
This pattern generalizes to most projects Iâve been a part of, and as a result, one of my most productive project management habits is to try to run the fastest OODA loop that I can.
A few specific things that Iâve found help:
Step back and reorient frequently:Other than asking for updates, the main thing I spend time on was- reorientingâlooking at our list of priorities, asking myself whether they should still be the top priorities, then looking at what people were working on, and making sure those things were attacking the top priorities. I probably reviewed the projectâs priorities multiple times a day as well, although I often didnât make changes as a result.- (Note that it is possible to change what people are working on too often, since switching tasks is costly. Parallelizing work on the top few priorities, as mentioned above, helps with this, since if you decide that priority #3 is now #1, but there are 2 people working on each, then nobody has to switch tasks. The thing that kills you is when no oneis working on the new priority #1.)
(Note that it is possible to change what people are working on too often, since switching tasks is costly. Parallelizing work on the top few priorities, as mentioned above, helps with this, since if you decide that priority #3 is now #1, but there are 2 people working on each, then nobody has to switch tasks. The thing that kills you is when
Itâs not just enough for me personally to be running a fast OODA loopâin a large group, everyone needs to be autonomously making frequent, high-quality, local prioritization decisions, without needing a round-trip through me. To get there, they need to be ambiently aware of:
Iâve usually found that to create the right level of ambient awareness, I have to repeat the same things way more often than I intuitively expect. This is roughly the same âcommunicate uncomfortably muchâ principle above, but applied to broadcasts and not just 1:1 conversations with people.
For example, although the first team I managed at Anthropic started with a daily asynchronous standup, we found that synchronous meetings were much more effective for creating common knowledge and reorienting, so we moved to a twice-weekly synchronous standup, which probably qualified as âuncomfortably muchâ synchronous communication for Anthropic at the time.
Once a project gets over maybe 10 people, I canât track everything myself in enough detail to project-manage the entire thing myself. At this point, it becomes critical to delegate.
Here I mean delegating the project management, not just the execution (thatâs what Iâd be delegating to the first 10 people). This is the point where I need other people to help split up the work, monitor and communicate progress, escalate blockers, etc.
A few things I try to keep in mind when delegating project management:
One of my favorite things to make delegation easier is to keep goals simpleâif they can fit in a Slack message while still crisply describing a path to the desired end state, then the people working on the goal will be much more able to prioritize autonomously, and point their work at the real end goal rather than doing something that turns out to be useless for some reason they didnât think about.
âKeep goals simpleâ doesnât have to mean âdo lessââthe best way to keep goals simple is to find the latent structure that enables a clean recursive decomposition into subgoals. This often requires a deceptive amount of workâboth cognitive and hands-on-keyboardâto identify the right intermediate goals, but Iâve found that it pays off immensely by clarifying whatâs important to work on.
Some of my favorite memories of Anthropic are of helping out with these big projects. While they can be intense, itâs also really inspiring to see how our team comes together, and the feeling of being part of a big team of truly excellent people cooking something ambitious together can be really magical! So I try to enjoy the chaos :)
Hereâs the internal doc I share with folks on my team who are getting into being responsible for large projects.
So youâre the DRI of a project (or part of one). Concretely, what do you do to âbe DRIâ?
This doc is my suggested âstarter kitâ answer to that question. The habits and rituals described here arenât perfect for every situation, but theyâre lightweight and broadly helpful. I suggest you use them as a starting point for iteration: try them out, then adjust as necessary. This is an SL init; the RL is your job :)
The goal is to help you do your job as DRIâ
If things arenât going fast enough, you (the DRI) can notice and course-correct quickly
âPlay well with others:â- Observers can figure out where to go to follow along
âwithout adding too much overhead:
(Note: being DRI will still unavoidably add some overheadâe.g. youâll have to track what other people are doing, delegate work, unblock people, set and communicate goals, etc. The goal is specifically for the process/paperwork to be minimal.)
You should schedule at least one 30-minute weekly meeting with everyone working on the project.
The goal of this meeting is to (1) be a backstop for any coordination that needs to happen and didnât happen asynchronously; (2) be an efficient way to create common knowledge of goals, updates, etc.; (3) help you track whether things are going well.
[10m] Synchronous discussion of most important things not addressed during silent write
Signs that more meetings might help (e.g. a second weekly standup):- you have a very tight deadline and canât afford to lose time
Itâs really helpful for discoverability and wayfinding to have a single âmaster docâ with all the most important info about a project. As you loop more people in, they can read the doc to get up to speed. And anyone who thinks âI wonder how X is goingâ can stop by there to find out.
Create a doc for your workstream with:
A go/ link in the name (if a subproject, maybe use go/project/subproject)- â This makes it easier to find quickly (search is kinda rough)
A clear description of a concrete top level goaland how it fits into broader goals- â This is critical info for participants, so they can autonomously prioritize the most important things; and for observers, so that they know what outcome to expect.
Staffing:A list of people working on the project, your name as the DRI, and a link to the slack channel thatâs being used for discussion
Links:A short list of relevant links at the top (work trackers, the projectâs Slack channel, major design docs, etc.). If needed, a longer âdocs / see alsoâ section later links to relevant docs.- â Itâs really easy to lose track of relevant docs otherwise!
A roadmapsection with intermediate goals and target dates- â See the section on plans; these will help people understand what the overall shape of the project is expected to be.
A section for ârunning notesâ containing meeting notes from your weekly meetings (and any other ad-hoc meetings) and broadcast updates- â This really helps observers and new-joiners get up to speed!
I like maintaining a list of important open questions / uncertainties/ risksand updating it over time. This helps me stay focused on removing risk from the project as quickly as possible.
If itâs part of a larger project, your doc should be nested within the larger projectâs working doc.
If this ends up being too much for one doc, you can fork these out into sub-docs (esp. running notes and updates).
â Or noticing when you need to make a direction change because the intermediate goals donât seem good anymore.
You might feel some pressure to add false certainty or precision, but avoid this and be honest about your uncertainty instead. For a lot of research projects itâs hard to plan more than a couple weeks ahead. You can make the milestones fuzzier / more aspirational beyond that, or just drop them.- I often find it helpful to phrase milestones in probabilitis and distributions (e.g. âmy 90% confidence interval for this date is X-Yâ or âI think thereâs a 75% chance this technique worksâ)
The minimum viable version of this is a list of what people are working on in your working doc.- If you end up with a large set of tasks and a big backlog, maybe use a checklist and/or move to a subdoc.
Stack rank your work list.Itâs really important for people to understand priorities!
If thereâs more different people/TODOs, I suggest using some app to make a kanban board with âbacklogâ / âup nextâ / âin progressâ / âdoneâ columns.- This is probably most helpful for more deterministic/plannable projects where thereâs a clear backlog + set of future tasks, and a lot of things you need to remember to do.
If you have an external task tracker, link it in the wiki section of the working doc.
Link the working doc in the Slack channel bookmarks.
Cross-post notebook posts and experiment write-ups into the channel so observers donât have to follow tons of notebook channels.
If you need confidentiality, make a private channel.
Avoid centithreads.Most â„10-message Slack threads would be better as a ~5-minute Tuple.- (This is hard to do with people who are in tons and tons of meetings like execs. But you should try to do it for others.)
If you end up with a centithread, assume nobody will read it; post a summary back to the channel afterwards.
Bias towards fewer, larger, noisier channels. The right time to create a channel is when discussion is either not happening, or getting lost.- â Too many slack channels makes it harder to manage membership, decide where to put things, or find where discussion is happening.
Channel organization and membership matters. Invest in routing conversations to the right place and curating the channel âarchitecture.â
Whatâs coming up next
When writing these updates, optimize for signal to noise ratio.- Err towards concision
Leave out anything thatâs not actionableâyou donât need to be exhaustive
Post the update in your project Slack channel, and cross-post it to other relevant channels (e.g. a larger âmegaprojectâ channel) if necessary.- If your project is part of a larger megaproject, these updates might feed into something broader like a weekly meeting of DRIs or an aggregated status update.
Every so often, step back and ask âhow could the last X weeks have gone better?â- Frequency depends on how much there is going onâevery 2 weeks is good if thereâs a lot, maybe every 4-8 weeks for smaller projects
Suggested meeting format- Friday afternoon
Thanks to Kelley Rivoire for many thoughtful comments on a draft!
this was really insightful! iâm building a startup rn and i hope to incorporate your learnings as we scale :)
Fascinating and pragmatic dive into how to run complex things. Thank you for sharing
Having a plan, making weekly updates, clear goals helps indeed. What also helps is splitting work into granular pieces with clearly achieveable results in small amount of time(like 1 day)
Stoke level is HIGH. What an incredibly practical and potent primer on project management with teams. Will be incorporating insights and reflecting a lot. Thanks especially for permissioning âcommunicating uncomfortably muchââan intuition Iâve quashed in the past as âtoo needfulâ or something. And yet, I think I was elevating received/conventional process and also not wanting to look bad, when in actuality the conventional process was insufficient. Grateful, Ben!
Iâd like to hear your perspective on how much of what you shared here changes when you do Program management (vs Project). And your views on managing Programs. Thanks for sharing; great tips!
What do you understand the differences between project and program to be?
Thank you for sharing.
Great read and learnt a lot. Thank you.
This is ace but can you pl expand acronyms and define terms where these arenât common knowledge (eg silent write?)
I have never heard the term OODA loop, but it clearly makes sense. You would rather have OODA than OOPS when managing your projects. Thanks for an insightful article.
Insanely useful
Great insights on project management! Your emphasis on detailed planning and overcommunication resonates with my experience. The OODA loop concept is particularly useful for fast-paced environments. Thanks for sharing these practical tips!
Thanks for sharing this, the insight is valuable to me as a software and devops engineer who would like to be a Technical Product Manager some day.
What is a DRI? (I searched the page and didnât see a direct definition)
Directly Responsible Individual, as far as I can surmise
yes this is correct. used in âbig techâ under this acronym
Is the DRI doc usually a markdown file? or do you prefer another medium? Google Doc? Microsoft docx file?