When you move around in various software development organizations and talk to people, you hear one common statement. Coding is the most important task that we do! Everything else, whether it be testing or documentation or even talking with co-workers is a waste of time. If someone is not coding, then they are loosing money!
I suppose you could hold that view, if you think that the only thing which goes to the client at the end of the day is executable code and all you need to be successful are a handful (no more than 7 i believe, since a single person can’t effectively handle more than 7 people at a time) people at your disposal. True, there are firms doing remarkable work with just those kind of dynamics, but i ask you… how many have been small, lean and successful for a long time?
Truth is, if you are successful, you will get more business and you will need to add more (>7) people in your company. However, if you present a counter-argument that no, we’re small and we’re still fine, then i seriously doubt your ‘success’ in the industry. The whole fun of the capitalistic society we’ve become is the fact that we setup enterprises to fill needs of some customers, which in turn earn us money, which can then better our own lives. And yes, the more customers you get, the more money you make and the better your life becomes… however, the more customers you add the more people you will need to add to handle that load whether it be development, or support or even accounting & HR!
So here’s my question again… why manage? Wordnet‘s first definition of managing is “pull off: be successful; achieve a goal” and that is exactly why one should be managing.
When we think of managing, what’s the first thing that comes to mind? Men and women in black suits and colorful ties with laptops & stone faces for whom the only care in the world is to cut costs by firing you or to make your life hell by strict HR policies? I know, that’s the first thing which used to come in my mind as little as a couple of months ago… but then i thought, wait! what is it that makes them… them?!
To boil it down, a manager uses his/her experience to look at the broader picture (beyond just the coding exercise) and has the requisite skills needed to negotiate, delegate, track and deliver on tasks through interactions not just with machines but also with people! You see, that’s the foremost reason you need managers! To interact with people! When on a project, someone has the responsibility to talk with 1)developers, 2)their management, 3)clients and 4)vendors or suppliers (if needed) among others. To ensure smooth flow of communication is carried out and everyone is kept informed!
And that, ladies and gentlemen, is why you need to manage! the code, the deliverable and the executable is all very good but if other people involved in the process aren’t really understanding what you are delivering… then seriously, whats the point?