Home About The Codist RSS Feed

Programmers Are from Mars, Project Managers Are Sometimes from Hell
Apr 30, 2007 08:52 perm link Readers: 3172

One of the common characters in most software development shops is the "Project Manager", whose job is to oversee the various phases of a project, from requirements gathering to hopefully shipping the result on time and on budget. Sadly few of the projects managers I have worked with had any actually clue on how to do any of these things.

In many shops the project manager is not a former developer but more likely someone who moved up from other positions. At my favorite employer (well documented in several sad but entertaining posts here) three of the main project managers were (1) a former forest ranger (2) a former MaƮtre d (3) a customer. These three were given a large amounts of authority and despite a long history of failure to deliver continued to gather glowing reviews from upper management. Perhaps this was an indication of the woes of upper company management, but you would think that delivering projects months and even years late and costing the company reams of money due to poor decision making would be a cause for some kind of change. The actual criteria for success seemed to be attention to the company's ever-changing formal methodology, not any actual project deliveries.

It never hurt to blame the developers, the customers, the consultants, the vendors and probably the man on the moon. Sometimes these are valid complaints but like the boy who cried wolf after a while it begins to sound like the problem is the project manager. The PM's had virtually absolute authority over all project details including technology decisions.

So what is a good project manager? First of all, I prefer the term "Project Facilitator". Larger projects especially need a lot of communication between all the developers, customers, operations, QA and management with a stake in the project. Someone needs to manage that communication, to ensure that everyone knows what they need to know and when, and track project details, schedules, estimates and progress.

Often upper management seems to prefer the concept "Project Czar", an omnipotent person controlling all aspects of the project, and thus guaranteeing success. In practice this type of dictatorship rarely works unless the PM is truly talented and experienced in all areas of the project. It can happen but none of the PM's I have worked with or for ever had that level of competence. The perfect ideal of a political leader is the benign dictator but that never works out either.

In the end someone does have to be in charge, democracies are great ideas but usually give way to republics (representatives of the people are given authority to act in their stead). Where do you draw the line in a software project? I've always preferred having people with actual experience make decisions in their areas (eg architects making technology decisions, business managers managing customer interactions, etc). Sometimes you can find people who are capable in multiple areas and they can take on multiple roles (I've done this a number of times).

If you talk with project managers, the most common thing you hear is "it doesn't matter that I know nothing about the technologies involved in the project, managing people is what's important". Usually you only hear that if they really don't know anything about the technology. Sometimes they don't even know how to manage people, especially the occasionally complicated programmer. In the business of developing software projects you really need to know and understand both people and technology. If you make technology decisions without a clue, the best team in the world won't be able to produce; likewise if you know the technology so well you could have invented it, but build and manage the team without a clue, you will still fail. I've seen developers-turned-managers fail as often as tech-clueless-managers.

Like any speciality in our programming world, the project manager (or again as I prefer project facilitator) cannot simply be promoted from some random position. Would you hire a programmer to write code with no coding background? Prospective project managers really need to be exposed to all facets of projects, from analysis of customer needs to technology selection to architecture (at least at some level) to some basic understanding of what programmers do. Once they have been involved in these various activities for some time, only then they should be allowed to facilitate entire projects.

I have been in places where there were no project managers as well, and with no central decision maker. This rarely works either unless the teams are truly talented. If the projects wind up disorganized and fail to be delivered then it should become obvious that you really need someone to manage them. I think companies often start off with no managers and then wind up going to far to dictatorial management.

The best projects managers I have worked with (not many but they stood out) were organized, understood the technologies or at least spent time learning them, communicated well with everyone, and especially spent more time listening than talking. The whole point is to make the project itself move from inception to delivery smoothly with a minimum of trouble. Even in a dysfunctional organization, if someone can actually deliver success despite the challenges while avoiding needless conflict with everyone involved, then you have found the ideal PM. One of the less experienced PM's at my favorite company (in this case a former Marine) did an awesome job in every project he managed but refused to play the political games the other PM's played or sugarcoat complex issues so he remained low man on the PM totem pole. I would work on any project he managed again but I had zero respect for the others.

Software development projects are usually hard, there is no denying that. If you use good technologies, assemble a good team of engineers (development and QA), use a flexible methodology, work with helpful and involved customers, and then have a solid project manager facilitate the process, whatever you are doing is likely to succeed.

One can dream, anyway.

