How I've run major projects

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.
在诸如Anthropic的公司中,出色的项目管理是一项非常高杠杆的技能,而不仅仅是在危机期间:我们的工作具有大量的活动部件,具有复杂,非显而易见的相互依存关系和艰难的时间表约束,这意味着组织它们是一项巨大的工作,并且可以节省数周的延误。尽管这里的许多例子都来自危机项目,但这里的大多数原则也是我尝试运行任何项目的方式。

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.)
(我已经将我所做的工作描述为上面的“协调”,但这是有点说明的;对于本剧本而言,我拥有足够的技术背景和组织信任,可以自主做出有关该项目的最优先决定的最优先决定。有时我们会试图使可信赖的决策者高度参与较低的计划,而不是在管理执行过程中,而不是在努力管理的努力,而不是稳定的,而不是稳定的,则可以遵守该项目的范围。通常,对于要执行良好的项目至关重要的项目,经济通常是错误的。)

Focus 重点

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.
对于每个危机管理项目,我完全清除了我的时间表,以专注于它们,最终每天花6个小时以上的时间组织它们。

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.
对于非危机项目,每天花费6个小时以上的项目管理通常不可用(或正确的优先级);但是,如果您专注并将其作为首要任务,例如,每天都要划出专门的时间来检查状态,考虑优先级,广播更新等,那么您仍然可以经常提高执行力。

Maintain a detailed plan for victory维持胜利的详细计划

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:
如上面的示例所示,如果您低估了计划中的所有步骤需要多长时间,就无法完全保存您。但这肯定有帮助!我的感觉是,在上述情况下,主要有所帮助的主要因素是:

Run a fast OODA loop运行快速的Ooda循环

OODA stands for “observe, orient, decide, act”—in other words, the process by which you update your plans and behavior based on new information.
Ooda代表“观察,东方决定,行动” - 换句话说,您 根据新信息更新计划和行为的 过程。

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:
例如,让我们采取一个最近的项目开始训练。关键的道路可能看起来像:

  1. Chips for the training run are delivered
    培训运行的筹码已交付
  2. We run some tests 我们进行了一些测试
  3. We discover one aspect of performance is unexpectedly poor
    我们发现表演的一个方面出乎意料地糟糕
  4. We escalate the problem with our compute partner
    我们通过计算合作伙伴升级了问题
  5. Compute partner staffs a large debugging effort
    计算合作伙伴员工大量的调试工作
  6. We realize we had given our compute partner an outdated benchmark that is causing them to target the wrong improvements
    我们意识到我们已经为我们的计算合作伙伴提供了过时的基准,这导致他们针对错误的改进
  7. Compute partner switches benchmark and prioritizes different improvements
    计算合作伙伴切换基准并优先考虑不同的改进
  8. We share our benchmarks with compute partner so they can run the exact same code as us
    我们与计算合作伙伴共享基准,以便他们可以运行与我们完全相同的代码
  9. Compute partner rolls out improvements
    计算合作伙伴进行改进
  10. We test the improvements 我们测试改进
  11. Performance is still poor and we tell them that
    表现仍然很差,我们告诉他们
  12. Repeat steps 8-10 until eventually it’s good enough
    重复步骤8-10,直到最终足够好

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.
实际上,所有这些步骤都是关于信息处理的,而不是编写代码!即使是计算合作伙伴在他们身边进行调试的步骤本身也受到信息处理速度的限制,因为很难进行调试工作和协调 /共享信息,因此很难。总体而言,该项目时间表受到了如何通过我们的Compute合作伙伴的大规模调试工作来往返的信息,通过他们的技术负责人,我和Anthropic的大规模调试工作。

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.
这种模式概括了我参与的大多数项目,结果,我最有效的项目管理习惯之一就是尝试运行我可以使用的最快的OODA环路。

A few specific things that I’ve found help:
我发现的一些具体事项:

