Proper Leveling Techniques

B

Bryan Andrews

To work from an earlier example:

We have 10 illustrations to create and we have them broken out
into separate tasks. These should not be assigned finish to start because
theoretically i can assign them to 10 different designers which would allow
me to complete them in an hour -- and there is nothing about the first
illustration that must be completed before i can start the second
illustration.

I happen to have 1 designer available so i will assign him to all.

Since these are all set to start at the same time, the second i assign the
second task (and third and forth, etc) the resource is overallocated. What
is the preferred leveling method for people. I understand that you can click
Level or have Automatic Leveling, but is this what most people use? Or do
people jsut adjust schedules in resource usage as suggested earlier?

If adjusting the schedule is one way, how do you effectively adjust task
schedules for without creating constraints on the tasks? Which view is
actually used to effectively achieve this?

If you are manually leveling, are you just adjusting delays? Is there a more
intuitive or graphical way to do this? I would think there would be an easy
way to control priorities as well by dragging tasks around...

Thanks for any thoughts.
 
G

Gerard Ducouret

Hello Bryan,
You are right: dependencies such as FS or SS, formalize only technical
requirements. Not resource load management.
Personally, I would use the Manual leveling otherwise the Gantt chart will
be wavy and you'll get sea-sick.
You can alter the leveling algorithm with the Priority field (value from
mini = 1 to maxi = 1000) in the task information dialog box.
As previously said, you can undertake strictly manual leveling in several
views such as the Resource Usage, but it may turn out to be cumbersome.

Gérard Ducouret
 
B

BAndrews

Is there any other way to schedule tasks that i do not know about that does
not create Constraints?

So am I to understand that if you want to properly level resource
assignments you have to create all the tasks as "start as soon as possible"
and then level either by:

1. creating priorities and using the level button
2. insert your own leveling delays manually

What would be ideal is some sort of "task leveling linkages" or a gannt view
that allows you to drag a task to the position you want it to assume in the
leveling priorities.

Any other thoughts are appreciated.
 
S

Steve House [MVP]

Chiming in here. There are many approaches possible. In your example, I
don't know that I would break out the 10 drawings into 10 separate tasks at
all. Why micro-manage the artist's workday? - he's perfectly capable of
organizing his work himself. I'd have just 1 task "Prepare 10 Drawings" and
assign the artist to it, letting him decide whether to do them in some order
or to do them at once or whatever. If there's a follow-on task that each
drawing acts as "feedstock" for, link that task FS as the successor task to
the drawing task and perhaps show a lead time of, say, -50% indicating that
the follow-on can begin when a certain number of the drawings are finished.
Let's say your 10 drawings take a day each. "Prepare 10 Drawings" will take
10 days. But if you find another artist is available you can add him to the
task and now it'll shorten to 5 days because they're splitting up the
drawings between them. As a PM I really don't care one way or the other
which of them works on which drawing - I leave it to them to decide that
between themselves.

As for automatic versus manual leveling, I'm a strong proponent of
triggering leveling manually. With automatic, if you assign a resource and
the assignment causes an overallocation, Project immediately moves one or
more of the tasks. In many cases that results in tasks flying about the
screen without any apparent rhyme or reason. But I can only do one thing at
a time and for all Project knows I might have been just about to do
something that would have fixed the allocation problem anyway, without the
need for its intervention. And there may be better ways to resolve an
overallocation than leveling anyway - instead of delaying one of the tasks
in conflict, maybe there's another resource I can substititute - MSP has no
knowledge of that sort of thing. Or maybe both of the tasks have a bit of
slack time so I could leave 'em in parallel, reduce the resource to 50% on
each, and live with the fact that they now take twice as long to complete -
with enough slack time it won't make any difference in the overall project
schedule anyway. Leveling is a valuable tool but I don't want it doing its
thing until I'm good and ready for it to.

Remember Project is just a tool intended to aid you in making your
management decisions - it won't make any of them for you nor should it be
expected to. It's a glorified calculator, not an AI based expert system,
and it has no knowledge of your business objectives or the best techniques
to apply to achieve them.

Hope this helps
 
I

Ian Coletti

Hi Bryan,

I agree with the other responses. Here's my two cents:

In regards to leveling, I would always recommend using manual leveling as
opposed to automatic. Using manual leveling gives you much more control and
as Steve said, automatic leveling will do just that when Project sees an
overallocation. I personally like to have control when it comes to adjusting
the schedule. With either approach, you can use "Clear Leveling" to remove
all leveling efforts. Using Manual Leveling and playing with different
options to see what the results are is generally a good management tool.
Create your tasks, set the options, manually level, evaluate results, clear
leveling, and then try another. That's the general process.

With your scenario, if you don't want to use Steve's recommendation of a
"one-liner" tasks for all 10 illustration efforts (which is effective as
well), I would follow Gerard's advice on using the "Priorities". You will
have to do this if you are only assigning one resource and are not using
constraints or dependancies to manipulate the order of work. A quick way to
do this is to add the "Priority" field to a Gantt chart view (for example)
and adjust the priorities to the illustrations so that they are all unique
(in ascending or descending order if you have a preference of which is
completed first... otherwise, just unique). You'll need to set the
"Leveling Order" on the leveling options window to "Priority, Standard" to
level based on priority. The 3 check boxes aren't really relevant if you
only have one resource except the third "leveling can create splits in work",
which will split the work for an individual task based on the resource's
availability and also means that the work is not required to be contiguous.

Remember the "Clear leveling" feature. It's your best friend when using
different leveling scenarios / features in Project!

Best of luck!

Ian Coletti, PMP
(e-mail address removed)
 
B

BAndrews

So I was using that example as a discussion point in an attempt to clarify
my question:

How do people level?

I know the usual suspects but i am trying to ascertain if we just are not
aware of ways to do this that others are using.

Is the correct method to level for a single resource limited to the
following:

1. Click Level (or automatically level) which essentially adds leveling
delays
2. Add priorities then click level to manage the task orders
3. Or Manually add leveling delays in the Leveling Gannt

Am i correct to assume that there is no way to schedule a task for a single
resource (for leveling purposes) other than the methods noted above without
adding a constraint?

When we are scheduling we have a lot of tasks that we have to deal with like
this (that do not have real dependencies) which is the reason behind my
question...

The way we level is to manually click level with Priority set. This is
arduous at best though and begs for some sort of graphical way to
reprioritize (by dragging or otherwise) the order in which the tasks occur.
Even the leveling order could be modified to provide a little more
flexibility...

Thanks for any thoughts on this.... not trying to drag this out. :)
 
S

Steve House [MVP]

I'd set priorities to describe a perferred order if any, add the resource,
and use the leveling tool. I'd trigger leveling manually rather than
automatically after exmining the plan ti decide if introducing task delays
was the optimum thing to do in that particular circumstance. I might refine
things by manually editing the Leveling Delays but Project has a much
broader view than I can internalize so I'd use the tool Project provides.

--
Steve House [MVP]
MS Project Trainer/Consultant
Visit http://www.mvps.org/project/faqs.htm for the FAQs
 
J

John Sitka

In the case of the single resource across 10 tasks use "No links" and "No Priorities"
Level manually by ID.
The ID is the technical "order" of events but as you say there is no order so just do it by ID
because you don't care.Attach the lowest ID and highest ID in the set to milestone tasks and allow
the rest of your plan to attach to those via constraining links. Collect or enter actuals vs. each task and
move the tasks up in the ID "order" (drag and drop) in the task table on the left of the Gantt
and then relevel that resource only, again by ID. That is move the tasks up in the order that have
actual daily completeness or progress made on them This then tracks the reality of the situation.
To level that single resource only; highlight a task with that resource in split screen and highlight
the bottom screen when in resource usage view. Call leveling, Level that resource only.
Don't bother with dragging and dropping the colored bars in the graphical right hand screen
as it adds constraints, drag and drop the task rows in the table. The above may not be explicitly
exact but the concepts of level a single resource by ID; "No links" and "No Priorities";
and using the split screen is there, takes a little practice

