Monday, November 7, 2011

Can technical project managers be effective without hands-on development experience?

If I were to come up with an ideal set of skills for a project manager, it would include the following, in order of importance:
  1. Ability to create a full project plan
    1. Determining the critical path
    2. Determining which resources are appropriate for available tasks
    3. Planning the project execution timeline
    4. Creating milestones
  2. Tracking project status
    1. Determining what action is appropriate in the event of a time or budget slip
    2. Making sure that action is taken and that it has the desired results
    3. Determining the cause of a time or budget slip
  3. Ensuring that everyone involved in the project has what they need to move forward
    1. If not, removing obstacles/provide needed information
These are necessary items to occur in any non-trivial project. However, between hearing developers speak at user groups, hearing developers talk about project managers at other companies, reading blogs about project experiences, etc., I’ve come to believe that too many project managers out there reactively track status by asking the team for periodic status updates, and do little more. This approach is an issue because:
  1. Critical path planning gets done poorly, when it is done at all
  2. Poorly done critical path planning means resources aren’t added when they are needed
  3. Asking the team for a status only works when the team is both qualified and aware of all the tasks that need to be done
  4. Problems are never prevented because they are never seen until it is too late
However, without intimate knowledge of the software development process, identifying and fixing issues before they affect time or budget is difficult. This can be true for project managers who have knowledge of project management techniques, but lack the specific technology and/or business domain knowledge. But because of the expectations I outlined at the outset of this blog post, project managers are very often the ones held most responsible for the success or failure of a project. I cannot think of a greater disconnect between expectations and ability to meet them for any position.

I can’t think of an easy fix for this, though. Making sure that all software project managers had hands-on experience in software development might be a solution. That isn’t going to happen any time soon, in no small part because the skills necessary for being a good project manager are quite different than the skills necessary to be a good developer. I’d guess that most project managers would not like hands-on development, and that most developers would not like hands-on project management. Moving to a Scrum environment might be an option too, where the development team takes over the status tracking and the business stakeholders determine scope, but that makes it harder to budget resources on the enterprise level. Does anyone have experiences they'd like to share of techniques that did or did not work particularly well?

No comments:

Post a Comment