Automatic Project Management: A Manifesto

For the last couple of years, my professional work has placed me in the role of "engineering lead" on teams of 3 to 6 people. A lot of my responsibilities fall under the umbrella of what you might call "project management": making sure that we're working on the highest-priority tasks, that requirements are clearly communicated, that everyone has something to do, that no one's work is blocked, that progress is visible, and that forecasted completion dates align with deadlines.

It sounds like a lot of work. But here's the secret:

Project management can be almost completely automated

I had the good fortune to spend several years of my early career at Pivotal Software. Pivotal is probably best known, now, for its project management software Pivotal Tracker.1 Tracker automated project management. There were no project managers at Pivotal. Project management, like adding columns of numbers or carrying water from a well, simply wasn't viewed as a job for humans living in a modern society. We have machines to do that for us now.

We didn't completely eliminate project management work, but we did concentrate it enough that it definitely wasn't a full-time or even part-time job. Project management activities were distributed throughout the team and took no more than a few minutes each day.

...and no, I'm not talking about "AI"

It's inevitable, in 2024, that when people hear statements like "we automated this work that humans used to do!" they immediately think of LLMs. If that was what you thought, please unthink it as thoroughly as you can. I do not think there is any place for that kind of AI in project management.2

When I talk about automation I'm only partly talking about software. The automation of project management extends into people-space and includes team norms and habits. Those norms and habits are in turn defined by:

What this document is about

In this document, I want to describe how Pivotal automated software project management. In accordance with my expansive definition of "automation" above, I'll have to describe the roles people played on the team and how those roles interacted. The hope is that someone else could use this document to reduce the effort their own team spends on project management activities.

Project Management != Product Management

I want to make a very clear distinction between "project managment" and "product management." Product management is valuable, difficult, human work. It involves:

Project management, by contrast, is stuff like:

Product management is all about what. Project management is all about how.

Team roles

When I talk about a "team" I mean a small group of people responsible for building and maintaining a software product. Each person belongs to a single team — assigning fractional people to teams is a recipe for madness. A team comprises the following roles:

Product Manager

A team has exactly one product manager.

Designer

A team typically has one designer, though very complicated products might have more.

Engineer

A team typically has between 2 and 6 engineers. If you add more than that, communication overhead starts to outweigh the productivity gains of each new engineer. If your product is too big and complicated for 6 engineers, it should be architected so that separate teams can work independently on different areas ("verticals").4

Engineering Lead

Does everything that an engineer does, plus:

Note on testing

Where is QA in all of this? At Pivotal, we had some QA testers, but not a lot. Engineers wrote comprehensive automated tests for all production code, so there wasn't much room for "traditional" QA (the kind that follows a predetermined test plan.)

I do think there is room in this process for exploratory testing to add a lot of value. However, my goal in this document is not to speculate on what an ideal software development process might look like, but to focus on what we actually did at Pivotal. Accordingly, I won't be describing how exploratory testing could fit into the process — but you should consider it a potentially fruitful area for future research and experimentation.

Note on people managers

Product managers don't make hiring/firing decisions, and engineers don't report to PMs. I call the people with hiring/firing authority "people managers." At Pivotal, engineers' people managers were also engineers who spent about 20% of their time on management stuff. The other 80% of the time, they worked on a project backlog like every other engineer. An engineer's manager was typically not on the same team as them.

Your company probably works differently from this. People managers at a typical software company often do a combination of product management, project management, issue triaging / firefighting, and facilitation. They also spend much of their time in low-value meetings. They usually don't write much production code.

The details of how you do people management aren't crucial, but note that if you follow the process I've described here, people managers can do a lot less:

Note on sales, marketing, technical writers, lawyers, translators, etc.

Ideally (I think), a team would have all the roles needed to build a successful product. At some point, as you think about this more holistically, it turns into "all the roles needed to build a successful company." I hear it's possible to run teams almost as independent startups, but that's not what Pivotal did. See Matt K. Parker's book A Radical Enterprise if you're curious to learn more about how this can work.