I like Steve's answer about using a single task. But if you really need to know which illustrations
are complete "sooner" rather than later then ten tasks is a fine way to do it. At least as a model which
can be utilized in other situations as well, probably not for single hour tasks but day long ones for sure.
There is a huge advantage to the multiple tasks because it removes constraints on other activity that may
be dependent on having at least one of those illustrations available. The set of 10 as a single task
may becomes a hidden constraint in itself. There is no reason for example that another resource
that could be adding anotations to those illustrations (or color) should not be "In the know" that
some of items in the set of ten are indeed complete; and ready for additional effort. Plus
traditional management places a much higher importance on knowing how many of the illustrations
are done rather than how you have optimized the flow of work thru that resource. So to get
real value out of your efforts you need a scheduling approach that both "plans" and increases
performance by explicitly defining and tracking focused effort on single tasks with as few buffers
as possible.
 
B

BAndrews

OK, so following this thread and the assumptions that my organization would
like to use project in "one of many proper methods" -- which is to use
priorities and delays to properly schedule tasks... what is the proper way
to push out tasks that did not begin on schedule?

For example, i got my project plan created and levelled perfectly with the
first task to start on 12/1 of this year. We pushed forward through tasks
until the 10th at which time the project was put on hold for another project
(that was not in Project Server). A week later we come back and try to pick
up where we left off....

What is the best way to move the tasks that have not been completed to the
current day and not change any of the leveling?

I know you can use Tools->Tracking->Update Project to "reschedule
uncompleted tasks to start after" but this seems to put "do not start until"
constraints on the tasks. I can use Tools->Tracking->Update Tasks and update
the actual start date, but this doesn't seem correct (after glancing at it).

It really would be cool to have some sort of "leveling dependencies" that
would allow you to keep the order of tasks in tact (and move them around)
without misusing real dependencies.

Thanks for any thoughts on strategies here.
 
S

Steve House [MVP]

You're on the right track with the Tools, Tracking, Reschedule Uncompleted
Work tool. First enter in actual progress showing what work was done when.
For simplicity let's ignore that this is a holiday period. Today is the
28th. Let's say task Fidget which is expected to take 2 weeks was supposed
to start last week on Monday the 20th. Duration = 10 days, start 20 Dec,
finish 31 Dec. It actually started one day late, on the 21st. We worked on
it all day the 21st, 22nd and 23rd and then it got interrupted. We should
have worked on the 24th, the 27th, and today but for some reason we didn't.
So the first step is to post to the schedule what we actually did. Display
the tracking table and enter in Actual Start of 21 Dec and Actual Duration
of 3 days. Note that you must enter this into the "Actual Start" and
"Actual Duration" fields, NOT the plain "Start" and "Duration" fields in the
Entry table. Project now calculate the task is 30% done (3 done/10 to do)
and shows a new forecast Finish date of 03 Jan, one work day later than
originally planned due to the one day late start. BUT there's work we
should have done in the past that we didn't do. We don't have a time
machine that lets us go back to do the work we missed so the only thing we
can do with it is move it to the first time that we CAN get back to it,
namely the first workday in the future (assuming here we can get back to
work on it then). So here it is the evening of the 28th - we use the Tools,
Tracking, RescheduleUncompletedWork after 28 Dec tool to move the unworked
part of that task to begin anew tomorrow the 29th. Now it will show Start of
21 Dec, Duration of 10 days, Actual Duration covering the 21st, 22nd, and
23rd. Then there's a split with the dotted line covering the 24th, 27th,
and 28th. The work resumes the 29th and the new Finish is now projected to
be at the end of 06 Jan. Any tasks dependent on this one will also be
pushed out accordingly by their links. If resources working on this task
were already assigned elsewhere on the new dates this now takes place,
namely the 3rd, 4th, 5th, and 6th and those tasks were not linked to this
one so they would already have been moved by their links, thus creating
overallocations on those days, you'll need to re-level those resources
accordingly.
 
B

Bryan Andrews

Thanks Steve,

What if those tasks have not even begun yet and have no actuals?

I really wish there was a way to create "leveling dependencies". Do you
think this would be possible with a "Project Addin"? :) I say this because
it would really give some piece of mind when you are pushing schedules
around. In the scenario you created, once i relevel - it is extremely hard
for me to track all of the changes and be sure that the leveling order has
not changed... perhaps they have not, but when the project gets to about
1000 tasks it gets rather difficult.

Seriously though i am starting to see that task dependencies are probably
misused by many just for ease of use... does this sound accurate?
 
