Is Your Project Out of Control?

advertisement
Is Your Project Out of Control?
Introduction
This guide is intended to help senior-level project managers,
especially those with limited experience in managing software
development projects, recognize the symptoms of a project that is in
trouble. The key goal is to identify the problem.
What Is Control?
It seems obvious that to know when you are “out of control,” you
must first understand what “in control” means. Obvious or not, that’s
a difficult question to answer, and it may not be all that relevant.
The point is not to measure the project, the people, or the
management against some yardstick. Rather, it is to recognize when
the team has slipped from a state of healthy, natural chaos to a point
where progress is hindered by a lack of control.
As Microsoft’s Chris Peters noted, “The default state of a project is
out of control.” The natural tendency is toward unhealthy chaos. Only
the management of the team, with the help of the team itself, can
provide the control necessary to make the project a success. This
makes it difficult if you are vigilantly watching for some transition
from “in control” to “out of control,” because some teams are never in
control in the first place.
This document focuses on recognizing the unhealthy signs of a
project that needs corrective action. It’s much more a listing of
symptoms than a cookbook for project management, and much less a
how-to than a diagnostic tool.
This document is divided into the major areas where projects can get
out of control. They are:
 Focus

Product

Team

Communication

Process

Schedule
2
Is Your Project Out of Control?
Each section of the paper describes the key aspects that make the
category important, gives assistance in identifying problems within
that category, and occasionally offers some ideas to deal with these
problems.
Finally, the document ends with an appendix that divides this list of
problems into a timetable. This can be used as a checklist for
managers at various points in the project, helping to identify that state
of “out of control.”
Focus
Probably the most important—and the most difficult to judge—
characteristic of a well-functioning team is the possession of the focus
and vision needed to create an outstanding product. Without this
focus, the team cannot execute on the underlying tasks that make up
the project.
Lack of a Shared, Crisp Vision
The one success factor most experts agree on is the need for a project
team to have a clear vision for its project.
How do you determine whether a team has that level of shared
understanding?
One method that seems to work well is to pick a few individuals from
a variety of areas on the team and ask each one to briefly outline the
vision for the project. If each person selected cannot immediately
identify, in just a few sentences, the key goals and the key customers
for the project, the project is in trouble. The response to “What are we
building?” should be a prompt “The fastest spreadsheet in the world,”
or something to that effect.
The breakdown—if there is one—may have occurred because the
project does not have a crisp vision, the vision has not been well
communicated to the team, or the team does not agree with or believe
in the vision. Whatever the cause, however, the lack of a shared
vision is a fundamental flaw that will prove fatal to the project.
Without a vision for the project, the team will be unable to make
difficult feature or bug tradeoffs, will be frustrated by communication
problems among members of the team, and will inevitably make
decisions that are misdirected because they have no foundation.
Lack of a Customer Focus
Another way to look at the problem of focus is to ask “Who will pay
good money for this product?” If the customer is not readily
identifiable and is not a key part of the goals and vision for the
product, this is another major sign that the product is in trouble.
When difficult decisions arise, make sure that a customer advocate is
identified in the group and that that person is heard.
The corollary to this is to be sure that you have identified who is not
the customer. It is often too easy to say “Anyone would want this,”
3
Is Your Project Out of Control?
thereby avoiding giving sufficient thought to who the customer
specifically is and is not.
Customers are not homogeneous. Some groups of customers will
definitely be outside your market. It’s vital to identify them too.
4
Is Your Project Out of Control?
Focus on the Wrong Things
One trap that is very easy to fall into is the tendency to focus on
things that are not directly related to shipping a product. Examples
range from the apparently important to the obviously inane, from an
inordinate focus on preparing for conferences or project reviews to
angst over the color of the T-shirt.
If the team is getting T-shirts for almost completing milestone 2, you
should be concerned. If the end goal in sight is not a product for your
customers, but a conference for your peers, you should consider some
actions to refocus the team.
Certainly some creative extracurricular activities are vital to
maintaining team morale, and they can often help to focus the team.
But if they seem the persistent focus of the group, if they occupy more
than just a small window of time, or if they are the subject of
controversy in the group, they are counter-productive.
Product
It’s often easy to look at the product itself and judge whether the
project has a good chance of success. This is where an objective,
third-party view—that of another experienced project manager,
perhaps—can help the most.
Moving from Technology to Product
Version 1.0 of any product is more inclined to be out of control, or at
least to appear that way, because the target can move or be unclear.
Much of the difficulty occurs in the transition from technology to
product. This transition, during which a great piece of technology gets
solidified into something a customer would pay money for, is a very
difficult one.
The key flag for a product that is not successfully making this
transition is a team that is in love with the technology.
When that happens, team members are so enamored of the technology
that they can’t clearly identify who the customer is, why the customer
would want the technology, and how the technology fits into a
business model. They often redirect questions in this area to
demonstrations of the technology or to detailed discussions of how it
works.
People in love with the technology also often have a difficult time
discussing version 2.0 or 3.0 of the product. They’ve become so
engrossed in what it is today that they haven’t thought about how it
will be a business in the long run.
Biting Off Too Much
If you review the project with an experienced project manager and his
or her response is that the project seems very difficult to accomplish,
consider that a danger sign. It isn’t so much that every project should
be easy, but each project should be doable.
5
Is Your Project Out of Control?
There is a tendency, especially again with version 1.0 projects, to feel
compelled to make a big hit with the product. This tendency can lead
to over-ambitious projects that are destined to have difficult births.
Often this pressure is caused by fear of a competitor. Teams worry
that they’ll make an inadequate response to the competition’s latest
release and that their product will be a failure in the marketplace.
The solution is to make a project plan that covers several manageable
releases. Plan version 1.0 to build a solid foundation and establish a
position in the market. Leave for version 2.0 or 3.0 those features that
will make the project late or that require time in the marketplace to
jell.
It may be tempting to try to perfect a version 1.0 project. However,
experienced managers will tell you that, after five years, they would
rather be working on version 3.0 of a product than working on the
fifth year of version 1.0.
Too Many Dependencies
Dependencies on other projects are an unavoidable fact of life and are
likely to increase the larger a company gets. Dependencies have their
benefits, since larger companies can leverage their size and allow
groups to specialize.
However, there is danger any time a project team is dependent on
another team for a key functionality, and the project team needs to
manage that dependency very closely. A project with most of its
functionality in the form of dependencies is a project likely to be in
trouble.
Under-Detailed Specifications
No project should exist without some common point of reference, and
a specification is a very good example of one. At the beginning of a
project, before coding has begun, the specification is the only
deliverable, and the only real sign of progress in the group. Once the
team is well into a project, the product becomes a more visible
indicator, and the team should be able to trust it far more than any
document. But at the beginning, some documentation is a must.
Over-Detailed Specification
The converse to having no specifications is having an encyclopedic
specification. Communicating the project to the team and its
dependents is key, but an extremely detailed specification can be a
problem for a couple of reasons.
An overly detailed specification is a warning sign because it can,
itself, become the deliverable. The team can get overly focused on
updating the specification, on filling in every little hole, or on
producing regular updates. An overly detailed specification is an
indicator that the team has lost its focus on the end product and has
forgotten that the key deliverable is a product for the customer.
6
Is Your Project Out of Control?
An overly detailed specification is also problematic because it can
breed overconfidence. By possessing a seemingly bullet-proof
specification, a team can fail to prepare for the inevitable calamity or
change in direction. The team will schedule things with inadequate
buffer, will be resistant to changing the specification for all but the
most dire of causes, and will lose sensitivity to the market it is trying
to serve.
So how much is too much? This varies with the product, but the
warning signs are fairly easy to spot. Is the specification in numbered
volumes? Has the specification been read, really read, by anyone
other than the author? Is the specification the review objective for the
program manager, as opposed to a good feature in the product? Is
updating the specification someone’s full-time job? These are not
necessarily fatal signs, but they often indicate a problem.
The Vision in the Wind
Often used as the excuse for a project’s problems, but only
occasionally correct, is the problem of the project whose vision
changes every few months. This has been the downfall of more than
one project, and is usually blamed on “management.” The reality is
more often that the project never had a clear vision in the first place,
or the vision failed to take into account some crucial elements (the
customer, for example).
Detecting this problem is rarely difficult. Teams will usually howl in
pain with each change of the vision. Changes in the individual
features or minor project goals are commonplace. The time to worry
is when the fundamental direction of the project changes but the
shipment deadline doesn’t.
Not Managing Product Performance and Size
Features can be debatable in terms of which should be in and which
should be out. But the areas of product functionality that are constant
and most frequently overlooked are performance and size. Failure to
pay heed to these issues will always come back to haunt the team and
can be an early warning sign of a product doomed to be out of control.
The product team must clearly specify performance and size goals for
every significant part of the product. If the team is not managing these
issues by monitoring progress toward these goals with the daily
builds, it is going to be surprised at the end of the project. If the team
has no time in the schedule to fix performance and size problems, the
schedule will likely slip. If the team has no people to worry about this
as their primary job function, the team is likely to ship a bad product.
In any of these cases, the team is not in control.
7
Is Your Project Out of Control?
Team
The caliber of the team is often raised as a key success factor. While
this is relatively obvious, the signs of a problem in this area are less
so.
Lack of Shipping Experience
Shipping software is a complicated art. It requires a combination of
skills and experience that is fundamentally impossible to attain
elsewhere. The skills can range from technical to political, and the
experience can range from the smallest products to major releases.
But there is no replacement for people who’ve lived through it.
If the team does not have people—particularly senior leaders—who
have shipped software in at least half of the key positions
(development manager, test manager, group program manager, user
education manager, and/or product or business unit manager), it is
likely to have a very difficult time.
Lack of Technical Skills
An obvious source of problems is a team that does not have, or has
lost, the technologists to produce the product. Key warning signs
include black box technologies (“We don’t want to change that code.
No one knows how it works”) or overly sensitive technologies
(“We’ll do anything to avoid touching that code. It’s very delicate”).
Lack of Ownership
Each core technology should have an individual who can always be
turned to in that area. That person should “own” the technology or
feature, and his or her ownership should be well known by the whole
team and all dependents.
The owner doesn’t have to be a lead or manager. He or she is often a
star member of the team who understands the details and
communicates them well. He or she usually feels a strong vested
interest in its success, and is often the cheerleader and staunchest
supporter of at least the feature, and often the product as a whole. The
owner wears the label as “the person to go to” on any issue relating to
that area.
Inadequate Staffing
An obvious warning sign about the health of a team is open or
inadequate headcount in key areas. A team with key positions (the
business/product unit manager, development manager, test manager,
group program manager, or user education manager) left unfilled for a
long period of time will find it impossible to set and maintain
direction. A team with more than one of these roles unfilled, even for
a short period of time, is in jeopardy.
A team with no testers, or even one with substantially fewer testers
than developers, is likely to have a difficult time producing a quality
product. A team with developers writing specifications as their key
8
Is Your Project Out of Control?
job, or with program managers writing code as theirs, is understaffed
or misdirected in a serious way. Even a team with a high percentage
of temporaries (greater than 20 percent) is putting a great deal of the
intellectual horsepower in a volatile resource. All of these require
reallocation of resources to succeed.
Hostages
Much like a team without key people, a team with key contributors
who want to leave, but are being held against their will, is destined for
disaster. It’s often better to just admit the problem and let them go, so
at least they won’t drag the rest of the team down into their bad
morale pit.
Communication
Communication, both inside and outside the team, is key. During a
postmortem, people often say, “There was a lack of communication.”
It’s hard to know what that really means. Here are some clues.
The Reality Distortion Field
A key communication problem within the team is fondly known as
the “reality distortion field.” This phenomenon occurs when a team,
engrossed in its own magnificence, convinces itself that impossible
dates can be met, that enormously complex technical problems are
nothing to worry about, and that naysayers just aren’t committed to
shipping on time.
The reality distortion field occurs in varying degrees, which often
makes it difficult to detect. It shows its true colors when challenges to
the schedule, business model, or technology are not carefully
considered but rather are discarded as the ranting of a non-believer.
Often the retort is “you just don’t understand.”
The appropriate reaction is to build understanding, but if this is not
forthcoming, there may be a need for some cold, hard reality. A
thorough project review with a skeptical audience can do wonders
toward dissipating the field.
Lack of Communication Among Dependents
The most important part of working with groups that you are
dependent on, or who are dependent on you, is communication. It’s
easy to understand the importance of getting the programmatic
interfaces correct, or to see why planning the dates is vital, but none
of this will actually happen without a huge investment in
communication.
Discovering whether you have a communication problem with your
dependents is actually quite easy. Among the key questions to ask:
 When is the next drop? The answer should be unequivocal and the