My Tags:

  • Franck: Apr 30, 2007 10:25

    I am always amazed of the lack of training in hard and soft skills given to project managers.

  • Bobbie The Programmer: Apr 30, 2007 17:15

    I saw a number of Project Managers have to leave the profession during the 2000-2003 recession when there was no fall back to being programmers since they lacked the skills.

  • Gnanasekaran Sakthivel: May 01, 2007 04:49

    I really appreciate your thoughts. I would like to highlight few of your wonderful thoughts.

    It is not necessary for a project manager to be technologically sound. They should be willing to learn to an extent. They should pull the right group of technical resources to decide that is anything technical. I had a manager that just does not do that. Architect in the team will be simply sitting developing some JSPs, and the PM will decide whether to go ahead absolute necessary technical changes. Since the PM is not tech enough, PM will just say no instead of pulling a meeting of necessary tech people to come up with a decision. It was simply ridiculous. I was seeing where the project was going. I could not do anything. I was just flaming into myself for a change. Some developers just say "Who cares?, we are paid, that is what matters, as long as this project lasts we will be here, else we will find another job". Dictatorship will lead to unforeseen disaster, because PMs can hide small failures, blame the developers for failures, therefore they can also project a failure a success and party. Believe me, this can happen. PMs who read this will atleast be warned.

    To conclude, a non-tech PM can still bring a project to success if they arrange meetings with right group of people and watch how it evolves to smart decisions. As you said, it is more like pulling right people (and resources) together at the right time towards the defined success.

  • TRDR: May 01, 2007 05:46

    Great article, really summed up the ways a project team can fail through lack of experience or expertise on the part of the PM. The best PM I've worked under was from a technical background, but was also a brilliant communicator and best of all, he was really interested in all aspects of the project. It's always better if you get a PM who actually likes what the project is about.

  • Stephen: May 01, 2007 07:25

    There are PMs who know programming, who make decisions without staff input. This can be OK, but not always.

    There are PMs who know programming, who still ask the staff for input. When this is done efficiently, it's awesome.

    There are PMs who don't know programming, who compile the list of outstanding issues, then get the team to work these issues. That can be OK.

    There are PMs who don't know programming, who make decisions without staff input. This is disaster. Always.

    Finally, there are PMs who have no clue at all, but the staff works together, builds the issue lists themselves, and figures out the plan. Oddly, this can be the most efficient. One such guy spent half the morning asking each of the staff in turn if they knew about something that he'd just learned, only to find that the task was either finished or nearly so. He ended up saying, "I'll just go back under my rock." Hey, comic relief is good, too. But what this guy really did well is protect the staff from management overhead, taking the brunt of the management meetings himself. Yet, some large companies have process policies that make this impossible. Feh.

  • Ben Simo: May 01, 2007 08:00

    Good project managers are invaluable. I've worked with great PMs and with horrible PMs. A good PM is not only organized, but listens to all involved and considers impact to everyone. Having the PM outside the reporting structure of the other teams involved in a project helps prevent any one group from controlling a project.

    One of my worst experiences was with a project managed by a development manager. There was tremendous pressure on development to deliver on time and on budget. This resulted in decisions being made based on the impact to development's schedule and budget -- often with disregard to impact (sometimes ongoing impact) on other groups within the company. I believe it would have been better for all involved -- including development -- if there was an "outside" project manager that could better weigh the priorities of all involved; and when needed, lobby those putting the tremendous pressure on development.

  • garry: May 01, 2007 08:59

    it's nice if the PM has development background, but not that important. the key thing you miss here is that they absolutely must have been trained in project management. this is not an easy job, and requires skills and knowledge that most people don't just have. you wouldn't take a PM and ask them to write code; you shouldn't take a programmer and ask them to do project management. it's a recipe for disaster, yet it happens all too frequently.

  • Craig "agile PM wannabe": May 01, 2007 09:21

    Awesome.

    It is humorous that we have 2 PMs in my department. 1 is a non-technical individual with zero people skills. he was the IS director but was demoted to PM...go figure. I am a former soldier, programmer, DBA, etc and everyone can see the contrast in our styles. Your post put this contrast into an articulate point of view. Thank you.

  • sal: May 11, 2007 08:40

    Sysadmins and DBAs make the best PMs. Hands down. They're used to dealing with programmers and clueless users. They understand what makes software good or bad.

    The best PM I ever had was a cobol programmer that transitioned to a Netware LanAdmin and then a PM. He had 20 years in IT and could spot an ugly kludge or a potential cause of production problems from 20 yards on a moonless night.

  • Thomas Hansen: Jul 05, 2007 14:28

    ROFLOL... :D

    Now I know why most of MY bullets had a LOT to do with Project Leads... ;)

    http://ajaxwidgets.com/Blogs/thomas/9_reasons_why_software_project.bb

    .t

  • Add Comment

Name:


Optional URL:


Comment:


Save Cancel

Copyright © 2007 By Andrew Wulf