|
The most central issue to the topic of rapid development is determining what kind of
rapid development you need. Do you need a slight speed edge, more predictability, better
progress visibility, lower costs, or more speed at all costs?
One of the most surprising things I've discovered while doing the background research
for this book is that many people who initially say they need faster development find that
what they really need is lower cost or more predictability--or just to avoid a
catastrophic failure.
You can ask several questions to help determine what kind of rapid development you
need:
- How strong is the product's schedule constraint?
- Does the project's emphasis on schedule arise because it is really one of the common
rapid-development lookalikes?
- Is your project limited by any weaknesses that would prevent a rapid-development
success?
The following sections describe how to answer these questions.
Products with Strong Schedule Constraints
Products that truly need to focus on all-out development speed rather than cost or
predictability have a different time-value curve than typical products have. As the value
line for a typical product in Figure 6-2 shows, the value of a typical product declines
gradually as time goes by. But with a product that has a strong schedule constraint, there
is a point at which the value of the product declines precipitously.
Figure 6-2. Value over time for typical products and products with strong
schedule constraints. There isn't as much urgency to complete a typical product by any
particular date as there for a product that has a strong schedule constraint.
For a typical product, efficient development usually provides the best combination of
development cost and schedule performance. But maybe your product must be ready in time
for the Christmas sales season or you'll have to wait another year. Maybe you have to make
a payroll system change in time to comply with a change in tax law. Maybe your company is
about to go under financially, and you need the revenue from the product to save the
company. Or maybe you need to leapfrog a competitive product, and you stand to take in
twice as much revenue if you can beat your competitor to market by six weeks instead of
releasing your product two weeks after they do.
As the graph suggests, on these projects there may be a point by which, if you haven't
released your product, you might as well not have developed it at all. In these cases, a
focus on all-out development speed can be appropriate.
Rapid-Development Lookalikes
In some instances the demand for "rapid development" comes via a circuitous
path from users or customers or upper management. They can apply an incredible amount of
pressure to get a product done fast, but sometimes they really want lower cost or less
risk instead. They just don't know how to ask for those things or that those things are
not the same as out-and-out development speed.
Before you orient your project toward shortest schedule rather than least cost, lowest
risk, or best functionality, find out what's really needed. There are several
rapid-development lookalikes that appear to call for all-out development speed but really
call for something else.
Runaway prevention. If the software organization has a history of overshooting
its planned schedules and budgets, the customer might ask for "rapid
development." But in this case, what the customer really wants is assurance that the
project will be completed close to its target schedule and budget.
You can distinguish this rapid-development lookalike from a need for all-out
development speed either by realizing that there's no specific schedule goal other than
"as soon as possible" or, if there is a specific goal, by finding that no one
can explain why it matters. A history of runaway projects is another tip off. The real
demand in this case is not so much for faster development as for better risk management,
project estimation, and management control.
Predictability. In many instances, customers want to coordinate the
software-development part of a project with revenue projections, marketing, personnel
planning, and other software projects. Although they might call for "rapid
development," they're really calling for predictability good enough to coordinate
related efforts. If your customers emphasize the need to complete the software "on
time" and don't have an external constraint such as a tradeshow, they are probably
more concerned about predictability than out-and-out development speed. Focus on efficient
development and emphasize practices that reduce schedule risk.
Lowest cost. It isn't uncommon for customers to want to minimize the cost of a
software-development project. In such cases, they will talk about getting the software
done quickly. But they will emphasize their budget concerns more than their schedule
concerns.
If the customers' primary concern is the cost of a project, a focus on development
schedule is particularly unfortunate. Although it's logical to assume that the shortest
development schedule is also the cheapest, in actuality the practices that minimize cost
and schedule are different. Lengthening the schedule somewhat beyond the nominal schedule
and shrinking the team size can actually reduce the total cost of a project. Some
rapid-development practices increase the total cost.
Fixed drop-dead date. As shown in Figure 6-2, sometimes the value of a product
declines steadily over time, and sometimes it declines precipitously after a certain
point. If there is a point at which it declines precipitously, it seems logical to say
that, "We need all-out development speed so that we can be sure to release the
product by that point."
Whether you need rapid development really depends on how much time you have to do the
project and how much time it would take to develop the project using efficient-development
methods. Figure 6-3 shows two possibilities.
Figure 6-3. Whether you need to use rapid-development practices depends on
how soon you need the software. If you can develop it in Time Frame 1 by using
efficient-development practices, you should do that instead of focusing on speed-oriented
practices.
If you can complete the project in Time Frame 1 (before the drop-dead date) by using
efficient-development practices, then do that and focus on risk-reduction rather than
development speed. That will provide the greatest likelihood of completing the project on
time. Some rapid-development practices reduce development time but also increase schedule
uncertainty, and it would be a mistake to use practices that increase schedule risk in
this situation.
If efficient-development practices alone aren't capable of completing the project
before the drop-dead date-for example if they are capable only of completing the project
in Time Frame 2-then you'll need to use speed-oriented practices to have any chance at all
of completing the project on time.
Desire for free overtime. In a few instances, the customer's (or manager's)
interest in rapid development hides a desire to improve its bottom line by eking out as
much unpaid overtime as possible. The sense of urgency created by an ambitious schedule
helps to do that.
This lookalike is easy to distinguish from true rapid development because the customer
will stress the importance of the schedule and simultaneously refuse to provide the
support needed to improve development speed through any means other than unpaid overtime.
The customer won't kick in for more developers, improved hardware tools, improved software
tools, or other kinds of support. The customer won't be willing to make feature-set
tradeoffs in order to achieve schedule goals. On a true rapid-development project, the
customer will be eager to consider any and all means of shortening the schedule.
If meeting the project's schedule is important enough to put pressure on you, it is
important enough for the customer to increase its level of support for the project. If the
company asks its developers to work harder, it must be willing to work harder too. If you
find yourself in a situation in which your the customer is simply trying to get your team
to work for free, there is probably almost nothing that you can do to improve it.
Customers who practice this style of software development do not have your best interests
in mind. Your most sensible options are to refuse to work on such projects or to change
jobs.
So, Is All-Out Rapid Development Really What You Need?
It's a fact of life that customers-including end-users, marketers, managers, and
others-will always clamor for new features and new releases. But customers are also aware
of the disruption that a product upgrade can cause.
Beware that customers expect you to balance product, cost, and schedule for them. Of
course they will request that you provide a great product at low cost on a short schedule,
but you usually get to pick only two out of three. Releasing a low-quality product on a
short schedule is usually the wrong combination. If you release a low-quality product on
time, people will remember that it was low-quality but not that it was on time. If you
release a late product that knocks their socks off, your customers will remember that you
released a knock-out product; the late delivery won't matter as much then as it seems to
now.
To determine whether customer requests justify an all-out rapid-development effort, try
to determine whether the value line of your product looks more like the typical product or
the one with the strong schedule constraint in Figure 6-2. Find out whether an external
date is driving the schedule or whether the date is really just "as soon as
possible." Finally, find out whether top management will provide the level of support
you'll need for a rapid-development effort. There's little point in going all out if you
have to do it on your own.
If you're not sure that development speed occupies top priority, take your time and
develop software you can be proud of. Develop a program that's worth waiting for;
high-quality products are harder to compete with than quick deliveries of mediocre
products.
The history of the microcomputer software industry is replete with examples of products
that were delivered late but went on to achieve immense popularity. The development of
Word for Windows 1.0 was originally scheduled to take one year and took five (Iansiti
1994). Windows 95 was delivered one and one-half years later than originally announced and
became the fastest-selling product in software history. One financial product that I
worked on was delivered 50 percent later than originally scheduled but went on to become
the most popular product in the company's 25-year history. For each of these products,
timely release (as originally defined) was not a key factor, even though everyone thought
that development schedule was critically important at the time.
This material is Copyright © 1996 by Steven C. McConnell. All
Rights Reserved.
|