|
|
Closing the Back Door to Project Changes
A problem that plagues many project managers, particularly
in the software development industry, is those changes that mysteriously appear
in the work that you are unaware of until something brings it to your
attention. The change is usually brought to your attention when something breaks
without a logical explanation. For example, developer testing passes and yet
when the QA tester attempts a test, the software under test experiences a
fundamental failure. The explanation is usually that there has been a change to
the software design that has not propagated to the test cases the QA tester is
using. The reason: a stakeholder has approached your software analyst or programmer
to ask for a "minor change" that won't take "any time at
all" to implement and your P/A has gone ahead and implemented it.
Now you are left with 2 choices: either you can back the
change out of the code or you can propagate the change across all the areas
that the code touches. The 2nd option is not very attractive as it will signal
open season on changes to your project and annoy those stakeholders who were
following your Change Management process. Regardless of which option you
choose, this "back door" change will add to the cost of the work and
quite possibly put you behind schedule. This situation calls for
"preventative maintenance" so that the back door change doesn't
happen in the first place.
The preceding is not the only scenario that will alert you
to the existence of back door changes. When you are alerted to the change by
your QA tester, UAT tester, or some other team member who has been impacted,
you may find that the source is not a stakeholder but the team member. This
scenario usually springs from a programmer finding an error in the detail
design document, functional specification, or software specification. Instead
of making a big fuss over the mistake, the programmer quietly fixes it without
causing anyone any embarrassment. Unfortunately, this often shifts the
embarrassment further down the line to the testers who were not made aware of
the change. The source may not be a fix to a bad design, it may be a better,
more efficient way to deliver the same functionality. For example, where a
design dictates an inefficient way of querying the database, or a calculation
that uses an exorbitant amount of computing resources. The consequences of this
change are every bit as costly as the back door change requested by the
stakeholder and you will want to avoid these.
QA and UAT testing are not the only downstream areas
affected by these changes. User manuals may become out of sync because of the
change. Training may also be affected. The cost of a change to the
functionality of the application not caught before manuals are published or
training delivered, can dwarf the cost of changing software and tests. Changes
may also affect deliverables upstream from the software. For example, a change
to software design may put the supporting functional specification out of sync.
The obvious first step in avoiding these back door changes
is a good Change Management process. Actually you will probably want to have
more than one process for the typical software development project. Good Change
Management calls for the process to be agile and for decisions to be made by
the right decision makers. This means that decisions on one of the project's
key deliverables, schedule, or budget should be made by the CCB (Change Control
Board), or CAB (Change Approval Board). Changes of a technical nature which
alter the work of the project without any change to the schedule, budget, or a key
deliverable should be made by someone with an understanding of the requested
change. This understanding should enable the decision maker to analyze the
change and determine the extent of the impact. This person will usually be you,
but could be someone else on the team who has the required technical knowledge
and is also knowledgeable about the project.
Your second step is the communication of the
process/processes to the team and the stakeholders. Stakeholders will include anyone
who would have the authority to ask for a change to the project. Communication
should include training on the process so that stakeholders and team members
are not only aware of the process/processes, but are also familiar with their
responsibilities to the process. The key responsibility for stakeholders is the
use of the Change Request form to capture all the information about the change
they are requesting, and the communication of that completed form to you (or
the Change Manager). You need to ensure that all stakeholders have easy access
to the form. Training should be tailored to each group identified in the Roles
and Responsibilities section of your Change Management process/processes so
that they focus on their responsibility. Try using a 1/2 hour meeting to do the
training. You might even do it with a "lunch and learn" session.
Informing the stakeholders and team members of the change
management process/processes and then training them to fulfill their
responsibilities is no guarantee that they will follow the process. Ultimately
you must rely on your team members to refuse to make back door changes
suggested to them by the stakeholders, and avoid making back door changes themselves.
Let's deal with the easiest case first. It will be much
easier to prevent your team members from making their own back door changes than
to prevent them making those changes on behalf of stakeholders, because there
is no external pressure on them to compete with the pressure you apply to not
make the changes. To exert that influence, be clear with the team that no
change to the software, functional specs, software specs, test cases, etc. will
be tolerated without going through the proper process. Walk the talk here. That
is, make sure that you follow your own process whenever you make changes to the
project work. Don't just update the MS Project plan and communicate that
change, fill out the change request and follow your own process. Walking the
talk is an excellent way to show leadership to the team.
The other side of the coin is holding team members
responsible for their actions, including the damage caused by back door
changes. Take the offending team member aside the first time this happens and
explain the consequences of the action to them, then let them know the consequences
of a second offense. Consequences may be a negative performance evaluation, a
reduction or elimination of a performance bonus, a demotion, or even termination,
but should be on a personal level. You should be able to translate the negative
impact of the action on the project into a negative impact on the offender.
Use common sense when determining what constitutes a
"back door" change. Any change that has no impact on another team
member should not be included in the changes you are trying to prevent. If the
change would improve the product and has no down side, don't discourage it.
Changes that are made by team members acting in concert should also not be
included. Again, the team members involved should include everyone impacted by
the change. There are some indicators that will allow you to predict the extent
of the change's impact:
- a change to the way a user interfaces with the
system
- a change to any inputs or outputs of the
application,
- any change to an underlying requirement
- any changes that would impact test cases, user
manuals, or training
Changes to any of these should always be supported by a
change request.
Team members can be placed under considerable pressure by
stakeholders who want a change but are not willing to follow the process you
have provided. The minimum reward is a pat on the back and an "atta
boy/girl"; the stakeholder makes the team member feel good about
themselves because they have given the stakeholder something they wanted. Some
stakeholders may be in a position to provide the team member with a reward:
they may have input to performance evaluations, have influence over deciding on
bonuses, or may be someone the team member wants to work for in the future.
These sources of influence all put pressure on the team member to accommodate
the stakeholder and make the change.
Stakeholders may be tempted to exert negative pressure on a
team member. "If you aren't prepared to grant me this small favour, don't
expect me to praise you in your evaluation!" Hopefully, your project won't
have any stakeholders who are prepared to use threats, direct or implied, to
get their way but if it does you must shield your team members from any
negative consequences.
Having key stakeholders sign off on the Change Management
Plan (containing the process/processes) is one way of ensuring that key
stakeholders are aware of their obligations to the project, but you can't have
everyone sign off on that document. You will need to create an environment for
your project where team members come to you first with a problem. The best way
to create this atmosphere is to take action whenever a team member comes to you
to report pressure to do a back door change. Talk to the stakeholder and
explain why the team member can't make the change without following the
process, explain the process to them and ensure they have ready access to the
Change Request form. If the stakeholder indulges in threatening behaviour, make
sure the team member understands that you will shield them from any negative
consequences. You may choose to talk to the stakeholder first and have the conversation just described, or you may choose to go to your sponsor with the
situation. In either case, steps must be taken to eliminate the threat to the
team member.
There is one exception to the advice in the preceding
paragraph: when the work is being done for an external customer. External
customers may go directly to your team members but they are usually not in a
position to pressure the team member either positively or negatively. External
customers will usually attempt to influence the project through you. Having a
Change Management plan signed off by the customer as part of the contract
covering the work will be very helpful here. The customer may attempt to
introduce the change through your project sponsor. If your sponsor directs you
to make the change (there could be valid financial reasons for doing this),
complete the change request yourself indicating the impact the change will have
on the project. Changes that will impact on the project schedule, budget and
deliverables should be decided on by the CCB, even when the decision is a
foregone conclusion. A change in the schedule may or may not be approved by the
customer. Your project sponsor should understand that the change agreed to will extend the schedule (or cost more money to compress it). A change to the budget may or may not mean a change to the price the
customer will pay for the software. The additional cost should come from your
corporation's margin on the contract when it doesn't come from the customer. In
either case, your project's budget should change and your project be
re-baselined upon approval of the change.
I've attempted to provide some useful examples of actions
that will prevent back door changes from happening, but of course every project
and situation is unique, so you will have to identify the actions that are
appropriate for your specific situation. Just remember the key points we've
discussed:
- Your project must have a change management
process, or processes, described in a change management plan.
- The plan and process/processes must be agile and
identify the right decision makers.
- The plan should identify the roles and
responsibilities of everyone on the team and all the stakeholders.
- The team and stakeholders should be educated in
their responsibilities to the process/processes.
- Walk the talk.
- Don't unnecessarily restrict team members
ability to do their work in the most efficient way.
- Hold team members accountable.
- Hold stakeholders accountable to the best of
your ability.
- Shield the team members from pressure.
|