Chapter 10*Customer-Oriented Development

advertisement
Chapter 10—Customer-Oriented Development
The companies that have made customer relations a top priority have made many of their development problems
disappear, including the problem of slow development.
In the end, your customers’ perception of whether your development is slow or fast is all that matters.
If you can satisfy you customers, you can satisfy your manager, your company’s brass, and everyone else.
10.1 Customers’ Importance to Rapid Development
The number one reason that projects succeed is user involvement.
Two reasons that you should pay attention to customer relations on a rapid-development project are:
1. Good relations with customers improve actual development speed.
2. Good relations with customers improve perceived development speed.
A. Improved efficiency—customers sometimes don’t realize that a week’s delay in reviewing a key document can
translate into a week’s delay in developing the product.
B. Less rework—one of the costliest mistakes in software development is to develop software that is ultimately rejected
by the customer.
C. Reduced risk—establishing good relationships with your customers allows you to do a better job of identifying risks
and monitoring them throughout the project.
Some ways that customers can pose risk to the schedule:
1. Customers don’t understand what they want.
2. Customers won’t commit to a set of written requirements.
3. Customers insist on new requirements after the cost and schedule have been fixed.
4. Communication with customers is slow.
5. Customers will not participate in reviews or are incapable of doing so.
6. Customers are technically unsophisticated.
7. Customers won’t let people do their jobs.
8. Customers don’t understand the software-development process.
9. A new customer is an unknown entity, and specific risks are unknown.
D. Lack of friction—when you don’t get along with your customers, you spend more time managing customer
relationships.
10.2 Customer-Oriented Practices
A. Planning
Some planning practices you can use to build customer satisfaction into your project.
1. Select an appropriate lifecycle model. Provide you customer with steady, tangible signs of progress.
2. Identify the real customers.
3. Establish an efficient method for interacting with the customer. If at all possible, insist that the customer
provide a single point of contact. There is no such thing as a rapid-development project in which you have to get
the approval of six customer representatives for every decision.
4. Create a win-win project.
5. Manage risks.
B. Requirements Analysis
Customer-oriented practices increase the proportion of real requirements you can gather.
Whenever you gather requirements, the challenge is to gather the real requirements. Sometimes the real
requirements are in conflict with the requirements you gather. Sometimes discovering the real requirements calls for
digging beyond the surface requirements.
Customers tend to interpret requirements broadly, and developers tend to interpret them narrowly.
Active customer participation can produce dramatic improvements in productivity, but it is not by itself a guarantee of
success.
Customer involvement can help development speed tremendously, but it isn’t sufficient by itself to improve
productivity.
As important as it is to involve your customers in specifying requirements, avoid letting the customers write the
requirements spec entirely.
Some practices you can use to involve your customers in requirements gathering:
1. Use requirements-eliciting practices that help customers figure out what they want (ex. Prototyping, JAD).
2. Conduct focus groups that help you figure out what the customer wants.
3. Videotape customers using the software.
4. Conduct customer-satisfaction surveys to obtain a quantitative measurement of your relationship to your
customers.
C. Design
Employ design practices that allow your customers to change their minds occasionally.
D. Construction
Customers like progress more than promises, and they especially like progress that they can hold in their hands or
see on their computer screens.
Some customer-oriented practices that work well during construction
1. Employ implementation practices that create readable, modifiable code, which will improve your ability to respond
to customer change request.
2. Use progress monitoring practices such a mini milestones so that you can inform the customer about your
progress.
3. Select a lifecycle model that provides the customer with steady, tangible signs of progress.
10.3 Managing Customer Expectations
Many problems in software development arise from unstated, unrealistic expectations.
Customers sometimes think that if you’re done with a prototype, you must be almost done with the product itself.
Part of your job as software developers is to educate your customers so that they understand software
development better, which makes it possible for you to live up to their expectations.
Download