On this Independence Day weekend we remember the struggles of our forefathers (and mothers), the separation from Britain and the Declaration of Independence that brought it.
Ok, let's be honest...we really spend the days thinking about grilling, fireworks, getting in on the big sales or getting away somewhere interesting. Me, I'll be spending the time off trying out my new inflatable kiddie pool with canopy and sprinkler (I won't actually be in the pool, the kids will of course).
But, on the topic of independence, liberty and justice, I’ve recently been reading about the Customer and Project Team’s Bill of Rights in the book ‘Software Project Survival Guide’, by Steve McConnell. He introduces this idea by comparing a poorly run software project to 17th century life under mob rule. This experience can be “solitary, poor, nasty, brutish, and hardly ever short enough.” In order for a software project to survive, all parties need to agree to treat each other in a civilized way. These rules of civilization he summarizes first in the Customer’s Bill of Rights:
CUSTOMER'S BILL OF RIGHTS
I have the right:
1. To set objectives for the project and have them followed
2. To know how long the software project will take and how much it will cost
3. To decide which features are in and which are out of the software
4. To make reasonable changes to requirements throughout the course of the project and to know the costs of making those changes
5. To know the project's status clearly and confidently
6. To be apprised regularly of risks that could affect cost, schedule, or quality, and to be provided with options for addressing potential problems
7. To have ready access to project deliverables throughout the project
But, this is a two-way street. On a software project, customers must pay for their rights by respecting the project team's rights, which he lists below:
PROJECT TEAM’S BILL OF RIGHTS
I have the right:
1. To know the project objectives and to clarify priorities.
2. To know in detail what product I'm supposed to build and to clarify the product definition if it is unclear.
3. To have ready access to the customer, manager, marketer, or other person responsible for making decisions about the software's functionality.
4. To work each phase of the project in a technically responsible way, especially to not be forced to start coding too early in the project.
5. To approve effort and schedule estimates for any work that I will be asked to perform, This includes the right to provide only the kinds of cost and schedule estimates that are theoretically possible at each stage of the project; to take the time needed to create meaningful estimates; and to revise estimates whenever the project's requirements change.
6. To have my project's status reported accurately to customers and upper management.
7. To work in a productive environment free from frequent interruptions and distractions, especially during critical parts of the project.
I would love to see a project kickoff meeting where all parties gather around a large table to read through the Bill of Rights document together and clients, managers, senior management, project team all take their turn to sign the document. This will affirm their commitment to upholding their responsibilities (although it seems to be mainly the responsibility of the project manager to make sure all of these rights are upheld). Who knows, maybe some project teams out there go through that exact process, or maybe this could be included as a part of the project charter. It’s an interesting idea, but at the very basic level I agree with the author that everything listed here is extremely important for the happiness of the client and project team, and the health and success of the project. I hope to find a way to incorporate this into my projects going forward, so if you’re my client or on my team, better keep a quill handy!