The Social Contract is a simple and effective way to enable team autonomy and self accountability for engagements. The Social Contract or Agreement is created by and for the team. It looks to codify the behaviors and expectations of the team. It also provides a mechanism for the team to radiate and share its desired behaviours with management and other stakeholders.
To effectively use this practice you should look to create the following outcomes:
- Public display of the social contract.
- Nobody is above the contract.
- The team agreed holds each other accountable to the contract. Having every team member physically sign the contract can provide a good starting point for this.
- Revisit the social contract often and update it as necessary.
- Individually, write down your expectation about working together.
- Think about behaviors exhibited by really great teams that you've worked with.
- Consider the behaviors of any terrible teams that you've worked with.
- Together, review, and group the behaviors.
- After reaching consensus, sign the contract.
- Display the contract in a visible place.
- Establish your name team (naming things is hard).
Note that this is a living document so the team can revisit it later, change it, and initial it to indicate that everyone has agreed to the change.
- Wall space which will hold sticky notes.
- Whiteboard markers.
- Stickies (preferably a wide variety).
- Large poster paper.
Facilitation Tips and Example Questions
Try to guide the team to a contract that encourages positivity, autonomy, and respect. Ensure that things in the Social Contract are actionable, for example "Be Open" has good intent, but lacks specificity. Ask questions to tease our greater meanings.
- What sort of team culture do you want to build?
- Open, positive, blame-free, constructive, listen to others, give space to anyone
- No magic, no wizardry, no ninjas - build shared understanding
- Celebrate success
- What core hours do you want to work? 10am - 3pm?
- The idea is not to encourage a clock-in/clock-out mindset. It's about giving people the freedom to work the hours that make sense for them while ensuring that the team can still meet together.
- What are your thoughts on pair programming? Mob programming? Mob to learn; pair to build? Focus, then share what you learned?
- Respect individual working styles
- How should we handle devices in meetings? Laptops closed and phones down? Step out if you need to work on something else?
- How do you want to track tasks? Jira? Paper stickies? This helps us avoid missing important stuff or duplicating work.
- Embrace creative chaos
Don't do this
Avoid building a social contract that encourages antagonistic, command-and-control behavior. Here's an example of a really bad social contract:
- Core hours are 9am-7pm. The more time you spend at a desk, the more you'll accomplish.
- Be more productive by juggling several projects at once.
- Ensure accountability by finding someone to blame when things break.
- Deploying to production is scary because it's an opportunity to get blamed for something (see above). Code should be deployed as infrequently as possible.
- When you learn something, be sure to keep it to yourself so that everyone can see what a ninja rockstar wizard unicorn you are.
Tips for remote sessions
- Consider to have a “pre-canned” social contract that is good for remote meetings, then allow people to add/change based on their thoughts.
- Everyone signs with a Sticky-note with his/her name.
- Add remote working elements to the social contract (mute on entry, video on etc).
- Establish global communication norms and individual teams exceptions: response time, writing style, and tone, etc.
- Use examples:
- One conversation at a time
- Assume positive intent
- Do not delete or move others contribution
- Stay focused on our goal working iteratively
- Respect breaks
- Avoid other distractions like mail, and chat
- A contract can be updated based on needs...
- Agree on the above adding a sticky w/name & location