date should be before your next drop.
9
Is Your Project Out of Control?



Who in our group attends their staff meetings? The answer should
be at least one of your program managers, and maybe a developer
or two as well.
How many bugs do we have on their bug list? The answer isn’t
important, but someone on your team should know it.
How do they prioritize our bugs? The answer should be “like their
own.”
In any case, your project is in jeopardy if you don’t manage these
communication issues very well.
Inordinate Emphasis on Secrecy
One of the clues to a team in trouble is if the team tries to hide things.
Clearly some details of the technology can or should remain
confidential, but a team that is overly protective of its specifications
or schedule is hiding something. And it’s not likely to be something
good.
Ask for a look at the specification. You don’t have to read it (but you
probably should). It’s just a test to see if the team will give it to you.
Ask to go over the schedule. If the team will let you, it’s probably
OK. If it won’t, you should be alarmed. If you’re not on the team,
maybe there are good reasons not to give you access. But it’s time to
really be alarmed if you’re on the same team and you can’t get access
to things. Something is wrong.
Status Reports That Blame Others
If every month the status report looks bleaker and bleaker, yet the
problems are always someone else’s fault, there’s a problem. There’s
little question that a team can be derailed by the failings of its
dependencies, but if that is offered as a reason month after month,
there is a problem. The team should be making alternate plans, falling
back on its contingency strategies, doing something. But throwing up
its collective hands and blaming its woes on others is a clear sign of a
team that is out of control.
Process
Much of the wisdom relating to the development process is well
known, but it deserves repeating. Often the difference between in
control and out of control is in the details.
Failing to Use Milestones and Milestone Reviews
Most project teams divide their projects into milestones and use these
milestones to track the progress of development. However, many
teams also cheat on their milestones, which of course only causes
problems down the line.
There are several common milestone cheats:
10
Is Your Project Out of Control?




