Customers are scared of a number of things. They're scared that:
- They'll be stuck working with developers who lack professionalism, who could care less about the business, and that if things don't work out, the developers won't care to right the situation
- They're not going to get what they asked for
- They're going to pay way too much money for something way too little
- They won't ever see a plan that makes sense and assures them that they are well taken care of
- The plans that they do get from us are going to be ridiculous, over-confident, and that we're not going to be able to deliver on what we say we will
- They will be completely in the dark as to our progress so far
- They'll be stuck with their earliest decisions and that they won't be able to pivot on the plan when the business demands it
- That no one will be honest with them
And as developers, we're scared that:
- We will get tasks that we don't know how to complete
- We'll face challenges that we won't know how to solve
- We'll be asked to do or build things that we can't make sense of
- We're not smart enough
- We'll make bad technical decisions that will hurt our ability to make progress
- We'll be bossed around and told what to do without the opportunity to voice our own opinions
- We won't get clear requirements
- We'll have to sacrifice doing the right things in order to meet deadlines
- We'll have to figure out how to solve hard problems without access to a domain expert for help
- We'll run out of time
When our fears are acknowledged and our rights are accepted, then we can be courageous. We can set goals that are hard to reach and collaborate to meet those goals.
In any software project, here's what customers have a right to:
- Customers have a right to know what the plan is, to know how long it will take to accomplish milestones, and to know how much it will cost to do so.
- Customers have the right to choose the stories that will yield the most value each week.
- Customers have the right to be informed of schedule changes in time to be able to choose how to reduce the scope of the work to the original date.
- Customers have a right to see the current progress in a running system at any point in time, where progress is measured by automated acceptance tests specified by them.
- Customers have the right to cancel the project at any time and be left with a useful working system reflecting the total investment to date.
- Customers have the right to change their mind, swap out functionality and rearrange priorities without having to pay unreasonable costs.
And with respect to us (developers), our rights specify that:
- We have the right to know what tasks need to be done, and the priority associated to each one.
- We have the right to carry out technical practices that will yield quality work, always, at all times.
- We have the right to ask for and receive help from peers, managers, and customers.
- We have the right to make and update our own estimates.
- We have the right to accept our responsibilities instead of having them assigned to us.
From XP book