Overcommunicate 过度通信

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:
对于我个人而言,运行快速的Ooda循环不足以让 自主做出频繁,高质量的 本地 优先级决策,而无需通过我进行往返。要到达那里,他们需要周围意识到:

  1. what else is going on around them, so they can coordinate and update on new info quickly (“oh, we’re planning to kick off the next derisking run in three days, so I have to have my new RL environment ready and tested by then”)
    周围还有什么事,因此他们可以快速协调和更新新信息(“哦,我们打算在三天内开始下一个derisking跑,所以我必须准备好新的RL环境并进行测试”))
  2. how their goal fits into the overall project, so they can make correct decisions about the details of their approach (“we’re trying to scale up as much as possible right now, so this direction isn’t valuable to pursue since it could never provide the scale of data we need”)
    他们的目标如何适合整个项目,以便他们可以正确决定其方法的细节(“我们正在尝试尽可能多地扩展扩展,因此该方向不可能追求,因为它永远无法提供我们需要的数据规模”)))

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.
我通常发现,要创造正确的环境意识,我必须比直觉上预期的要经常重复相同的方式。上面的原则大致相同,“传达不舒服的原则”,但适用于广播,而不仅仅是与人的1:1对话。

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.
例如,尽管我在众人界的一线队始于每日异步的站立式站立,但我们发现同步会议对于建立常识和重新定位的同步会议更为有效,因此我们每周两次搬到了两次同步的站立式站立上,这可能是“不舒服地相同”的同步交流,以期与人类的同步交流。

Break off subprojects 打破子标题

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.
一旦一个项目越过了10人,我就无法详细地跟踪一切,无法自己计划整个过程。在这一点上,委派变得至关重要。

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.
“保持目标简单”并不一定意味着“少做” - 保持目标简单的最佳方法是 找到可以将干净的递归分解为子目标的潜在结构 。这通常需要欺骗性的工作(包括认知和动手键盘)来确定正确的中间目标,但是我发现它通过澄清工作重要的事情而获得了极大的回报。

Have fun 玩得开心

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”?
因此,您是一个项目(或一个项目的一部分)的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:)
该文档是我建议的“入门套件”的答案。这里描述的习惯和仪式并不适合每种情况,但是它们轻巧且广泛帮助。我建议您将它们用作迭代的起点:尝试一下,然后根据需要进行调整。这是一个初始化; RL是您的工作:)

Goals of this playbook 本剧本的目标

The goal is to help you do your job as DRI—
目的是帮助您作为DRI工作 -

—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.)
(注意: DRI 仍然不可避免地会添加一些开销 - EG您必须跟踪其他人在做什么,委派工作,解冻人员,设定和传达目标等。目标是专门用于最小化的 过程/文书工作 。)

Weekly meeting 每周会议

You should schedule at least one 30-minute weekly meeting with everyone working on the project.
您应该至少安排一次每周30分钟的会议,与该项目的每个人进行。

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.
这次会议的目的是(1)成为任何需要进行且没有异步发生的协调的后备; (2)是创建目标,更新等 共同知识 的有效方法; (3)帮助您跟踪情况是否顺利。

Landing page / working doc着陆页 /工作文档

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.
对于可发现性和寻路的人确实有帮助,拥有一个“主文档”,其中包含有关项目的所有最重要信息。当您循环更多的人时,他们可以阅读DOC以迅速发展。任何认为“我想知道X的情况”的人都可以在那里停下来找出答案。

Create a doc for your workstream with:
为您的工作流创建一个文档:

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).
如果最终对于一个文档来说太多了,则可以将其分配到子销售中(尤其是运行的笔记和更新)。

Plan / roadmap / milestones计划 /路线图 /里程碑

Who’s working on what 谁在研究什么

Slack norms 松懈的规范

Weekly broadcast updates 每周广播更新

Retrospectives 回顾

Thanks to Kelley Rivoire for many thoughtful comments on a draft!
感谢Kelley Rivoire对选秀的许多深思熟虑的评论!