I often wonder about what my life would be like if I continued to work as a developer for large companies for the rest of my life.  I can see two possible paths: 

1)  Stay Programmer.

2)  Become Manager.

This is not a new dilemma.  I'm sure people have faced it before with jobs in various fields other than software development.  But it takes on a vital air when discussed among programmers and/or managers because the two are so different, and yet often one is promoted into the other.

Programmers* are very similar animals.  They are all usually less than outgoing, interested in solving curious problems, and inclined to focus on one thing to the point where everything else becomes a dull background roar. 

Managers are outgoing people.  They have to be if they are any good at their craft, which is the sole act of dealing with and coordinating people.  They enjoy nothing more than working with people, talking to people, and thinking about what to do with people and their time.  They focus on a wide variety of tasks and they need to be able to context switch quickly.

Now you may think that I am about to start slagging managers as useless and talentless individuals.  And some are.  But a good manager is an extremely useful thing.  He solves logistical problems, and aids the programmers with whatever is holding them up.  An enabler who helps people get shit done, with a minimum of intrusion otherwise.

Nine times out of ten, programmers make rotten managers.  They hate talking to people, they hate meetings longer than 10 minutes, and most of all, they hate to stop programming, which is essentially what you must do when you become a manager.  Once in a while you will see an excellent manager promoted from a programmer who truly understands his employees, and is an absolute joy to work for with a laissez-faire management style and a no-bullshit attitude.  These are gems that must be coveted beyond imagining:  if you work for a manager like this, keep working there.  And make sure he doesn't get fired!

This is mostly just an unstructured rant about how annoyed I am at the preponderance of shitty managers in software development today.  And it is a difficult problem to fix:  while most promoted from programmers suck, at least they are in touch with the problems programmers have.  Nothing is worse than some business-school idiot with no programming experience being tapped to lead a dev team. 

So what is the answer?  I would begin by offering MAJOR salary increases for programmers becoming managers, and still allow them to program as they see fit, and delegate some managerial duties to an assistant as possible.  This will keep them focused, interested, and ready to lead without boring them.  I like this model, and if I ever have to become a manager (it is sometimes unavoidable if you wish to keep working at a particular company), it will definitely be my goal to set up my reign in this manner. 





*  When I use the word programmer, I mean a real programmer.  Not someone who is doing it because they thought a CS degree was a ticket to instant free wealth.  Someone who would be programming even if it were a completely unpopular social stigma akin to having herpes, and if it paid nothing at all, and in fact cost one money.  The people who understand and love their profession, which is writing software.  My God, I have a chip on my shoulder the size of Mt. Everest, don't I?