DEV Community

Cover image for Why are working agreements crucial in engineering teams?

Why are working agreements crucial in engineering teams?

Humans are inherently social, hardwired for connection and collaboration. From ancient times, our ancestors formed tribes and communities for survival, nowadays it happens to everyone for different reasons like evolution, well-being and winning a championship or business growth.

We need to socialize

socializing imagem with birds

As mention in the netflix documentary about How to Live to 100, Wherever You Are in the World one of crucial point about longevity is "Connect with others as often as possible"

Working in groups lets us use different skills and views, leading to new solutions and better decisions. When people work together, they bring their unique talents and ideas, which can combine to create something greater than they could alone. Teamwork boosts creativity as members build on each other’s ideas, creating new thoughts and discoveries. For engineering teams this is pretty much the same, even if you work with a small team, establishing some rules are important to avoid misalignment during the daily work. For that, it is good to sit together and create what we call "Working Agreements".

Working agreements

Working agreements or team agreements exist to establish a common understanding of how the team will work together, define expectations, and create a foundation for effective collaboration.

Here's a breakdown of why working agreements are important and examples of important projects that use them.

Importance of Working Agreements

  1. Clarity and Expectations:

    • Working agreements clearly define roles, responsibilities, and processes within the team. This ensures that all members know what is expected of them and what they can expect from others.
  2. Conflict Resolution:

    • By setting ground rules for communication and collaboration, working agreements help in resolving conflicts by providing a framework for addressing disagreements.
  3. Efficiency and Productivity:

    • Teams with well-defined working agreements can work more efficiently as they spend less time dealing with misunderstandings and more time focusing on their work.
  4. Accountability:

    • Working agreements hold team members accountable for their contributions and adherence to the agreed-upon processes.
  5. Cohesion and Culture:

    • They help build a positive team culture by fostering mutual respect and understanding among team members.

Who Uses Working Agreements?

Working agreements are used by various types of teams, including:

  • Software Development Teams: Both in-house and remote development teams use working agreements to coordinate efforts and ensure consistent practices. For distributed teams are highly recommended given the fact that people might not be able even to talk on synchronous way.

  • Agile Teams: Agile methodologies like Scrum and Kanban often emphasize the use of working agreements to support iterative and collaborative work.

  • Open Source Projects: Many open source projects adopt working agreements, or similar practices, to manage contributions from a diverse and geographically distributed group of developers.

How to apply it?

how to apply working agreements

It’s not a big deal or rocket science. I recommend organizing a meeting with your team to start writing down basic guidelines for working together. These guidelines can include anything that will make daily work easier and ensure everyone is on the same page. For example, decide which tool to use for communication: Slack, Discord, WhatsApp? How will you interact there—via channels or direct messages (DMs)? Will you have a plan for your team? Are you going to follow a project management methodology? Which one—Scrum, for instance?

After reaching an agreement, make sure to write it down somewhere accessible to the entire team, such as GitHub, Google Docs, or Confluence. Also, review it regularly and use it as onboarding material for new members. Below, I've listed some famous guidelines from open-source projects that use the same contribution ideas. They have a broader approach, but the rules and guidelines generally follow the same principles.

Examples guidelines and agreements

1. Linux Kernel:

The Linux kernel project has a well-defined contribution process documented in its Code of Conduct and Contributor Covenant. These documents outline how contributors should interact, resolve conflicts, and participate in the project. While not a "working agreement" in the traditional sense, they serve a similar purpose by setting expectations for behavior and contribution.

2. GNU Project:

The GNU Project, which oversees the development of the GNU operating system and various software, follows the GNU Kind Communication Guidelines. These guidelines emphasize respectful communication and cooperation, serving as a working agreement to foster a collaborative environment.

3. Apache Software Foundation (ASF):

The Apache Software Foundation hosts numerous open source projects, each with its own set of governance and contribution guidelines. For example, the Apache Software Foundation Code of Conduct applies to all ASF projects, outlining expected behaviors and processes for collaboration.

4. Mozilla:

Mozilla, the organization behind the Firefox browser and other open source projects, has a Community Participation Guidelines document. This serves as a working agreement by defining how contributors should engage with one another and the broader community.

Conclusion

Working agreements are a vital component of successful engineering teams, whether in traditional settings or open source projects. They provide structure, clarity, and a framework for collaboration that helps teams work more effectively and harmoniously. Projects like the Linux kernel, GNU, Apache, and Mozilla illustrate how such agreements can be implemented in open source environments to manage diverse contributions and maintain a positive community atmosphere and in the end, deliver one of the most important legacies for the world.

If you as a software engineer, an engineering manager or a person outside of the IT industry feels that your team takes too much time in solving simple problems, I suggest you try it.

Top comments (0)