Reddit post on programmers and (vs?) management
"Why do the best developers always seem to get dragged into project management? What do you do to avoid it?"
http://www.reddit.com/comments/9z0uq/whydothebestdevelopersalwaysseemtoget/
Some good stuff:
Because the best developers have several things going against them:
- They try to have a "whole picture" view of a project
- They accept responsibility
- They actually care if a project succeeds or not
The alternative is having "Project Managers" doing project management. Choose your poison.
It's really all about growing your procedural mental models of these projects, and it happens in more than just programming.
You start programming simple programs, then you start programming more complex programs. Now, you're valuable as a programmer not because of your technical skills, but your ability to conceptualize a complex program (and then make it happen technically)...
Imagine you had 3 employees, all 3 of them were coders, but one of them clearly has been coding long enough to see the pitfalls in the future, conceptualize the overarching system, and build it intelligently. You want him to focus on his unique skill, so he becomes the designer and the two technical dudes are his grunts.
Fast forward...
Same thing happens again, you have a lot of technical coders and designers, but one has been working long enough to know how to deal with clients, understand time frames intimately, and also work with / advise technical coders AND designers. Sorry to say, you're the perfect piece of glue to hold the shit together!
The thing here, is that 5 talented people (whatever fields?) can probably best 50 muggles; process is better, project design is better, implementation is better, overall fit and finish is better, and very little is lost to communication/documentation/rememberhing what is going on. And I want to think that it's much less a function of the talent, and more a function of small size and focus =>shared vision, which lifts everybody up.As Alan Kay says,"Point of view is worth 80 points of IQ". The 50 will get bogged down; at least 10 will be projet managers, generating useless reports, to pass on to 3 full time managers, etc. Cue the parable of the two programmers [Link updated]
And both cases are because the people wanting the work done, with power, are too lazy to take the time to understand what's going on-- blind leading the blind.
The very first thing you need to do is let go of the misconception that the people who like what you like are smart, and those who like different things are stupid.
Yes and no. When what I like is thinking about complex problems and what they like is chatting about shopping, well...
The management skill seems to be finding the right fit between person and job, and getting it all to gel.
The examples are generally about larger shops with programming teams; so Project Management could be important-- as long as it is about keeping it all together so each of the individuals doesn't have to.
One of the problems is that a lot of those "management tasks" are, for a technologist, fairly repetitive and not scalable. Coordination, tracking, reporting, inter-team communication, personnel management ("soft" people skills), and so on are huge time sinks. They obviously play a huge role in determining the success or failure of a project, but they're not things that most superstar technologists hold in high regard. So, there is inevitable tension between the technology side of the house and the management side.
I'd add also, the measureable value isn't there-- reporting to whom? people who's opinion is informed? Unlikely.
Not to bring you down more, but my experience is that when managers become overwhelmed by these things (particularly tracking), they distribute the load to the team, because that lessens the load on them. Or so they think. What ends up happening then is that the team gets annoyed that they're spending time doing things that aren't "core" to their jobs. So they bitch and moan about it. Which means more face to face time with them, to explain or cajole or demand or fake commiseration. All of which is yet more time you don't have to do the other things. And thus begins the death spiral...
I also think that some management types have the mistaken notion that promoting a developer or programmer to management is the ideal method of recognizing that person for a job well done without realizing that a lot of us simply don't want to be in charge, we just want to be in charge of our work
Re reducing truck number by having key person supervise/coach -- problem with key person is that people will go to them if they're there,
In order to overcome the issue, people need to feel reponsibility/ownership for the system; it's easier to say, it's broken, i can't fix it, no-one could; than to own it and learn it.
What happens when the key person leaves-- in the absense of that committment the system falls apart, gets badly patched, and eventually replaced; often by externals, costing big $, and never living up to what it did before. Things Fall Apart. It's like Jane Jacobs' Dark Age Ahead -- if you don't put energy into maintaining good institutions, you'll lose them-- and eventually forget they were ever there. And each system is an anchor point in the flux; chaining them puts stresses on the other anchors-- it's all moving. There isn't any going back.
technical manager can give more leverage; spend more time mentoring, setting standards, doing architecture etc
I see this about 50/50 in my job. The BEST programmers I've seen have the ability to garner the wages and respect to stay programmers. Some programmers just get sick of trying to keep up with the newest/best coding practices and would rather manage or at the very least see this as a "step up". (I actually hope to move to management, but technical manager more than project manager)
What I find more often than not is the people managing have no idea how to program or what it takes. These are the people in my realm of business who whiteboard out an idea for a website and draw a circle, labeling it "backend." They have no idea that the slidey transitions in their shiney frontend designs take 5 minutes, and that "backend" little circle will take 6 months
The key to cracking this nut is debunking the perception that becoming a manager is a promotion. This is because the decision makers fear the perception that they are promoting incompetence. We have inherited our conception of management from the era of industrialization, where management positions, which conferred respect (and higher wages), were used as a tool to reward obedience and productivity. Replacing a promoted employee was easy, due to the low skill level required to perform most jobs, thus there was very little cost to promoting your best employees. Thus, explain to your boss that you would rather your less skilled, but still competent peers are placed in management positions.
In the past, organizations were essentially triangles, needing to scale up if they wanted to scale out. That structure no longer exists. Organizations are now a circle of clusters (teams) and, in order to expand out they need links (managers) that introduce the least impedance between the clusters. Low skill technical workers with good communication and organization skills are perfect for this organization. We just need executives and higher up managers to see themselves and the center of a circle instead of the top of a triangle.
Makes sense, But really annoying too, because it brings up issues around my own work which just make me mad;
- project managers who contribute nothing, other than typing up the contributions, and yet feeling like they should have some control
- notion of "coders" which is a stupid notion. Programming encompasses understanding the problem in context, defining the problem and its relationships, delineating the computer and the human practice parts of the workflow, designing a new set of behaviours (person/machine), and then implementing them (coding) Sometimes even seeing the opportunity for improvement (though you'd want managers to do that, cause it's goal setting)
- if managers need lots of management from below, they're really just in the way
I find the anti-management comments here quite immature. Listen, at some point in your career you will want to climb higher. That is, if you're half clued and see the end game. Do you want to be a FTE as a 65 year old? Not saying this is a bad thing, but assuming you have a choice, wouldn't you rather climb to a higher level of responsibility and ultimately compensation? It's easy to stay in our comfort areas and not expand into things that are challenging.
Challenging? Theres 0 evidence that managers actually do anything; parasitical paper pushers; people under them do the challenging work of translating vague motherhood KPIs into something that makes sense in the org. They just avoid blame and grab credit. Pointless.
ask yourself this: Do you really want to be a 40 year old coder? How about a 50 year old coder?"
Change coder into programmer, and yes. Of course. Rather than being a useless parasite, definitely.
Perhaps what's challenging (in all fairness) is to be a manager, and have no real handle on the effect you're having-- good or bad. Sort of existentially challenging-- to keep trying to do good things, which suceeed or fail based on what are essentially random factors. Trading effectiveness for influence; because individual effectiveness is limited, but influence could be big-- or you could just be imagining it all.
I really think much of the difference is simply a class thing; managers are middle class, workers are lower class. Authority/obedience, status, money-- it's just an empty game of class one-upmanship. This is one of the most disruptive influences of the internet -- see clue train manifesto-- small teams have great power, great effectiveness, and have no need for managers, or hierarchy.
Managers are all about allocation of resources. We live in a world where for much of the work I do, lots of resources are not necessary.