S

Steve House [MVP]

As for links being often misused, my opinion is yes. All too often links
are used to force a specific timeframe onto the project. That to my way of
thinking is putting the cart before the horse. Links are basically to be
used to model the logic of the process the project uses to create the
deliverables. Erecting the walls of a building is a predecessor to putting
on the roof because Nature and gravity doesn't give us the option of
building the roof in midair and then tucking the walls in under it later. A
link indicates a mandatory sequence, not simply a desired sequence. The the
timeframe is a product of the process model, not the other way around.

Your "leveling dependencies" can be achieved indirectly throught the use of
task priorities. Joe Resource is assigned to three tasks A, B, & C that can
be done in any order. You'd like him to work on them in order of B, C, and
A. So you assign B a high priority, C a mid-level priority, and A a low
priority. When you level, if they are in conflict A will be the first to
get delayed, then C, with B staying put.

Why do you need to make sure that the leveling order is not changed? In
many cases if delays etc require the plan be modified the leveling order for
non-dependent tasks SHOULD change! When the sequence actually matters, use
predecessor links to model it. Remember that leveling ONLY has any effect at
all when one or more of a group of tasks has to be delayed because the
resources assigned to them are booked to do more work in a given time than
they are actually able to do. Joe was going to work on task A, B, & C (each
3-day duration) whose order doesn't matter and we presently arbitrarily have
him doing them in that order in our project. B is also a successor to task
X that is done by someone else that happens to be ending just about the time
A ends. So Joe's tasks start out with the sequence ABC. But X gets delayed
a couple of days so now B is pushed while A & C stay in place ending up with
B pushed to the same days as C, Joe now being double booked those days and
left idle for the 3 days he originally was scheduled to work on B. What's
wrong with you letting Joe know that now he should work on his tasks in
order of ACB, working on C while he's waiting for X to end to allow B to be
able to start?

If you need to retain the original plan for comparison purposes, that's what
the Interim Plan slots are for, storing the task's original start and finish
so you can see what it was like before changes were introduced. The
Leveling Gantt view shows preleveling and post leveling schedules as well.

I was using actuals in my example for completeness but the principle of
rescheduling the incomplete work applies whether or not the tasks in
question have actually started. If it is a common occurance that tasks
aren't being worked according to plan you have an even bigger issue - you're
going to a lot of trouble and spending a lot of money developing a plan that
establishes when work must take place in order to meet the business
objectives that gave rise to the project. You came up with a plan that is
the optimal strategy to bring the project in on-time and in-budget. Your
project depends on the resources doing what they've been told to do in the
sequence and in the time frame they been directed to work on it. So why
aren't your resources doing what they've bloody well been told to do and
working the plan you published? It's inevitable that it's going to happen
every once in a while but if it's the norm something is seriously wrong with
your project communications and responsibility matrix.
--
Steve House [MVP]
MS Project Trainer & Consultant
Visit http://www.mvps.org/project/faqs.htm for the FAQs
 
B

BAndrews

So let's say you have a project that has been going for a month and you have
to add new tasks to it... what is the proper method to get all tasks to
start after the current date and to be leveled. I assume you do not want it
to have any date constraints on it, yet you normally would not want tasks to
be scheduled in the past... is there some setting that allows tasks to start
as of the current date but puts no constraints on it? I know about the
Options -> Scheduling->New Tasks setting...I guess "start no earlier than"
constraints are ok in this situation?

Steve thanks for the detailed responses. Much of these kinds of questions
are undocumented and your (and others here) responses are greatly
appreciated.
 
B

BAndrews

The nature of our business is as such that we have service based project
work, internal development that happens many times around the project work,
internal project work (sales support, etc) as well as ongoing services that
we are trying to fit into an overall management plan... and we are a small
company.

We may have to stop certain tasks to engage other tasks. While this may not
sound like a perfect world scenario, it is reality in many situations. It
is our goal to be able to show the impact of moving resources to other tasks
and to have accurate revised schedules.

So if a task has been "backburnered" say for 30 days (and no work has begun
on these tasks), and there are gaps in the resources time for whatever
reason - this will prevent leveling from helping to reschedule those old
tasks (or so it seems -- leveling will not bring unschduled tasks current).
Should we use Tracking -> Update Tasks and change the actual start date to
the current date to get these tasks back in the current leveling "playing
field"? Is there ever a time that we should be using "Tracking -> Update
Project-> Reschedule Unfinished Work"?