Fudging the end date (“We didn’t really say the 3rd. We said
August.”).
Declaring victory (“Well, most of the team made it.”).
Not having definitive quality objectives (“So what if we have
1,500 bugs? The code is complete.”).
Moving things that didn’t make it into the next milestone without
careful evaluation and without a complete reschedule of the rest of
the project.
Teams also commonly fail to come to closure on milestones by not
holding milestone reviews. These reviews, also referred to as
milestone postmortems, are extremely important sources of corrective
action for the next milestone. Failure to hold them, or to reset the
schedule during them, is a serious warning sign.
Lack of Regular (Daily) Builds
Time has shown the daily build of the product to be one of the most
important diagnostic tools for the health of the product. Having a
daily build does not ensure the health of the project, but few well-run
projects survive without one.
Key to the daily build are the daily sniff tests (or smoke tests). Stolen
from the electronics industry where people would plug in a board and
see what smoked (or smelled bad), sniff tests are a vital part of the
build.
These tests ensure the basic stability of the product by checking daily
that nothing has been checked in that jeopardizes the basic product. If
something is uncovered, it is repaired immediately. This provides a
foundation for the new work to be added each day and ensures that
the project doesn’t stray too far from a stable working version.
Build sniff tests to be run by the developers before checking in code.
This prevents breaking the daily build and also encourages developers
to take more responsibility for the stability of the product.
The importance of a regular (preferably daily) build cannot be
underestimated. A good way of thinking about this is to consider how
much time it would take to recover from a fatal flaw in a check-in. If
you build weekly, and someone checks in erroneous information on
Monday that you don’t find until you build on Friday, you might have
to repair a week of work before health is restored. You’ve lost two
weeks. If you built daily, you would lose only two days.
It’s also important to start daily builds very early in the process,
preferably from day one on new versions of existing projects. Think
of it as getting the project to a known state and ensuring that it stays
there.
Failing to Eat Your Own Dog Food
Eating your own dog food—that is making your team run, live, and
breathe its own product—has been shown to be a vital method of
11
Is Your Project Out of Control?
ensuring the health of a project. Some people claim that this is only
viable with applications that people use in their daily lives (such as
the operating system, or a compiler), but the reality is that you can
make daily and frequent use of your product a key goal for every team
member.
You can eat dog food in a variety of ways. Have a database? Use it to
track your bugs. Have a spreadsheet? Use it for your schedule. Have a
game? Make sure people are using it daily, taking it home, and
sharing with their friends.
Eating your own dog food is so important that some teams can
actually judge the ship date from the day they first start seriously
doing it. For example, operating systems, some feel, are a year from
release when dogfooding begins. Whatever your metric, if you’re not
doing it, you’re in trouble.
Failing to Track Metrics
It’s easy to get carried away with tracking bug counts, lines of code,
person-hours per bug fixed, and on and on, but some attention to
metrics can help a great deal.
The team should pick some metrics to track and should widely
publish them regularly, at least monthly, but preferably much more
frequently. This can be bug arrival rates, bug closure rates, or
whatever, but tracking the process is essential.
The key to metrics is to track something meaningful. To do this, you
should:
 Decide the overall goal that you want to accomplish. This could be
