I Code, Therefore I Am

Last modified on March 2nd, 2008

Tonight, while sitting at home on the couch, I was reminded of a conversation I had last week with someone that I hadn’t talked to in quite some time. That person was someone I used to hang out with quite a bit in university, but haven’t really seen that much of in the last few years. We both somehow ended up in software development, although I’ve stayed more along the lines of developing software while he has moved on to managing a small team of developers.

The thing is, I left the conversation somehow being made to feel bad that after eight years in my career I haven’t advanced to full-time management, something this person moved into a few years ago. When I asked him if he still coded, he basically scoffed, implying it was basically beneath him now.

I’ve actually been in charge of people a few times in my career. Back in Ottawa, I essentially was responsible (at least in terms of training and safety) for an entire shift (think 40 people) of people assembling fiber optics components on a line. In Vancouver I’ve also led a small software team before. I have no problem running a small team, I just don’t particularly enjoy doing it full time. To me, it’s the software equivalent of directing traffic. Sure, you make sure order is maintained and people get to where they’re going without crashing, but you’re still stuck in the middle of the road wearing some lame orange jacket with a whistle rammed in your mouth. In fact, I don’t think any software manager can truly be effective if they don’t dabble in code from time to time, or make a reasonable attempt to keep up to date on what’s going on in the industry.

And to be honest, I like getting down and dirty and writing software. I enjoy coming up with difficult problems and trying to devise elegant solutions. I like that I keep myself sharp and can easily create in code basically anything that I can imagine in my head. In contrast, I just wouldn’t be happy at this point in my life with my feet up on a desk staring at Microsoft Project all day. I think it’s a mistake to assume that the end-game for all developers is a management role. Not all artists want their own gallery — sometimes it’s enough for them to just sit and paint.

Over the years I’ve worked with a few managers that I’ve had a great deal of respect for, and a few that I’m glad I’ll probably never see again. You see, my idea of an ideal manager is a person who can do almost everything I can, only better. I’m sure lots of people would read that and disagree, but some of the most productive (and enjoyable) teams I’ve ever been on have been when the people in charge were basically technological rock stars. These are people who instilled confidence in those around them, helped develop skills within the team, and could offer reasonable solutions to problems as they arose. They also knew enough to trust the people underneath them, even if that trust led to the odd mistake. That’s part of learning, and part of life.

But alas, those managers are few are far between these days. Most of the time at large companies you’ll encounter the dreaded middle manager, a person who’s sole role is to proxy information around the office, to turn short emails into long meetings, and to keep most people just motivated enough to not quit. The problem at these companies is that a) it’s hard to get rid of people and b) you need good people doing work. Those two constraints basically mean that large companies are forced to promote incompetence, people who are content to be paid a lot of money to not do anything of value. And maybe that sounds appealing to some, but I could never accept a position where I didn’t actually feel like I was contributing my worth. It would just somehow feel like I was being totally dishonest with myself.

Which brings me back to that conversation I had. I have no problem with management, I just don’t think it’s for all people. Nor do I think anyone should judge their career solely by how high up that ladder they climbed.