Thanks for the thoughts!
 
S

Steve House [MVP]

Actually what I've been saying is you SHOULD be using the Tools, Tracking,
Reschedule Uncompleted Work and NOT using Leveling to try to bring the tasks
to the current date or the future. Leveling will never move tasks - past,
present, or future - unless a specific condition exists. That is, the
resource doing that task is also booked on other, higher priority, tasks
that are scheduled at the same time so that the total work he must do in
that time frame exceeds the time allowed to do it. If Joe is scheduled to
be on task A 100% for 8 hours on Monday and ALSO scheduled for task B 100%
for 8 hours on Monday, he's booked to be in two different places at once and
is expected to somehow magically produce 16 man-hours of work during a
single 8-hour time period, a physical impossibility. Leveling will move one
of those tasks to Tuesday if he's free then. That's all leveling ever does.

Try this little experiment...

1: Create a new project plan with a start date of 01 Dec. Default standard
calendars and automatic leveling turned OFF.
2: Enter 6 tasks A (3d), B (4d), C (5d), D (6d), E (5d), F (4d), no
constraints on any of them.
3: Link those tasks A->B, B->D, A->C, C->D, D->E->F (note B and C are both
successors to A and predecessors to D so they go in parallel for a few
days).
4: Create resource Fred and assign him to all tasks 100%. This results in
Fred being overallocated for the 4 days he's expected to work on both tasks
B and C.
5: Level resources. Task B moves out to the following week because that
(instead of moving C) results in the least pushback of the finish date. All
the later tasks also move driven by their links.
6: Using the tracking toolbar for simplicity, show task A 100% complete and
task C 50% complete.
7: Use the Reschedule Uncompleted Work tool with work resuming after
tomorrow, 31 Dec 04. The project was interupted and work resumes Monday 03
Jan 05. All of task B and the unworked portion of C get pushed to next week
and the rest of the project gets pushed out to later in January. B, D, and
E automatically get SNET constraints of 31 Dec 04 set by the reschedule
tool.
8: Fred is again overallocated because B and the unworked part of C are
once again happening at the same time.
9: Resource level once again. C doesn't move and the unworked part of C
will be scheduled next Mon and Tue. B *does* move and gets pushed to next
Wed, Thur, Fri, and Mon. The rest of the task's D, E, and F also get
adjusted to a few days later in Jan because of their links.

--
Steve House [MVP]
MS Project Trainer & Consultant
Visit http://www.mvps.org/project/faqs.htm for the FAQs
 
S

Steve House [MVP]

See my reply to your next message...

BAndrews said:
So let's say you have a project that has been going for a month and you
have
to add new tasks to it... what is the proper method to get all tasks to
start after the current date and to be leveled. I assume you do not want
it
to have any date constraints on it, yet you normally would not want tasks
to
be scheduled in the past... is there some setting that allows tasks to
start
as of the current date but puts no constraints on it? I know about the
Options -> Scheduling->New Tasks setting...I guess "start no earlier than"
constraints are ok in this situation?

Steve thanks for the detailed responses. Much of these kinds of questions
are undocumented and your (and others here) responses are greatly
appreciated.
 
B

BAndrews

I guess what I was looking for here is that it is OK to use
Tools->Tracking->Update Project->Reschedule Unfinished work rather that
Tools->Update Tasks->Change Actual Start Date.

The reason i am trying to clarify is because the first option creates
constraints "Do Not Start Until" whereas changing the Actual start date does
not add constraints.

Really just trying to understand when its appropriate to allow a "Do Not
Start Before" constraint to be added.... rather than working with some other
method such as leveling delays or actual start dates to shuffle these tasks
around. The concern being that i may actually want to use different
constraints on these tasks and how would that affect me in the long run.

So I will take this as: It's perfectly acceptable to use "do not start
before" constraints to move tasks around? I guess this means setting the
default Scheduling option to schedule new tasks "Start on Current Date"?

I do understand btw what you are articulating below with respect to
leveling...
 
S

Steve House [MVP]

