Skip to content

How to Do Many Projects (Part 4): Resource Planning

November 4, 2008 by JurgenAppelo

Projectmanagement
In three earlier blog posts I talked about multi-functional teams, matrix management and maintenance. In my maintenance article I argued that maintenance work on an application should done by the developers who were responsible for building it. However, I also pointed out that this introduces some additional resource planning problems...
When software developers are responsible for multiple projects, you always end up with complications in resource planning. This is not just the case when you let developers perform maintenance on previous projects. Similar problems arise when they are required to do some other activities, like spending time on consultancy or estimations for projects that haven't yet been signed into contracts. Likewise, many developers need regular training, or they like to do some quality/infrastructure stuff for the organisation itself. Therefore, maintenance work on old projects is a challenge, but it's just one of many types of work that can take people's attention away from their current projects. This requires a professional approach to resource planning...

I think there are 3 principles for resource planning:

  1. For every type of work a specific number of days per month must be allocated (by a resource planner) in people's calendars;
  2. Different people can be made responsible for the allocated timeslots by managing the work that is carried out in those periods;
  3. Considering that task-switching is bad, the resource planner must seek to minimize the number of different activities per week, per person. (for example: allocating one week to activity A and one week to activity B is much better than swapping both activities every day)

This is how we have implemented these principles in our company:

  • We maintain a 1-on-1 relationship between project managers and teams. This means that our project managers can do the resource planning for the members in their team.
  • The project managers are, of course, responsible for managing the projects in their teams. In these cases they act as ScrumMasters, as all our projects are using Scrum. These projects typically cover about 75% of our people's agenda's. There can be multiple projects going on in one team, but any conflicts of interest are taken care of by the project manager, as he is (by definition) responsible for all of them.
  • Every month, a specific number of days are reserved for maintenance work. We call them issue days. The number of issue days needed is estimated from our maintenance contracts. Management of maintenance issues is done by service managers, not our project/resource managers. Explicitly allocating time for maintenance work in people agenda's has been a big help in improving both our service levels and the reliability of our project estimates.
  • Every week a number of hours are set aside for doing estimations (for fixed price projects) and consultancy work by some of our lead developers. This pipeline of work is managed by someone who is neither a project manager nor a service manager.
  • Software developers themselves are allowed to reserve a number of academy days. These are days for self-development and training. It works similar to requesting time off for vacations. As long as people request these days well in advance, this should usually not be a problem. The things our people do and learn on those academy days are monitored by their own functional managers.
  • Last but not least, I am now considering the introduction of quality days. These should be days where software developers work on improving our own tools, techniques and processes, in ways that cannot be directly translated to billable hours in our projects. As a quality manager I would personally be responsible for the way those days are spent by our people.

Resource planning is not difficult. But it requires some discipline to do it right.
People should be able to trust that their resource manager has thought long and hard on how they must distribute their valuable time over multiple activities. And they should always know which other managers they must turn to for the details of the work in those allocated timeslots. And when the resource managers make sure that there's only a minor level of task-switching, then it's entirely possible to have a small number of people working on a large number of different projects and activities.

Comments

Generally it makes sense but

November 4, 2008 by pbielicki, 8 weeks 6 days ago
Comment id: 1973

Generally it makes sense but I have reservations to so-called "quality days". If you want to introduce such "feature" it means that you divide normal work from quality work. I think that everybody in your team must improve tools and processes as they use them i.e. everyday - not after a month or so. I used to do this and this doesn't work - you forget what was wrong very very quickly. And the time (or effort) needed for this should be transparently added to task estimation - it's not easy because you don't know how much time you will have to spend on improving something but you have the velocity, right? After few iterations you will be able to compute the "average".

Quality must be inherent in the process and people - it cannot be something that stands aside.

What do you think?

I don't agree

November 4, 2008 by JurgenAppelo, 8 weeks 6 days ago
Comment id: 1974

We've been trying to do project-only quality time for years, and I've come to the conclusion that it simply doesn't work. All the work done during projects must be billable, and the work must be described as features or user stories, valuable to the customer.

However, the customer does *not* want to pay for us setting up Team Foundation Server and learning how it works. The customer won't pay for new cross-project coding guidelines, and the customer won't want to pay for development of our internal password database.

Customers (rightfully) require that all these things are already in place *before* we start on their projects. That's why I think we need to allocate time outside of our projects to develop our infrastructure. Like I said, we've tried it your way for a long time, but it doesn't work for us.

Agile Development tools

November 4, 2008 by Anonymous (not verified), 8 weeks 6 days ago
Comment id: 1975

This comment was censored out by Artem.
It looked not exactly like a spam, but after careful reading o the article, this comment appeared to be irrelevant enough to be qualified as spam

Good info

November 5, 2008 by mattgrommes, 8 weeks 6 days ago
Comment id: 1976

We're about to transition to working on multiple projects after a long time working on one big project so this was very helpful, thanks. I like the idea of doing these different types of days during the sprint.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <b> <i> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <br> <blockquote>
  • Lines and paragraphs break automatically.
  • Web page addresses and e-mail addresses turn into links automatically.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.

Best of AgileSoftwareDevelopment.com