Allocating and Managing Constrained Resources

This chapter provides a variety of techniques for monitoring the resources used within your project. The emphasis is on human resources, but the principles can be applied to any project resource.

Geometric Resource-Optimization Techniques

Resource Leveling and Resource Smoothing

Two important resource allocation tools available to a project manager are resource leveling and resource smoothing. These techniques make use of slack (also called float) which, as you learned in Lesson 7, is the amount of time that a task can be delayed without causing a delay to subsequent tasks or the project's completion date. Understanding the distinction between the resource leveling and resource smoothing can be tricky, so let's start with basic definitions:

  • resource leveling: An "approach to project scheduling whereby task start and end dates are determined by the availability of internal and external resources…. Resource leveling will resolve over-allocations by moving task start and end dates, or extending task durations in order to suit resource availability". Resource leveling may modify the critical path or extend the duration of the project, depending on the availability of critical resources, and the ability to accomplish required leveling using available slack/float.
  • resource smoothing: "A scheduling calculation that involves utilizing float or increasing or decreasing the resources required for specific activities, such that any peaks and troughs of resource usage are smoothed out. This does not affect the overall duration".

Because of the complexities involved, both resource leveling and resource smoothing are typically done using project management software such as Microsoft Project. A blog post for the Association for Project Management distinguishes between resource leveling and resource smoothing as follows:

Resource smoothing is used when the time constraint takes priority. The objective is to complete the work by the required date while avoiding peaks and troughs of resource demand. Resource leveling is used when limits on the availability of resources are paramount. It simply answers the question "With the resources available, when will the work be finished?"

In resource leveling, the project manager moves resources around in the schedule in order to level off some of the peaks and valleys of resource requirements. Task start dates are modified as necessary to use slack wherever possible to reduce resource conflicts. If necessary, activity start dates are shifted further to eliminate resource constraints; these shifts beyond initial slack constraints extend the duration of the project.

Even after judicious resource leveling, you may still find that demand for one or more resources exceeds existing constraints in order to meet a schedule requirement. For example, you might find that you simply don't have enough experienced electricians on-staff to complete a task by a fixed milestone date. In that case, you will need to consider adding resources to the project – for example, perhaps by hiring some electricians from another firm. But remember that bringing on new resources may temporarily slow the project due to the time it takes for both the project team and the new resource to adjust. When facing insurmountable resource constraints, you might find that you simply have to extend the schedule or modify the project's scope.

Note that resource leveling, as described here, is rarely appropriate in the world of software development projects. Unless the people on the project have experience that is relevant to the tasks to be accomplished and have worked on similar projects with well-defined scope, then resource leveling may not prove useful. However, resource leveling can be useful in software consulting firms that perform system upgrades for clients and have established a repeatable process for doing the upgrade.

Reducing Resource Use Through Schedule Compression: Yes and No

Managers often assume that the schedule compression techniques discussed in Lesson 7 can have the side benefit of reducing indirect costs for resources like maintenance personnel, administrative staff, or office space. This is true in some fields, making it a very useful option. But it doesn't typically work in the IT world, as documented by Steve McConnell in his book Rapid Development: Taming Wild Software Schedules. He explains that focusing too much on schedules at the expense of other resource-intensive work such as planning and design will almost always result in a late project:

You can use the strongest schedule-oriented practices, but if you make the classic mistake of shortchanging product quality early in the project, you'll waste time correcting defects when it's most expensive to do so. Your project will be late. If you skip the development fundamental of creating a good design before you begin coding, your program can fall apart when the product concept changes midway through development, and your project will be late. And if you don't manage risks, you can find out just before your release date that a key subcontractor is three months behind schedule. You'll be late again.