I’ve been making software for a few decades now, and worked on all sorts of projects – small, large, complex, simple, fun, and not-so-fun. One of the biggest problems with software is the amount of information a developer needs to keep in his head (I believe Dijkstra once wrote that software developers were unique in having to be able to understand, simultaneously, 7 levels of abstraction). The same is true for those who manage developers.

On a large project I was involved with recently, I noticed that the project management team was working really hard, but not making much progress. I looked at all the streams of activity, and I noticed that the project had lots of outstanding decisions. When will we do the training? Who will manage QA? What day will we have the management call? Which version of the API should we use?

It reminded me of an iPhone game I’d played for a bit – I think it was called “Air traffic control” – in which you have an airfield, and planes arrive on the screen; the job is to land the airplanes. As the game goes on, it throws more airplanes at you, and eventually you’re overwhelmed by the number of aircraft, they crash, and the game ends.

It’s mildly diverting, and a good way to while away the tube journey.

It occurred to me that our project management team wasn’t landing enough planes – and the more planes are circling the runway, the more likely it is they’ll crash. Most people I know can keep a handful of things in their brain at one time (there’s some scientific research to confirm this), and the whole “Getting things done” system is designed around this.

The issue with project management, of course, is dependencies. One pending decision can block 4 other decisions, and before you know it, you end up looking like that guy from Airplane! , trying to keep the whole thing spinning, and dedicating all your energy to stopping the planes from crashing into each other, rather than to landing the planes.

And this, of course, affects everyone. The developers find that they can’t work on something because we’re waiting for a decision. The number of items that aren’t “done” grows every day – and when a decision is made, updating all the dependent items grows. The project sponsor sees an ever-longer list of open topics, none of which make much progress, and eventually everyone forgets what they were about. Risks that could have been avoided with a small amount of effort earlier suddenly erupt into craziness.

So, project management job number one: land the plane.