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.