Me to the everybody: "Hi, my name is Cal... and I'm... I'm a manager."
Everybody: Hi, Cal!
I am a developer who made the conscious decision to move into management. My training, my experience, and my love has always been developing software. I've worked under sales managers, business managers, and (shudder) a CTO who believed that all the good software had already been written so we didn't need to write anything; we could just buy everything we needed. I made the leap into management for one reason: I had a manager who "got it" and showed me by example that developers can make great bosses for other developers. (Thanks, Paul M.!)
During my career as a developer, I learned many different things but the one thing that has stuck with me is this axiom: "If you have never been a software developer, you have no business managing software developers."
There, I've done it again. At least one third of you are now mad at me. But regardless of your feelings towards me, I stand by my statement because, time and again, whether through personal experience of 16 years or war stories from others, it has survived.
Before you fire up mutt and flame me, let me be quick to point out that I do not believe that this maxim is universally applicable to all situations or walks of life. I am not belittling any person or occupation, but I believe that, in most cases, we as humans, co-workers, and professional colleagues have enough shared experience to be able to relate to each other. I do not believe that this maxim applies to the sexes or to races. However, there are a few areas where it does apply, and the one I know most about is software development. Here are three different thoughts on why I believe this is true, what I believe has caused the current crisis, and what I think we can do about it:
There are very few professions that combine the creativity involved in good software development and the rigorous deadlines, often imposed from the outside. Hurry up and create! The ideas have to keep flowing, they have to be scheduled, and they have to be completed on time. If you have to go figure something out, go. But make sure you are back after lunch and make sure your schedule doesn't slip. Developers, especially now as we work in Web years, are under increasing pressure to "Get it out the door fast!".
The rigorous detail work of quality software development, however, has not changed. It still takes time to develop quality software. (You can have it good, fast, or cheap; please pick two.) To those on the outside, it may sometimes seem that what we do is easy. (Heck, we may feel that what we do is easy!) The ease with which developers manipulate the tools of the trade is often misconstrued as ease with which the task can be completed. Only a developer understands the countless hours it takes to master new tools, new languages, and new concepts. In this age of rapid development, new concepts come at us like a fire hose of knowledge. We are supposed to know how to soak it all up and be able to use it in our next project. This is almost a bearable burden if management understands what we are faced with. The problem is that, having never been there, most managers cannot empathize. (And most don't even bother to sympathize.)
It's generally accepted folklore in the IT community that managers are managers because they can't do anything else. What has led us to this state, a climate in which developers don't respect their managers and managers try to manage a software development team like an accounting department? Volumes have been written on when and why people are promoted into positions they are not qualified to hold. I won't rehash that here. I have a different take on it.
The question we ask should not be "Why don't managers understand software development?"; the question should be "Why don't those of us who do understand the process step up to management?" The obvious answer is that there are very few developers who want to be managers.
In the past, developers would have to turn away from promotions to management (and sometimes raises) so they could remain in development. These days, they find other companies to work for that will pay them more and allow them to continue to develop (but that's a story for another day). The problem exacerbates itself. The more developers steer clear of management positions, the unhappier software development teams will be with the candidates that become their managers.
We, the IT community, have the bosses we have because we refuse to step up to the plate and take the job. I am not advocating that all developers climb the management ladder; far from it. In most cases, a developer pressed into service as a manager will do no better a job than an accountant forced to code. But until the development community learns to train its own management structure, we are doomed to be managed by PHBs.
So now we are all on the same Merry-Go-Round from hell. What can we do to get off? At least part of the answer is obvious. We, as a community, have to train our own managers. For me as a manager, that means that as I interview candidates for development positions, I have to keep my eyes open for potential managers. I have to make sure that I mentor as I was mentored. I have to realize that if I don't train new development managers, I'm as big a part of the problem as non-development managers.
For me as a developer, and all other developers reading this, we have to make sure that we educate our managers.
We have to teach them concepts like:
I've found that, in many cases, they can learn. They want to learn. They are PHBs because they've never been taught not to be. There are some that won't learn or, worse yet, think you have a lot to learn about business. If you are under one of these and you work in America, change jobs! Life's too short and the job market is too tight to deal with goobers like that.
To fix the present situation, we, as developers, have to make one of two choices. We can take a stand at our present jobs and educate upper management so that we don't work for PHBs, or we can find other jobs. But make no mistake about it; it is ultimately up to us to fix the problem.
Cal Evans is probably the luckiest man on the face of the earth. In addition to being able to work with groups of highly talented developers, he also gets to pretend he's in charge of them. Cal daily practices the fine art of MBWA ("Managing By Wandering Around"). In his spare time at work, he's either scouring the net looking for talented individuals to invite into the club or playing Team Fortress Classic. (Officially, it's called network load testing.) All of this, and they insist on paying him. To show that his luck never runs out, in real life he is the husband of Kathy, Web designer extraordinaire, and the father of two wonderful children.
We're eager to find people interested in writing editorials on software-related topics. We're flexible on length, style, and topic, so long as you know what you're talking about and back up your opinions with facts. Anyone who writes an editorial gets a freshmeat t-shirt from ThinkGeek in addition to 15 minutes of fame. If you think you'd like to try your hand at it, let firstname.lastname@example.org know what you'd like to write about.