The PM Problem

I spent the first 12 years of my programming life working alone and being the only person responsible for the schedule. I used many of the methods employed by Project Managers for my own benefit. The last 12 years I have worked on much larger projects and exclusively in teams of developers. During this time I have seen many projects fall prey to the dreaded Project Manager, and I believe I have identified the problem.

Project Managers are ignorant.

The vast majority of PMs have no idea how long it should take to code any given feature. This is a vital piece of information that they need to make all of their pretty charts, so they get it from the only place they can get it -- from the programmers doing the work. Some of you can see the problem already. Programmers are not stupid. They have no incentive to estimate accurately. Rather, underestimating will result in a no-talent PM impuning their work, or, in some environments, them needing to work unpaid overtime.

The consequences of the PM are inevitable. Programmers overestimate. The time required to code a feature expands to fill the available time, and things are completed much more slowly. Project Managers destroy productivity despite their best efforts to improve it.

The Solution

If you observe a group of programmers in their native environment, it will soon become obvious that one of them is the Alpha Programmer. This is not the one identified by management, but is selected through a complex group behaviour that anthropologists have yet to study. This person has the knowledge that the Project Manager lacked -- they know how long it should take to code something. We need this Alpha Programmer to monitor productivity.

However, if we simply promote the Alpha, they become useless. We need them to monitor productivity while still programming. This requires some finesse. As a peer on the org chart, the Alpha is less likely to be critical of his peer's work if it does not affect him personally. Making it personal is easy enough.

By edict from management, the programmer's den should be strictly off limits to everyone else in the company. Furthermore, business communication should be strictly forbidden between all programmers and non-programmmers with the sole exception of the Alpha Programmer. This way, when someone asks how long it will take to do X, the Alpha will estimate, and the person doing the work will be measured using an expert opinion. Likewise, when the schedule is missed, the Alpha will have a personal incentive to find out why the programmer is not being productive. Chronic poor performers will become obvious, and the total productivity of the group will improve.