I am seeing a lot of programmers turning away from management and administration roles. They want to build stuff. And as a result, a lot of these positions are filled by non-technical people. I fail to see how they add value. Is scheduling meetings, booking offsites and other administrative work enough to justify their role?
- Anybody can ask a question
- Anybody can answer
- The best answers are voted up and rise to the top
Don't underestimate the amount of interaction your manager does with other departments. They handle budgets, training plans, HR paperwork. They protect the developers from getting sucked into meetings with other departments and provide a unified front for your group.
In short, their job is to protect self-motivated developers from all of the other demotivating things that exist in business.
The best managers are magicians. They make the rest of the company disappear for their developers. I can't remember the exact quote from Joel but it was something to the effect that it's management's job to make sure there's a fat Internet Pipe, a beast of a machine, and lots of caffeine so all the developers have to worry about is what they do best.
A good manager is the voice of your group to the rest of the company.
As it applies specifically to software development, there are two sorts of value-adding roles for managers: project management and team leading.
A project manager interfaces with clients and middle management, which is a time saver for the developers. Often there are clarifications or scope changes that come up in projects, and it is helpful to clients and middle manager to have a single point of contact. Trying to field questions from every member of a development team leads to unrecorded project decisions and undocumented commitments, the bane of scope management.
On the other side, a team leader is involved with career/skills development, making sure the workload is appropriately distributed among team members, and providing resources and rewards commensurate with the individual contributions and needs.
Neither of these roles requires a heads-down programmer, in fact somewhat the opposite. A programmer will often jump to a code-writing task as the first response to a question or crisis, and it's helpful to have someone whose job is to ask whether that task really needs to be done.
Along with the other benefits mentioned, the non-technical manager may do a better job of making final decisions when there is an impasse amongst the experts. I know this sounds counter-intuitive, but the good non-technical managers understand the strengths and weaknesses of their people.
Example: Two programmers debate over which server to use for an application. In some sort of make-believe democracy, they both get their one vote, so no decision is made. This war could go on forever (and with some technical people it will). Someone has to step in and arbitrate this disagreement and get the project going. A good judge will lean to the opinion of the one with the most expertise in this area.
Just because someone lacks talent, skill or knowledge in an area doesn't mean they can't identify those who do. Recognizing talent is a talent.
Yes. Perfectly sufficient. They are also good for calling building management when there is a problem with heat, AC, etc; making sure vending machines and water coolers are well stocked and maintained; bringing in special goodies for noshing; keeping the office clean and orderly...
Do your best to think of other such tasks in order to keep them busy and out of trouble...
Their most important role? Staying out of the way and not mixing with programmers, and making sure that other non-technical people do the same.
Consider a development team like an MLB ballclub (the analogy is quite a good one IMO): The managers are always former players - only they know how to handle 'hands on management' of a team of highly skilled, nerdy, idiosyncratic, professionals, who do things that most 'regular people' cannot.
In my experience non-technical manager are best suited for this role, besides adding value by avoiding company stuff interfering with developers work, they foment partnership between developers(cause it's well know that developers are introverts http://www.unwesen.de/2012/03/16/introversion-productivity-work-environments/), good ones let the team work at their rhythm but caring about visibility.
protected by ChrisF♦ Dec 28 '13 at 17:36
Thank you for your interest in this question.
Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).
Would you like to answer one of these unanswered questions instead?