S
Steve Schacher
Hello.
I've posted this question in various ways over the past year, and I
keep coming back and reading other leveling questions where many
answers contain the advice "never use anything other than 100% units."
I'd like to post my current scenario and let you tell me how to
improve it.
Specifications: We're using MS Project 2002, no server yet.
I have a team of 60 resources who are divided into four sub-teams.
Each resource is assigned several ongoing responsibilities -- end-user
support (help desk), bug fixes, consulting, ad hoc short-term
assignments. Each sub-team leader assigns the assignment units to meet
their own sub-team's needs. Any unused availability is available for
scheduled enhancement work, which we install in monthly releases.
I have all the resources in one resource pool. Each resource has their
own personal calendar, and their personal calendar is based on one of
two "standard" calendars, depending on geographic location (different
holidays, workdays, etc.)
Each sub-team leader has their own baseline activity project plan. The
sub-team leaders will enter their assignment units to the baseline
activities here and save them to the resource pool. Initially, we had
one single task for each activity for the year, i.e., for bug fixes a
team leader might assign Resource A for 40%, Resource B for 25%,
Resource C for 10%, etc. This would be set up as a fixed duration task
so we can spread the work over the entire year. If the sub-team leader
wants to change the assignment units, the work would recalculate.
Sometimes, they will "close out" a task and create a new one with
different assignment units as the work levels vary; otherwise they
will change the existing task. Also, the sub-team leader can add
additional tasks specific to their team to cover short-term
assignments. These ad hoc tasks would work the same way.
The release manager has a separate release plan that also uses the
resource pool. This plan is not a true start-to-finish project plan
(with critical paths), but rather a collection of independent
enhancements over time that need to get scheduled for release. In this
file, we import enhancement estimates from an Access database where
manpower estimates are developed and prioritized by the business. The
imported tasks are fixed work, and are loaded as a three-level
hierarchy where level 1 is the enhancement, level 2 is the things
being changed, and level 3 are the deliverables (functional spec,
technical spec, code/test, etc.) for each change within the
enhancement. Resources are generic skill sets; the resource pool also
contains the generic resources with an availability of 10,000% in
order to eliminate resource constraints.
Each month, we replace the generic skill set resources with actual
people and level the release plan. Our goal is to see when an
enhancement can complete given the following: 1) the resource's
baseline commitments, 2) the resource's other enhancement commitments,
3) the resources planned vacation, 4) business priorities. We level
with the following settings: 1) week-by-week, 2) priority, standard,
3) leveling can create splits in remaining work. Once we get the
resourcing the way that we like them, we use the Deadline field to
mark the target release date for the enhancement and save the plan to
the resource pool. From then on, we use % complete to track the
progress in order to assess the resources' ongoing availability. We
use custom filters to hide completed enhancements.
Until now, each month as I would enter the initial people in place of
the generic resources, I'd look at each person's availability and
enter the available assignment unit for each resource. In the case of
varying availability, I'd approximate to get as close to 100% as
possible, sometimes changing a particular deliverable if it fell in a
time period with higher availability. However, if circumstances cause
a resource to be replaced, I'd have to do this again for the new
resource. Also, if the sub-team leader changes baseline
availabilities, the enhancement assignment units may no longer be
optimal. However, the number of enhancements each month was
manageable, and the result was a tight plan with nice-looking unbroken
Gantt bars.
When I first set up this structure, I played with different schemes
for working with assignment units. When I left units at 100% and
leveled day-by-day, Project would shift all the tasks out past the
finish dates of baseline tasks. When I manually changed the units to
fit the remaining availability, then it leveled nicely. I moved to
week-by-week leveling with splits because it just seemed to eliminate
some over-allocation problems on odd days that weren't really
problems.
Now, however, we have a major upgrade planned that is using many
resources. We are planning this effort in its own project plan using
the resource pool. Tasks are time-boxed. The same activity may be
represented by several tasks because the hours assigned vary by
half-month to half-month. Resources were assigned to these tasks and
saved to the resource pool. Now we needed to assess what this does to
our ability to meet the enhancement demand, both new work and work
underway.
I decided to try assigning everybody at 100% to everything to see if
simplifying this would still give me the same results as manually
setting the assignment units. It still shifts everything past the
finish of baseline tasks. When I level week-by-week, what happens is
that on a daily basis, the resource is under-allocated, and all the
remaining time is shoved into Friday, causing an over-allocation.
Since I set my timescale to Months/Weeks, the resource graph shows
everyone at 100%, even though a daily graph might show
40%-40%-40%-40%-340%. The Gantt bar looks like a spectrograph, with
lots of broken lines separated by dots. It does appear that higher
priority tasks are finishing before lower-priority tasks, but it also
looks like Project is trying to start them all at roughly the same
time. Also, there are some weeks of under-allocation by as much as 70%
utilization.
As a test, I took one resource and manually entered their units on all
their tasks. The result was to shorten their overall duration by three
days. It didn't seem worth it to me to go back to manually entering
the units for that little optimization, considering the fluidity of
the upgrade estimate and resource decisions. In previous posts, I
asked about leveling contours that are essentially "fill in the gaps"
contours like NIKU's Project Workbench does. I do understand the MS
Project only delays work and breaks up work, but does not adjust units
on a day-by-day basis in order to fill the gaps in availability.
Am I setting things up as best as I can? I can't see how always using
100% availability can work here considering the way that we have
baseline activities that enhancements must schedule around. I'd hate
to have to keep manually entering remaining availability on
enhancement assignments each month once the upgrade is complete.
I know this was long. Thanks for making it this far.
Steve Schacher
I've posted this question in various ways over the past year, and I
keep coming back and reading other leveling questions where many
answers contain the advice "never use anything other than 100% units."
I'd like to post my current scenario and let you tell me how to
improve it.
Specifications: We're using MS Project 2002, no server yet.
I have a team of 60 resources who are divided into four sub-teams.
Each resource is assigned several ongoing responsibilities -- end-user
support (help desk), bug fixes, consulting, ad hoc short-term
assignments. Each sub-team leader assigns the assignment units to meet
their own sub-team's needs. Any unused availability is available for
scheduled enhancement work, which we install in monthly releases.
I have all the resources in one resource pool. Each resource has their
own personal calendar, and their personal calendar is based on one of
two "standard" calendars, depending on geographic location (different
holidays, workdays, etc.)
Each sub-team leader has their own baseline activity project plan. The
sub-team leaders will enter their assignment units to the baseline
activities here and save them to the resource pool. Initially, we had
one single task for each activity for the year, i.e., for bug fixes a
team leader might assign Resource A for 40%, Resource B for 25%,
Resource C for 10%, etc. This would be set up as a fixed duration task
so we can spread the work over the entire year. If the sub-team leader
wants to change the assignment units, the work would recalculate.
Sometimes, they will "close out" a task and create a new one with
different assignment units as the work levels vary; otherwise they
will change the existing task. Also, the sub-team leader can add
additional tasks specific to their team to cover short-term
assignments. These ad hoc tasks would work the same way.
The release manager has a separate release plan that also uses the
resource pool. This plan is not a true start-to-finish project plan
(with critical paths), but rather a collection of independent
enhancements over time that need to get scheduled for release. In this
file, we import enhancement estimates from an Access database where
manpower estimates are developed and prioritized by the business. The
imported tasks are fixed work, and are loaded as a three-level
hierarchy where level 1 is the enhancement, level 2 is the things
being changed, and level 3 are the deliverables (functional spec,
technical spec, code/test, etc.) for each change within the
enhancement. Resources are generic skill sets; the resource pool also
contains the generic resources with an availability of 10,000% in
order to eliminate resource constraints.
Each month, we replace the generic skill set resources with actual
people and level the release plan. Our goal is to see when an
enhancement can complete given the following: 1) the resource's
baseline commitments, 2) the resource's other enhancement commitments,
3) the resources planned vacation, 4) business priorities. We level
with the following settings: 1) week-by-week, 2) priority, standard,
3) leveling can create splits in remaining work. Once we get the
resourcing the way that we like them, we use the Deadline field to
mark the target release date for the enhancement and save the plan to
the resource pool. From then on, we use % complete to track the
progress in order to assess the resources' ongoing availability. We
use custom filters to hide completed enhancements.
Until now, each month as I would enter the initial people in place of
the generic resources, I'd look at each person's availability and
enter the available assignment unit for each resource. In the case of
varying availability, I'd approximate to get as close to 100% as
possible, sometimes changing a particular deliverable if it fell in a
time period with higher availability. However, if circumstances cause
a resource to be replaced, I'd have to do this again for the new
resource. Also, if the sub-team leader changes baseline
availabilities, the enhancement assignment units may no longer be
optimal. However, the number of enhancements each month was
manageable, and the result was a tight plan with nice-looking unbroken
Gantt bars.
When I first set up this structure, I played with different schemes
for working with assignment units. When I left units at 100% and
leveled day-by-day, Project would shift all the tasks out past the
finish dates of baseline tasks. When I manually changed the units to
fit the remaining availability, then it leveled nicely. I moved to
week-by-week leveling with splits because it just seemed to eliminate
some over-allocation problems on odd days that weren't really
problems.
Now, however, we have a major upgrade planned that is using many
resources. We are planning this effort in its own project plan using
the resource pool. Tasks are time-boxed. The same activity may be
represented by several tasks because the hours assigned vary by
half-month to half-month. Resources were assigned to these tasks and
saved to the resource pool. Now we needed to assess what this does to
our ability to meet the enhancement demand, both new work and work
underway.
I decided to try assigning everybody at 100% to everything to see if
simplifying this would still give me the same results as manually
setting the assignment units. It still shifts everything past the
finish of baseline tasks. When I level week-by-week, what happens is
that on a daily basis, the resource is under-allocated, and all the
remaining time is shoved into Friday, causing an over-allocation.
Since I set my timescale to Months/Weeks, the resource graph shows
everyone at 100%, even though a daily graph might show
40%-40%-40%-40%-340%. The Gantt bar looks like a spectrograph, with
lots of broken lines separated by dots. It does appear that higher
priority tasks are finishing before lower-priority tasks, but it also
looks like Project is trying to start them all at roughly the same
time. Also, there are some weeks of under-allocation by as much as 70%
utilization.
As a test, I took one resource and manually entered their units on all
their tasks. The result was to shorten their overall duration by three
days. It didn't seem worth it to me to go back to manually entering
the units for that little optimization, considering the fluidity of
the upgrade estimate and resource decisions. In previous posts, I
asked about leveling contours that are essentially "fill in the gaps"
contours like NIKU's Project Workbench does. I do understand the MS
Project only delays work and breaks up work, but does not adjust units
on a day-by-day basis in order to fill the gaps in availability.
Am I setting things up as best as I can? I can't see how always using
100% availability can work here considering the way that we have
baseline activities that enhancements must schedule around. I'd hate
to have to keep manually entering remaining availability on
enhancement assignments each month once the upgrade is complete.
I know this was long. Thanks for making it this far.
Steve Schacher