There is no such tool as "Change Actual Start Date." If there's an actual
start, then by definition it should never change unless you've made a typo
and entered the wrong date when you put it in. If it's a real Actual Start
Date that is describing a historical event - Joe was supposed to fidget the
widget last Monday and that's when he did it - and the entry in the project
file should always reflect that reality. If no work has been done on task,
the there is not and should not be an Actual Start entry. I hope you're not
putting in fictitious Actual Start entries in order to kludge the schedule
into looking like what you think it ought to look like are you?

I need to verify here that you are aware that there are three sets of start
and finish fields - Start, Baseline Start, Actual Start, Finish, Baseline
Finish, and Actual Finish. Start and Finish are what your schedule calls
for - your plan. Baseline Start and Finish are your original starting plan
before work was done - what you thought you would be able to do. Actual
Start and Finish are what you really DID do. Once work begins, the planned
dates (Start and Finish fields) reflect what you've done - history - and
what you still plan to do - forecast. When you enter a date in the Start
field it does NOT establish an actual start - instead it establishes a
planned start with an SNET constraint. You only get an actual start when
you enter a date in the Actual Start field. The Start and Actual Start do
interact but only in one direction. If I type "30 Dec" in the Start field
it just goes that one place while setting a constraint. But if I enter "30
Dec" in the Actual Start field it ends up BOTH the Start and Actual Start
fields

It is NEVER appropriate to use leveling delays to bring forward work or
otherwise to force the tasks to end up on certain dates - leveling has
nothing to do with that. The only time leveling delays should be anything
except blank is when the resource leveling tool has introduced them to
resolve resource overallocations. Likewise, setting the default scheduling
option to "New Tasks Start on Current Date" doesn't have anything to do with
rescheduling existing tasks either. That setting is just what it says-
where should tasks being ADDED to the plan be placed? Surely you're not
deleting a delayed task and re-entering it as a new new task are you?

I don't know why you're so adament againt using SNET constraints in any
situation. I'm one here who criticizes what I consider to be the overuse of
constraints of all types all the time but that's only because people
frequently are trying to use them to force an arbitrary schedule onto their
plan and by so doing forcing an end run around Project's intended purpose.
But if there's a legitimate reason for them, by all means use them. If a
vendor won't deliver needed parts before 15 Jan, a SNET of 15 Jan on the
task that requires them makes perfect sense. Likewise, in the case of
moving a task that was supposed to be done last week but wasn't worked on
for some reason, moving the undone work forward to next week by letting the
Update Project tool apply an SNET constraint is perfectly ok - that's what
constraints are for. In general the purpose of a constraint is to control
the placement of tasks when something external to the project instead of the
task's logical predecessor relationships and the availability of resources
controls the task's dates. Since new tasks added now that the project is
underway can't be worked on in the past (assumption being that work on a
task never takes place before it is entered in the plan) even if they could
have been according to their predecessors, a SNET of the next work day on a
newly added task is perfectly appropriate. Work on planned tasks that
SHOULD have been done last week but wasn't, likewise, can only take place in
the future, thus a SNET of the first day work could now be done is also
perfectly in order.

You should never be "shuffling tasks" as you put it. Revising the schedule,
certainly. But the function of Project is not to illustrate a schedule you
have come up with by hand. It's job is to tell YOU the schedule you can
have that gives you the optimum project timeline and budget. You don't tell
it the schedule, it tells YOU the schedule.
--
Steve House [MVP]
MS Project Trainer & Consultant
Visit http://www.mvps.org/project/faqs.htm for the FAQs
 
J

John Sitka

Way to end the New Year Steve,
Your comments are extremely valuable
and have helped me more than any other
source.
It's job is to tell YOU the schedule you can have that gives you the optimum project timeline
and budget. You don't tell it the schedule, it tells YOU the schedule.

Thanks to you and all the others on the Project
groups, that have changed the way I "think" about
scheduling.
 
S

Steve House [MVP]

Thanks for your kind comments, John. I see by your return email addy we
share the same ISP. I'm located in Hamilton. Are we by chance neighbors?


--
Steve House [MVP]
MS Project Trainer & Consultant
Visit http://www.mvps.org/project/faqs.htm for the FAQs
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top