as straightforward as “cutting priority 1 bugs,” or as complex as
“increasing customer satisfaction.”

Determine a metric that will display whether you are meeting your
objective. Define what it means if the number goes up, what it
means if the number goes down, and what you might do about
either case.

Track the metric, report it on a regular basis, and review your
performance using it.

Change how you are working if you aren’t meeting your objective.
If you can’t envision this happening, you’re tracking the wrong
metric.
You want to avoid tracking metrics for their own sake or tracking
things that don’t optimize your team’s behavior or measure your
progress toward shipping. Tracking the wrong thing can be worse
than tracking nothing, because you may lure yourself into a false
sense of accomplishment.
Missed Transitions of Responsibility
There is a “center of gravity” for projects that can be observed fairly
easily, and the program management team should be following that
12
Is Your Project Out of Control?
center as it moves over time. This center begins in program
management as the team designs the project and designs a
specification for it. It then moves to development as developers code
the project, and then to test as testers help to polish it for shipment.
The PMs on the team should be making the transitions with the
center. As the focus moves to the coding team, program management
should be working to close down issues, triaging bugs, and
responding to difficulties the development team has in implementing
the specification. As the focus changes to test, program management
should focus on triaging bugs and preparing the product for shipment.
If you find the PMs worrying about new features after code complete,
or planning the next version instead of closing down bugs, they are
not helping to ship the product. Either they need to be part of a
separate team focused on the next release or they should be more
closely working on the current release.
Handling Process
Few teams truly handle all aspects of their process well. This is not a
fatal flaw, but it can be used as an indicator of the maturity of the
development team. There are many fine points that should not be
overlooked. Here are some examples, not that your team must follow,
but that rather are used by many teams:
 After code complete, all check-ins must have a raid number.


