Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Sometimes I can't stand it when project managers ask me to estimate time to complete for various tasks. An estimate is a guess, and guesses can be wrong. Generally, bad requirements and documentation will lead to bad guesses.

So I often wonder if the project managers were ever in my shoes trying to guess at how long task X and Y will take, and how difficult it is to assign a number to it based on what little is known and collected from the client.

My question then is: Do good project managers need to have a programming background?

Or maybe the question should be, do good project managers need to have been a good programmer before? Is there any correlation?

share|improve this question

closed as not constructive by gnat, Robert Harvey, Walter, Matthieu, Mark Trapp Aug 31 '12 at 1:16

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

2  
There is a related question on the Project Management Stack Exchange as well. –  Thomas Owens Aug 27 '12 at 12:43
show 1 more comment

19 Answers

Managing IT projects is definately not the same as managing other types of projects. I once heard of a project manager with no IT experience. He ended up frustrating the programmers and basically scaring them away.

On the other hand, a programmer that becomes a Project Manager may become a control freak, thinking he can fix things if (s)he can't get the programmers to do it properly (that has been my problem in similar situations)

share|improve this answer
3  
+1 for your second point. An average programmer makes the worst manager. –  Rahul Sep 20 '10 at 8:19
2  
"definately not the same as managing other types of projects" I would say yes it is. –  NimChimpsky Sep 20 '10 at 8:29
2  
"I once heard of a project manager with no IT experience." I'm married to one, delivered at least two large projects on time and budget and has people wanting to join the team from other teams. –  NimChimpsky Sep 20 '10 at 8:31
1  
Then (s)he can't be the project manager I heard of! ;) –  Ivo van der Wijk Sep 20 '10 at 8:40
1  
Understanding the personalites is a skill of psychology, not programming. Not all programmers are the same, and programming is not special compared to other projects. Adding people late to a project has nothing to do with programming, that can be bad practice in any type of project. –  NimChimpsky Sep 20 '10 at 8:51
show 4 more comments

A manager with a strong technical background usually understands better how their team "think". It's always better to have a manager that understands you, isn't it?

share|improve this answer
show 1 more comment

No. Two completely different skills. A bad project manager is not necessarily someone who doesn't understand IT, and vice versa.

Being reasonable, rational, organised, understanding the project goals and associated business, and a good motivator are not at all dependent on being able to program.

share|improve this answer
add comment

Everything else being equal, i'd prefer a project manager with strong, up-to-date technical experience. However in the real world, programmers who graduate into full-time project management are more likely to allow their skill-set to become stale and outdated, which isn't a lot better than them having no technical background.

I've worked with good project managers and some terrible ones, and I can honestly say that i've seen little correlation between their management ability and their technical background. The most important factor is not technical background, but how much experience they have managing software projects. If you have two people managing their first project, the programmer graduating into project management is going to be just as bad as the project manager with no IT background. Both are going to go through a steep learning process.

The argument over the ability of project managers without a technical background reminds me a little of this:

alt text

share|improve this answer
add comment

I honestly think the answer is no. There is a whole baggage of competences required to be a good project manager and being a programmer is not one of them. A good project manager could manage any project of any type given that there are good people on the project team who know what they are doing. The main quality a project manager should have is communication skills. A project manager's job is to coordinate the project's tasks and keep the communications flowing between the customer, project teams and any other stakeholders. He/she should know at all times the progress of the team and if they are experiencing roadblocks, but doesn't need to know what the problem is or what you need to fix it, unless it implicates another person on the team whose time will need to be adjusted to help fix the problem.

As for giving estimates, that's a reality of life in any job. You could never get a house built on time if the electrician couldn't tell you how long it will take him to do the wiring - when would you know to book your walls guy? I agree though that it's really hard in IT to give estimates because of the high number of imponderables. Customers don't always know what they want and they tend to forget to tell you a bunch of things. What I used to do is estimate roughly how long I thought it would take, then multiply it by 2! And a good program manager shouldn't crucify you when your estimate proves wrong, it will cause him some headaches to re-organize the schedule, talk to the customer, explain to the bosses that it's going to cost more, etc... But that's part of their job - again, good communication skills are mostly what's required.

And I would even say that not having any programming skills is even better - an ex-programmer might attempt to do the estimating on their own or second guess your estimates. And we all know that IT skills get outdated really fast. You need to start asking questions when your project manager is more interested on how you are going to do a task than on how long it might take and when you'll be done. They could ask you to evaluate alternatives and let you hash out the details but the main point is to know how you're going to affect the project's schedule.

