Correcting Schedule Problems
The first project that fell behind schedule was the renovation of the first cave to be used as shelter; the job was continually disrupted by disputes with a previous tenant. Projects have been falling behind schedule ever since, including a high percentage of software projects. I’m going to try to give you some tips which might help to bring your software project back on schedule and keep it there, in this article.
Project managers of software projects should be using the best practices in the industry to manage their projects, including project schedules. The PMI are generally acknowledged to be the leaders in establishing these best practices and their "stamp of approval” is the PMP accreditation. The best practices can be learned in any good PMP course, or other PMP exam preparation product. Attaining the PMP accreditation is good insurance against having to use the tips and tricks described in this article. Investigate the possibility of accreditation if you haven’t already done so. I’ll explain how you can do that at the end of the article.
There are several ways to find out that you’re behind schedule and several different interpretations of what behind schedule means. The project manager’s measurement tool for project performance to schedule is the schedule itself, usually captured in a project management tool such as MS Project. A Schedule Performance Index (SPI) of less than 1.0 indicates a project that is behind schedule. This may or may not indicate that corrective action is necessary; it all depends on the degree and which way the index is trending. Another means of determining your project is behind schedule is missing a key milestone such as a gate/phase exit/business decision point. Yet another indicator is missing the delivery date for a key deliverable. Most project managers would much rather find out the project is behind schedule using the SPI than having it brought to their attention by an irate executive sponsor, or customer.
Tip #1
Always keep your MS Project (or Primavera, or other project tool) file up to date and measure performance to schedule frequently. Keeping the file up to date requires you to mark work complete which has been completed. Note that this does not mean marking it as complete when the programmer says he or she is "95%” complete, or "99%” complete, but when the work is actually completed and you can verify completeness by its presence in the source library, or build. Updating also entails changing the schedule to reflect any changes in the work being done or how it is done. Changes may come to you via an official change request, or you may be informed by a QA tester that they are changing the order in which they will run tests. Make the schedule reflect the work planned, the sequence it is planned in, and the forecast dates by which the work should be complete.
You should use your schedule to measure your project’s SPI at least once a week. SPI is simply the amount of work which has actually been completed divided by the amount of work which was planned to be completed by the measurement date. There are a number of different ways of arriving at these 2 figures, but all of them require an up to date schedule.
How Far Behind Are We?
How far behind you are will determine how drastic the corrective action will be. You will know exactly how far behind you are when you know the SPI. Knowing how much work was planned to date and how much has actually been completed allows you to quantify how far behind you are in terms of hours, days, weeks, or months. Being 50 hours behind schedule on a 12 month, 50,000 hour project won’t cause much panic. Being behind 10,000 hours on the same project should cause panic.
Knowing how your SPI is trending is another good bellwether for corrective action. You will normally establish a threshold which will trigger corrective actions. If your SPI sinks below this threshold you will take some corrective action, and if it doesn’t you won’t. Watching how your SPI is trending may provide you with an opportunity to avoid running behind schedule. Let’s say that 3 weeks ago your project was actually ahead of schedule with an SPI of 1.05. Last week it dipped slightly to 1.02 and this week it went down to .98. You may have set your threshold at .95, but the downward trend of your performance indicates that you can expect to exceed that threshold by next week so why wait to take action?
Why Are We Behind in the First Place?
The first step to take is to determine the root cause of the slippage. Once you know the reason for the slippage, you will have a better idea which one of the many remedies to apply and how to prevent another slippage. By root cause I mean what went wrong that caused the deliverable to be late or the milestone to slip. There are numerous good courses that will train you in conducting a root cause analysis session, but they will all have this in common: the repetition of the question "Why?” until the source of the failure is found.
Determine how many activities are actually behind schedule using your project schedule. MS Project will actually produce a report showing every slipped item in the WBS which is handy for this type of exercise. Once you’ve determined which activities are behind schedule, isolate all the slipped activities that are on the critical path. If the list of slipped activities on the critical path is limited to one or two items, go ahead and determine the root cause of that slippage. If there are many slipped activities on the critical path, your root cause analysis will have a different focus.
Group the slipped activities into meaningful categories, where you are analyzing a significant number of slipped activities. These may be grouped by function (C++ programming, database design, QA testing, etc.), they could be grouped by application (User Interface, database, scheduling function, etc.), or by phase. Look for the root cause of the slippage for each item in the group, focusing on a common cause. There may be a cause that is common across every item in the list of slipped activities.
Solutions by Cause
Bad Planning
It will become apparent that there is a problem with the planned schedule for your project as you isolate the slipped activities. For example, let’s say that every C++ programming activity on the critical path has slipped (at least all those whose due date has passed). This is a good indication that there is a problem with the duration/effort estimation for C++ programming. You can verify this by checking for slipped C++ tasks that are not on the critical path.
The solution to a bad planning problem that applies to an entire function or project phase is to re-plan. Apply the learning from your root cause analysis to the re-planning exercise so that you don’t repeat the mistake. There are 2 scenarios that you should plan for with this exercise: a new schedule with extended milestones based on the same resource set you are working with and additional resources and budget to complete the project on the same schedule.
Unidentified activities are another indication of bad planning. Activities that are essential to building the deliverables that were not identified in the planning phase may become apparent as the team attempts to build deliverables. Be sure that the activity is a valid and essential part of the project before approving the work.
Tip #2
Analyze the effort/duration estimates for QA testing activities when you determine that programming activities have been under-estimated. Estimates for programming effort/duration may have influenced the estimates for QA testing (e.g. the QA estimates may be based on the programming estimates). You will want to re-visit those estimates to ensure that the same mistakes don’t propagate to testing.
The new plan must be introduced via your change management process, so author a change request with the two scenarios, offering your executive sponsor the option of delaying implementation of your project, or acquiring the additional resources that would be required for delivering the project to the original schedule. You should be able to forecast what the decision will be based on the way priorities are defined in the project charter (e.g. schedule first, budget next, scope last etc.) but you can’t take the decision for granted. Be certain that all bad estimates have been accounted for in your request; your executive sponsor will not want to approve change requests week after week as you uncover more bad estimations.
The change request may not be the bombshell you might think it would be, if an aggressive schedule was planned initially but don’t spring the change request on your executive sponsor as a complete surprise. They should have been alerted to the possibility of a change request by virtue of their knowledge of the poor performance to schedule. If they were not aware of the poor performance for any reason, educate them before hitting them with the change request. You may even want to prepare them for this possibility by explaining how you intend to manage the project.
Resourcing
Your root cause analysis may determine that your schedule slippages are limited to tasks assigned to one particular resource. There are several possible causes for this:
- the resource’s experience level or skill set may have been improperly identified
- the resource is not performing to the expected level
- the resource is doing work not planned for
- the resource is not using the proper tools or methods and performance is suffering as a result
Performance issues are dealt with at a more detailed
level in another series of articles I’ve written entitled "Dealing with
Performance Issues”. What follows here is a distillation of the tips and tricks
detailed in those articles.
Improperly
Identified Skill Set
Replace the resource with someone from the resource
pool with the required skill set. Failing this, you will have to either engage
an external resource with the required skill set on contract. Return the
resource with the miss-identified skill set to the resource pool and correct
the HR profile of this resource.
Improperly
Identified Experience Level
You should attempt to replace this resource with
another from the resource pool with the requisite amount of experience. Failing
that, move the resource to a less demanding activity off the critical path.
Where the resource was thought to have senior experience and is mentoring a
junior resource, place the junior resource with another mentor. Where you have
a junior programmer performing activities requiring a "medium” or senior
experience, you need to provide the junior resource with the simplest
activities. Junior programmers will work best when paired with a senior
programmer who has the time to provide proper mentoring. Try assigning the junior
resource to administrative tasks where their experience level is not equal to
other tasks in the plan.
Poor Performance
The most straightforward remedy for poor performance is
to replace the poor performer. Although this is the simplest remedy, it is
seldom one that the project manager can exercise. Addressing performance issues
is beyond the scope of this article, however I do address performance issues in
another set of articles on this site and others titled "Dealing with
Performance Issues”.
Performing
Work Not in the Plan
This is more common in projects where the resource is
not 100% dedicated to the project, but can also happen with dedicated
resources. The resource fails to meet their deadlines, or meet them with
reduced scope because they have been performing work for another project, or
operational work.
Partial resources, who are not devoting the agreed upon
hours to your project, call for a more sharply defined division of the resource’s
time. Make the agreement specific as to hours or days. For example, rather than
a 50% split negotiate a 2.5 day a week split, or a 20 hour per week split. This
action alone won’t stop the pilfering but will allow you to monitor the
situation more closely and identify problems before they evidence themselves in
missed deadlines or dropped scope. Don’t forget to negotiate a return of the
time your project has lost due to past pilfering; this is time that your
project is owed and it is a valid aid to putting your project back on schedule.
Occasionally you may encounter other project managers
or operational managers who will engage members of your team in "skunk” works
that is work that is not officially sanctioned or budgeted for. Stop this in
its tracks. Approach the offending manager and let them know that the pilfering
must stop; inform the pilfered resource that they are not to devote any project
time to the "skunk” works, and that means any business hours if they are
devoted to your project 100% of the time. This may be difficult to do if you
are performing in a matrix environment, so don’t hesitate to escalate the
situation to your executive sponsor if you don’t get cooperation.
Incorrect
Tools or Methods
Using the wrong tools, no tools, or the right tools
incorrectly will lead to poor performance and missed deadlines or reduced work
products. The first step is to ensure that your project enjoys the correct tool
sets. Development tools (or SDKs) come with many of the web development tools
and training in the use of these tools should come with purchase of development
licenses. There are many tools that will improve productivity in addition to
these including tools that automate unit/function/system testing and tools that
automate builds. Tools that automate builds in particular can save the project
time that would otherwise be spent on fixing integration bugs.
Ensure that your project has the right set of developer
tools and then ensure that all developers, even ones that join the project part
way through the build phase, are properly trained in the use of these tools.
Developers who avoid using the tools, or who miss-use them, may indicate
inadequate training. Training and documentation are frequently overlooked when
purchasing software tools. These are critical features of any software tool and
should be part of the purchasing decision. Automated test tools in particular
can be complex and require adequate training before programmers can become
proficient in their use.
Changes
Your root cause analysis determines that your team is
bogged down in analysis of an avalanche of change requests and this activity is
preventing them from meeting deadlines and completing deliverables as planned.
You may believe that having a solid change management plan in place will
prevent this from happening to you, but change management plans are meant to
deal with the changes you receive, not to restrict the requests you receive.
Your change management plan should define how time is
set aside to analyze the requests for change the project receives and also what
happens when that buffer is depleted. There are 2 basic approaches to dealing
with this situation: either you issue another change request to add resourcing
to the plan, or reducing scope so that the additional change requests can be
analyzed or you shut down your change request input. These contingencies should
be implemented before the project is put behind schedule.
You have 2 issues to deal with when the project is
behind schedule, making up the lost time and preventing further erosion from
change requests. You can include the lost time in your scope resource increase
or scope reduction if you and your executive sponsor choose that remedy. You
will have to determine another corrective action if you choose to restrict change
requests. Possible corrective actions are: overtime, additional resourcing
until the schedule is caught up or a reduction in scope to allow the existing
resources to make up the lost time with their standard work schedules.
Tip
#3
Excessive change requests may be the root cause of your
schedule slippage but you should determine the cause of those change requests.
This analysis is not totally within your control, you’ll also need information
from the stakeholders authoring the requests. If conflicting stakeholder
business objectives are the cause of the "churn”, ensure that your requirements
sign off process accounts for each of the stakeholders’ business objectives and
then ask your executive project sponsor for help in stemming the flow of change
requests. Let them know that the extra work caused by these requests is putting
the project at risk and their help is needed to correct the problem. Resistance
to a restriction of change requests may be an indication that you need to
revisit your business case and either re-affirm stakeholder commitment to the
system the project is building, or re-visit the system design.
Iterative Projects
Each iteration in an iterative build approach is a mini-project
so falling behind on one iteration does not necessarily mean that all future
iterations are badly planned. The down side of the iterative approach is a
shorter time to react to scheduling problems, the up side is that you have more
opportunities to learn from past mistakes and apply those learnings to future
iterations.
Most of the remedies we have described are applicable
to iterative projects. The difference is that the threshold (e.g. SP variance)
established for implementation of the root cause analysis/corrective action
must be set much lower to preserve an iteration.
The discovery that you have underestimated the work
required to develop the deliverables planned for iteration 1 will not
necessarily mean that iteration 2 work must be re-estimated (the deliverables
and work required to build them changes across iterations so under estimated
work may only be applicable to the current iteration), however you should
investigate that possibility. Plan to perform a "Lessons Learned” session after
each iteration, or each major iteration. Quite often "Lessons Learned” will be
as good a source of information regarding the root cause for your slippage as a
root cause analysis session.
There will be opportunities in future iterations to
perform the work differently, perform work in parallel, implement productivity
improvement tools, work overtime, or any other strategy that might allow you to
do the same amount of work in less time. Allow extra time for training and to
accommodate the learning curves required to master the use of productivity
tools.
The iterative approach also provides you with
opportunities to correct schedule slippages by moving work from the current
iteration to a future iteration. Prioritizing the feature set for the system
before the build phase will aid in this exercise. Plan to move a higher
priority deliverable from the current iteration which is slipping to a future
iteration by "bumping” a deliverable of lower priority. Deliverables here are
typically features or functions in the business requirements set.
Solutions
Crash
the Schedule
Crashing the schedule is typically done by performing
activities originally scheduled to occur sequentially, in parallel. This is a
solution that is applicable to schedule slippages whatever their cause, and to almost
any development method. Check your plan for activities planned in sequence to
determine if scheduling them in parallel would shorten the schedule. Sequential
activities that lie on the critical path are obvious candidates for crashing
but don’t limit your search to the critical path. You may find that by
shortening non-critical path networks you can free up resources to add to the
critical path.
Examine the relationships between the sequentially
sequenced activities you have identified as candidates for crashing. The
criterion for a sequential relationship is a "hard” dependency, which is the
successor activity has a physical dependency on the predecessor activity. A
classic example of this type of dependency is the dependency of the framing
activities for a building on the curing of the concrete in the foundation of
the building. This appears to be a hard dependency but only applies to all
framing activity if the entire foundation is to be poured in one activity.
Pouring different segments of the foundation at different times breaks up this
dependency and allows framing to occur before the entire foundation is poured.
Now let’s take an example from the software development
world. It is true that you can’t begin development of a software system until
the requirements for it have been defined, but do you have to define all the
requirements before beginning any design activities? The answer is often "no,
you don’t”. Completion of requirements activities are frequently a sticking
point in software development projects. Stakeholders are hesitant to sign off
on requirements in case they miss an important requirement, or make a mistake
with their definition of an identified requirement. One method you can use to
break this log-jam is to have your stakeholders sign off on the requirements
they are comfortable with so that design can start on those requirements. You
need to ensure that requirements that are ready form an appropriate base for
your system, but once that has been established you can begin the build phase
of your project. Changes can still be made to any of the approved requirements
through the change management process.
Redefining
Features
The feature set in a software system delivers the functionality
that make up the objectives for the project. For most functions there are a
variety of features that will deliver the functionality and different features
will most likely require different amounts of effort to build. Let’s take the
log in security as an example. The software system being built requires a log
in function and the log in must be protected by a secure password. One means of
ensuring password security on an ongoing basis is to force the user to change
their password periodically, to maintain a password history and force the user
to select a password never used before. Another means of securing the password
is to simply enforce criteria for the password and make the user responsible
for their password. The second approach will be much less costly to build (and
to maintain).
Examine the features that are the most costly to
develop and ask questions. Does this feature deliver a promised function? Is
the feature essential to that function? Is there another, cheaper, means of
delivering the same functionality? Examine the feature set for any features
that aren’t essential to system functionality and change your plans to
eliminate those features. Examine the essential features for opportunities to
substitute less complex, cheaper features. These changes must be made by way of
a change request but showing the decision makers how the change will put the
project back on track and still deliver the necessary functionality should sell
the change.
Contingency
Reserve
Some projects will plan for a contingency reserve to
address unforeseen project risks and this may be the time to dip into that
reserve. Using the contingency reserve to put the project back on track will
require approval from the executive sponsor, steering committee, or other authority
in charge of the reserve.
Budget
Increase
Increasing the budget is the "brute force” method of
bringing the project back on track. The increase in budget may be used to pay
for overtime, or additional resources, additional tools, or all of these. Be sure
that the new budget for the project is sufficient to deliver all the project
objectives and meet the milestones before taking this change request to the
approving authority. Your sponsor may be able to accept an increase in the
budget at this point but will not be receptive if you go back in 2 weeks time
for another increase.
Schedule
Increase
The last resort is to increase the project schedule,
based on project performance to date. This action should not be taken unless
you have verified that none of the preceding remedies will allow you to recover
the project and deliver on time. Re-scheduling your project as a corrective
action indicates that it was improperly scheduled to begin with. Make certain
that all the estimating errors are corrected for upcoming project activities so
that the new schedule can be followed.
You may also have to increase the schedule to
accommodate activities that were not part of the original plan. Ensure that no
other essential activities were missed in the original plan before asking for
approval of the change request for the new schedule.
Conclusion
Employ preventive actions wherever possible on your
project. Preventive actions will preserve your original schedule (or at least
give you that chance) and are often cheaper to implement than corrective
actions. Set two triggers for the project: the first trigger will be the trend
that calls for a preventive action (i.e. how may reporting periods in a row
should the SPI be allowed to decrease without taking action) and the second will
be the SPI threshold that calls for a corrective action.
Don’t rush into a preventive or corrective action
without first doing a root cause analysis to determine why the project went off
the rails. Use the results of the root cause analysis to help you to determine
the proper preventive or corrective action, and the extent of the action. Don’t
just examine the current iteration, or phase, or function, examine the entire
schedule to ensure that the mistake does not get repeated. The tips and tricks described in this article implement some of the best practices promoted by the PMI (Project Management Institute). These are taught in most PMP® courses and other PMP® exam preparation training products. If you haven't been certified as a PMP® (Project Management Professional) by the PMI and would like to learn more about certification, visit the three O Project Solutions website at: http://threeo.ca/pmpcertifications29.php. three O Project Solutions also offers a downloadable software based training tool that has prepared project managers around the world to pass their certification exams. For more information about this product, AceIt, visit the three O website at: http://threeo.ca/aceit-features-c1288.php.
|