After some point in the process, every check-in must be reviewed
by at least one other person (some teams require that it be a lead).
No bug is dismissed as “non-reproducible” without consent of the
test manager/lead.

No bugs are dismissed en masse. Every bug gets a fair and honest
hearing. Teams that blow off huge numbers of bugs often regret it,
or read about it in the trade press.

After some point, all feature/interface changes must be approved
by a “change control group.”

If the number of bugs exceeds the number that the development
team can fix in a reasonable period (for example, 10 days), stop
work on new features while the development and test teams work
on fixing and closing bugs.
These are just examples, but your team should have a list of these
kinds of rules, and it should be following them.
Schedule
Non-Bottom-up Scheduling
One of the more reliable predictors of the health of a project can be to
determine where the schedule originated. If the schedule came from
13
Is Your Project Out of Control?
anywhere other than the people who will actually do the work (with
appropriate buffering applied), it is wrong. Period.
Common places for a bad schedule to originate include:
 Marketing, when it is allowed to determine when a product “has to
ship.” While marketing offers valuable input into the product
development process, a date-driven milestone is always the source
of problems. If it is coupled with explicit features, as it usually is,
it is a recipe for disaster. The only three variables are time,
resources, and product. You cannot restrict all three variables of
the equation.

Management, when it overrules the team and decides what the
schedule “should be.” While management is another valuable
source of input into the process, it cannot successfully dictate the
schedule. Management can greatly assist by helping to adjust
resources, priorities, and other aspects of the process, but it should
not force a schedule on the team.