Finally, I'm not saying that no IT skills are necessary to manage an IT project - IT people being the type who just cannot seem to be able to vulgarize what they are saying for the common folk (!), it helps to know the basic jargon to be able to communicate with them! Also knowing the basic steps is crucial - you need to setup a server before running a website on it. I couldn't manage a construction project if I didn't know that the electrician has to finish the wiring before I close the walls!!

share|improve this answer
show 1 more comment

A PM really needs to know what the project will do, which likely requires some technical background but not developing.

Other than that, it's a matter of having respect for the field and the developers, more than actual knowledge. A PM needs to take the developers seriously, what they need, what they can do, what they can't, how much time will take. A PM who has some idea what he or she doesn't know can be very effective. A PM who thinks he or she has all the answers is bad. This can be an ex-developer who believes he or she knows everything and doesn't, or one who never developed and doesn't think he or she needs any special technical knowledge to manage.

share|improve this answer
add comment

I dont think a project manager of an IT project requires an IT background. But he/she has to definitely understand IT, and should know how IT projects work.

Though IT background is an added advantage, lack of it does not make one a not-so-good IT project manager. Also having a IT background is not the deciding factor.

I have worked with both types, and each had their unique set of qualities and problems.

With IT backround:
- Would understand when we say performance error because the code is not multi threaded
- But, in some situations, would say "hey come on, it is just adding 4 lines of code, you can do it in 10 days"

Without IT background:
- Would be very comfortable to negotiate for changing a deadline comfortable
- For an project without any requirements (at all, yet), would sometimes say "can we give a rough estimate of 100 days and mention a 30% buffer.

share|improve this answer
add comment

@NimChimpsky I agree.

It's a matter of what, not how (Active Listening is a nice tool).

Estimation works for small technical tasks, but for planning you need to work together to see the whole complexity. And you are no rivals.

share|improve this answer
add comment

It would definitely help especially if their not a good project manager. For a good project manager it does really matter.

share|improve this answer
add comment

No.

A good project manager is someone who can empathize and understand what his team's needs, preferences, and capabilities are, whether it be at the construction site, the manufacturing floor, or the software development house.

A good or bad project manager can have any sort of background:

Bad managers with technical backgrounds could've been ace programmers who do not appreciate the difficulty novices face when dealing with mundane, "easy" concepts like pointers.

A good manager could be that average programmer who wasn't as brilliant or as clever as his colleagues but had a deep understanding of project structure, requirements, and understood the lessons of The Mythical Man Month by heart because he lived bad coding days himself and got chewed on for not finishing his deliverables on time.

A good manager could be that software sales guy who found out that his coder friends couldn't go out with him on weekends because of unrealistic promises he himself had given to the client.

Technical knowledge do not predetermine a programmer's qualifications as a manager, because the skillsets required in both jobs are utterly different. So no.

share|improve this answer
add comment

I've never seen a project manager with no IT experience who could manage a non-trivial software development project worth a damn. I've seen very few project managers with IT experience who could do that either, but they seemed to screw it up less.

share|improve this answer
show 2 more comments

In my experience, management is about effective communication and decision-making. With that in mind, it makes sense that someone who understands the crafts (at least the core concepts and terminology) utilized by the people they manage, is better suited to be a manager than someone who has less of an understanding, but there is definitely no correlation. I've seen managers with programming experience succeed and fail, just as often as managers without programming experience.

Either extreme is bad, in my opinion; People with too little programming experience can blindly trust their programmers (Shepard following the sheep); People with too much experience can continually question their team's efforts (micro managing).

Personally, I think someone who has a good grasp of the core programming concepts, but realizes that they aren't a "hot shot," is the ideal kind of manager.

share|improve this answer
add comment

I believe they do need some programming background. If not then they will always be pressuring the programmers t d their tasks quick and expect it to be done within a few hours when actually the task requires lots of thinking and dedication. These qualities are known and well versed with programmers so if the project manager has programming background then he/she will understand how long a specific task will take and there will no arguments within the department and thus in the end a good project will evolve.

share|improve this answer
add comment

Definitely.

I have to be careful with this one cause it is based on true stories but I will try to explain my pain.

I'm working as a software engineer and we have a project manager with whom I'm working a lot lately. He has no technical background and it seems that it doesn't interest him at all but that's not the problem (everyone has there own interests). If you don't like to have technical know-how cause it's kinda "freakish" than it's yours BUT if it is your job to talk with the customer on a technical level it is essential to have technical know-have which he doesn't have.