Artifacts

Backlog

The backlog is an ordered TODO list. At Pivotal, we called the things in the backlog "stories," but here I'll use the more common term "issues."

Pivotal Tracker recognizes three types of issues:

These are described below.

Features

Bugs

Chores

Estimates

Some teams like to estimate the amount of work required to complete each issue. This isn't actually necessary to get good forecasts of delivery dates, but there are side benefits to the process of estimating. One benefit is that the act of estimating forces the team to think through what will be involved in implementing the issue and discuss different implementation paths. The activity of estimation can lead the team to clarify the requirements of a feature. It often leads to the discovery of risks and edge cases, as well as better implementation paths.

To avoid

Icebox

Pivotal Tracker projects have an "icebox" section for issues that the team doesn't want to forget about but also doesn't want to do right now. I'm not totally convinced that this was a good idea. In my experience, iceboxes just tend to grow and grow; it's very rare that an issue gets pulled out and worked on. Usually the impetus for pulling it out is a feature request or bug report that could have simply generated a new issue if there hadn't been one in the icebox already.

Instead of having an icebox, I prefer to delete issues that the team isn't planning to do in the foreseeable future. Still, every team I've been on has had an icebox full of issues that are years old, so it seems that most people prefer to keep old issues around. In any case, an overflowing icebox is preferable to a cluttered backlog. If you don't like throwing stuff out, better get an icebox.

Activities

Daily standup (15 minutes)

Weekly pre-IPM (1 hour)

In this meeting, the engineering lead and PM go over the backlog together and make sure that:

"Priority" is a loaded term. When I say "priority," I simply mean "sequence." The priority of an item determines the order in which it will be worked on relative to other items. Urgency, importance, dependency, cost, and risk are all factors that go into determining priority. In general:

The PM has the final say in determining the priority of bugs and features. The engineering lead can intersperse chores as necessary to keep the development process running smoothly.

Weekly IPM (1 hour)

IPM (iteration planning meeting) involves the PM, designer, and engineers. In this meeting, the team gathers around the backlog and discusses the next week or so of upcoming work. The engineers make sure they understand what needs to be done; the answers to any questions they have are recorded in the relevant issue.

During the IPM, engineers also estimate the upcoming work.

Weekly Retrospective (1 hour)

Daily Engineering Work (37 hours per week)

When engineers aren't in meetings, they're writing code. The workflow goes like this:

This workflow implies that no engineer is ever idle, unless the backlog is empty.

As the engineers write code, the PM is doing "acceptance" on the delivered features. This means running through the basic functionality in the staging environment, and making sure the feature works as intended. If the PM finds a problem, they mark the issue "rejected" and it goes back to the top of the backlog. Otherwise, they mark the issue "accepted," which is the final state.

When the product manager deems the software ready for release, the code from the staging environment is promoted to production.

Work item definition

Velocity

Estimation

Forecasting

Can you use just part of this process?

TODO

Rename IPM and pre-IPM. Ideas:


Footnotes

  1. (Pet peeve: the correct abbreviation of Pivotal Tracker is Tracker. I hear people calling it "Pivotal" a lot, which makes no sense — Pivotal is just the company that made Tracker.)

  2. LLMs are machines that spout a pastiche of platitudes mixed with random unsubstantiated nonsense. The best they can do is trick you into believing that useful, novel work has been accomplished, when in fact they are either regurgitating tired old ideas, or concocting hallucinatory drivel. The speculation that there is some useful middle ground between halluciation and regurgitation, which LLMs could reach if only they had more training data or different hyperparameters, is pure pseudoscience.

  3. For example, Slack enforces chronological ordering of messages in channels, and lets you group related messages into chronologically-ordered threads. Pivotal Tracker enforces a single, ordered backlog of work per project.

  4. The constraint that teams should be mostly independent advises against splitting a project into frontend and backend teams. Each team should be responsible for a "vertical slice" of the product — that is, a slice that includes all the technological layers.