Program management, when it moves beyond its charter for
removing obstacles to shipment and being responsible for much of
the shipping process, and when it mistakes its role for that of
schedule-setter. Unfortunately, as with other people who are not
actually performing the task, program management’s estimation
skills usually fall short.

Anywhere else. Even if the schedule was prepared by the
responsible managers and leads, it’s suspect. The schedule must
represent the commitments of the people who are going to do the
actual work.
Regardless of who creates the schedule, if the source is not the team
(the developers, testers, writers, etc.), the schedule is wrong.
How do you determine the source of the schedule? Ask several line
team members what they think of the schedule, one on one. If they
agree with it, and have honestly bought into it, they most likely had a
hand in creating it. If they scoff, roll their eyes, or refuse to discuss it,
the schedule is invalid.
Magic Dates
A warning sign of a bogus schedule is magic dates. Such dates tend
be in two forms, the “when do you need it” form, and the “would you
look at that” form.
The “when do you need it” form of magic date is the schedule date
that miraculously meets the date management said it needed it. To be
fair, the team could have carefully manipulated the resources,
features, and teamwork to make the date work out. But even the best
laid plans result in a schedule that only closely approximates the
actual “needed by” date. More than likely what has happened is that
the team has felt the need to acquiesce to what it feels is a
management-driven date, and it has thrown its estimates away.
14
Is Your Project Out of Control?
The “would you look at that” form of magic date is the schedule for
several disparate components that all miraculously converge to be
completed on some date. Realistically, even under the best of
circumstances, convergence of a number of components will happen
at only roughly the same date. If you find yourself looking at a
schedule where the components all magically make the same date,
you should be very suspicious.
Schedule Not Detailed Enough
If the schedule is in increments longer than a week (five work days)
per person, the schedule is not detailed enough. Letting people run
without a schedule checkpoint weekly is risking their being off by as
much as a week. Compound that by all the people on the project, and
the schedule is far too fuzzy.
This is such a key issue that some people insist on even smaller
increments (2 to 3 days). Whatever granularity you choose, the key is
to ensure that the schedule is accurate to the amount of time you’re
willing to slip.
Schedule Churn
Somewhat the converse of a team that schedules too little is one that
is overly fixated on the schedule. Clearly, some attention to the
schedule is very important. However, do not lose sight focus of the
schedule’s purpose in facilitating product completion and ultimately
product shipping.
The team that over schedules tends to release new versions of the
schedule very frequently (two or more times per week). The schedule
tends to be too detailed, listing people’s tasks by the hour or some
other fine granularity. The team tends to make adjustments to the
entire project schedule that are in very small increments, such as days.
In all, this indicates a lack of focus on the product and too much focus
on the process.
The other serious danger of schedule churn is “crying wolf.” Frequent
date changes get the team, the managers, the customers even, all
believing that you are out of control. They won’t believe any date you
give, and they are justified.
Lots of Items Assigned to TBH or TBD
Assigning tasks to someone TBH (to be hired) or TBD (to be
determined) are key warning signs that a schedule is fictitious. Hiring
takes time, so assigning a task to someone TBH is risky. Unless some
sort of magic occurs, that someone will be hired and gotten up to
speed too late to be useful.
TBD is a sign of one of several problems: inadequate resources,
inadequate planning, too much product, or not enough willpower to
cut features. In all cases, this is a dangerous warning sign.
How do you know when this is a problem? Are key features or bugs
assigned to TBH/TBD? (One of the more common areas that gets this
15
Is Your Project Out of Control?
treatment is Setup, the first thing every customer sees.) Is more than a
tiny percentage (less than about 1 percent) of the project unassigned?
Is TBH/TBD used for more than a month as placeholders? These are
signs that the project may be in trouble.
Two Sets of Books
Some managers feel the need to lie to their teams about the “real”
date. The manager has in his or her head the date he or she expects the
work to be done, and may even tell the boss this date, but will tell the
team some earlier date. Managers excuse this blatant abuse of trust by
insisting that it makes the team work harder. “They wouldn’t come in
on weekends or really bust it if I told them the real date.”
This is simply horrible management. You can’t trust the team with the
truth, but you’re willing to trust the team with the product? It makes
no sense.
It has been proved time and again that teams can and do respond well
to liberal doses of the truth. Explain the details of the schedule, define
the pressures on the team, involve team members in the decisions, and
track the progress daily with them. Every team dealt with in this way
responds like the collection of professionals it is.
Buffer Misuse
Buffers are put in place to allow time to fix bugs or for performance
and size problems (which are just a class of bug), not for completing
features that are running late. Using up the buffer for feature work,
and then saying “we made the milestone,” is just lying to yourself (see
the previous discussion of milestones). When will the bugs in those
features be fixed?
The team should readjust the schedule when new items are added or
items take more time than allotted. They should not just eat up the
buffer. Again, the buffer is for bugs and issues only.
Failure to Schedule Busy Work
Forgetting to schedule such things as holidays and vacations can be a
real problem. Even important tasks like documentation reviews, code
reviews, and group meetings can get left off the schedule.
People will often pass over these things as “just part of the buffer,” or
something to that effect. That’s not a good idea. There will be enough
things that just “come up” to require that you schedule anything you
can anticipate.
We’ll Make It Up
This is a comment commonly heard at or near the completion of a
milestone. It’s usually preceded by “That’s OK…” “Making it up” has
never happened in recorded history (at least not when “it” is anything
substantial). There’s no reason to believe your team will be the first.
Spend the time to completely re-evaluate the schedule, from the
bottom up, and come up with a whole new schedule. No other remedy
is safe.
16
Is Your Project Out of Control?
Fix—If There Is Time
A parallel problem to “we’ll make it up” is bugs assigned to “fix—if
time.” The bugs will just sit on the list, there will never be time, and
they will eat away at you, adding to that massive bug count that is
making the team members sick to their stomachs. Be honest with
yourself. Decide to fix the problem or decide to postpone it. Make a
decision.
Sometimes this problem occurs because a team has not decided what
the quality bar is and can’t decide whether the bug is something that
needs to be fixed. Setting this bar early helps provide a consistent
tone to the whole project and increases the chances of success.
Summary
Few teams will exhibit all of these symptoms, and the exhibition of
one or two does not necessarily spell doom for the project. The way to
use this list is to be as objective as possible, and use it as a diagnostic
tool to determine the health of your team.
If you feel that the team is out of control, you have many options. You
can and should take prompt action, either on your own or with
assistance. The key thing is to do something. Remember, entropy
favors the state of “out of control.”
17
Is Your Project Out of Control?
Out of Control Checklist
This list is the same as the previous list, but presented in
chronological order.
Specification Complete Milestone
Especially important when coding is about to begin are:
 Lack of a shared, crisp vision.