Anyway there is this guy he doesn't understand anything about how a server works, how a web page works, how programming works and so on. Sometimes I feel like he doesn't know ANYTHING. So Every time I'm trying to make him clear what we have to do now or what the problem is what we have at the moment he doesn't understand anything. AND he is not that kind of a guy who would say "Hang on a second. Can you repeat that I really don't quite understand it.". No, he is that kind of guy who don't want to show that he didn't understand anything in the whole conversation.

But it doesn't ends here cause he then calls the customer and talks something that's basically not true. And it's ends up that we have to call the customer together to make it clear again.

That's why I say it really is ESSENTIAL to have some basic technical background and technical know-how. He shouldn't be able to write code but he should be able to understand what is going on and what processes have to be done.

BTW since I'm working with him my job is no fun anymore.

share|improve this answer
2  
This just sounds like the person in question doesn't have a personality suited for PM. I don't think them having a technical background would change that. –  richeym Sep 20 '10 at 8:55
show 2 more comments

Technical skills don't make a good manager, good management skills do. It can be helpful if a manager has done their time in the "trenches" as they can have an appreciation of the process that laymen can't have. However, it can also result in a kind of control freakery that even control freak layman managers don't have. They may try to do all the work themselves or scrutinize yours in an extremely uncomfortable way.

In my personal experience, the best manager I ever had was fairly clueless about technology, but he knew that the people working under him knew their stuff, and he knew how to earn the loyalty and respect of his team. I worked under him for four years, and only left the company because he'd left and been replaced by a manager who wasn't as good.

One of the worst managers I've had is versed in coding (if not software design) and does so much of the work himself that he leaves the rest of us with little more than scraps, bug fixing or the projects he doesn't want to do himself.

share|improve this answer
add comment

There seems to be some confusion:

The PM is not the boss of the developers. The person responsible for the dev team (Team Leader, Manager) and does the hiring and evaluations should decide if you're working hard enough.

Estimations are not perfect. I think the PM understands this more than you think. Do you seriously expect no one to ever ask you how long it will take to do something? Everyboy wants to know when it's done and it's the PM's job to track it.

You can be a PM is you: A) understand how to manage projects B) understand the development process. Neither of these requires coding knowledge, but it can help.

Determining if the programmers are getting enough done is not the PM's job unless he doubles as the team leader. To know whether or not anyone is "blowing smoke" about the time to complete a task, a manager will always have an advantage if he understands what is involved.

Estimates get better with experienced programmers who have a history of working on a particular type of project. No one expects them to be perfect, but they do expect you do come close and get better over time.

share|improve this answer
add comment

I'm reminded of the old saying: "you don't have to be crazy to work here, but it helps".

The short answer is that hands-on coding experience isn't a requisite of a good software PM, but it is usually preferred. What is critical to being an able PM is understanding the development process (whatever methodology is used), and trusting that the developers are willing and able to do their job. The development experience gives hands-on knowledge of that process, therefore it helps. PMs who work their way up the ladder in a company additionally know the corporate culture (and the codebase), and have a rapport with the other long-serving members of the dev team, which is why IMO the best PMs are promoted from within instead of being brought in from outside. If someone outside the company can manage the team better than someone from inside can, things are VERY wrong.

One thing I mentioned is a rapport between the PM and dev team. This is both at an interpersonal and a technical level. The key here is communication; the devs must feel they can bring issues, both technical and interpersonal, to the PM, and the PM must understand the dev team members when they describe a problem.

As to the specific nature of your question, an estimate is exactly that; an educated guess as to a quantity (as opposed to a hypothesis, which is a more general prediction of the outcome of a future event). The manager will usually either mathematically or intuitively apply some modifier, based on your recent estimates versus actual timelines. Agile builds this into the estimation process; the client intuitively estimates the complexity of the requirements, then the devs do the same, and then the devs actually go out and develop the solution, giving the manager data points to calculate a ratio of requirements points to dev points, and dev points to man-hour requirements.

In short, a manager will only take your estimate at face value in one of three scenarios:

  • You've been pretty accurate with your estimates of similar tasks in the past.
  • He's under pressure to deliver, and your estimate is better than he thought.
  • He's looking for a reason to fire you.

If it's that last situation, there will be many other clues around the workplace that maybe you should get the hell out.

share|improve this answer
add comment

I have no idea but my manger do need some technical knowledge. It is impossible to explain him sometimes.

share|improve this answer
add comment

I would say yes, he should have some programming background. If the manager doesn't have a clue as to what is it like to program, then he'll end up with unrealistic estimates for development and bug fixing. Also, he wouldn't understand any technical problem well enough to make a decision. Programmers in the team could lie to him and he may not realize, also programmers could tell him a problem and he may think that they're bullshitting around

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.