Lack of a customer focus.

Moving from technology to product.

Biting off too much.

Too many dependencies.

Under-detailed specifications.

Over-detailed specifications.

Not managing product performance and size.

Lack of shipping experience.

Lack of technical skills.

Inadequate staffing.

The reality distortion field.

Failing to use milestones and milestone reviews.

Non-bottom-up scheduling.

Magic dates.

Schedule not detailed enough.

Lots of items assigned to TBH or TBD.

Failure to schedule busy work.
Coding or Code Complete Milestone
During coding, at coding milestones, or at code complete, watch for:
 Focus on extracurricular activities.

The vision in the wind.

Biting off too much.

Too many dependencies.

Not managing product performance and size.

Lack of ownership.

Hostages.

Lack of communication among dependents.

Inordinate emphasis on secrecy.
18
Is Your Project Out of Control?

Status reports that blame others.

Failing to use milestones and milestone reviews.

Lack of regular (daily) builds.

Failing to eat your own dog food.

Failing to track metrics.

Handling process.

Schedule churn.

Lots of items assigned to TBH or TBD.

Two sets of books.

Buffer misuse.

“We’ll make it up.”

“Fix—if there is time.”
Beta or Release Candidate Milestone
In the final stages, be especially sensitive to:
 Lack of a customer focus.

Focus on the wrong things.

Not managing product performance and size.

Hostages.

Lack of communication among dependents.

Failing to track metrics.

Handling process.

“Fix—if there is time.”
Download