Why Having Clear Responsibilities For Your Engineering Team Is Important
Why working in a team with no structure or organization sucks
Working in a team with no structure or organization is difficult. Things can get confusing and messy, as there is a lack of clarity and poor communication. In a team like this, members will likely struggle with knowing what is expected from them, what their roles and responsibilities are, and getting along with their coworkers (lack of teamwork). All of this has an effect on productivity, quality, and progress of a project.
Other reasons why working in a team with no structure and organization is difficult:
- Lack of communication. It is harder for team members to communicate effectively and be on the loop about the project. It is also difficult to know who is responsible for what.
- Lack of accountability. With no structure present, it is harder to hold team members accountable for their work. This leads to a lack of motivation and poor-quality work.
- Wasting time and resources. Without structure and a clear understanding of expectations, team members may not know how to make use of their skills efficiently, as they may be working on tasks that do not fully utilize their abilities to their full potential, or may be duplicating others’ efforts.
- Lack of coordination. Harder to make sure that everyone is on the same page, resulting in misunderstandings, hindering progress and productivity.
It is also very frustrating.
As such, having clear responsibilities and an organized team is important in order for team members to efficiently use their skills and for the team to function successfully. It is also helpful for coordination and ensuring everyone is working towards the same goals.
So, why is it important?
How do clear responsibilities affect a team
1. More efficient and productive team
Having clear responsibilities within a team is crucial for efficiency and productivity. When team members have clear roles and responsibilities, they know exactly what is expected of them and can successfully focus on specific tasks. With this, it is easier to avoid confusion between team members and duplication of efforts.
2. Improved accountability
Having clear responsibilities improves accountability among team members. As team members are responsible for specific tasks, they are more likely to take pride over their work and be motivated to do their best, which leads to higher-quality work and better outcomes.
3. Positive team culture
Clear responsibility within a team is more likely to improve its culture, and how team members communicate and get along with each other. Team members are more likely to maintain healthy communication, as they now know who to reach out to for any questions or issues. Also, since they have a clear understanding of their tasks and what is expected from them, they are more likely to feel like they are contributing to the team in meaningful ways, making them feel satisfied with their work and like a valued member of the team, leading to a more positive work environment and better team work.
Code ownership, a solution: Integrating code ownership models in a team to improve structure and organization
Integrating code ownership models greatly improves the structure, as well as the workflow of a team. Code ownership models help increase productivity and efficiency in a team’s workflow, but it is also important to be mindful of the model that best fits a team’s needs. Overall, code ownership helps team members have a clear understanding of the responsibilities for the maintenance and quality of a code base. This is crucial in a working environment with multiple people, as they are all working in the same code base.
The code ownership models make sure that there is always someone responsible for a piece of code in case other team members have questions regarding a particular source code. Also, this is more likely to prevent conflicts that arise when multiple people try to make changes to the same code at the same time.
Furthermore, code ownership improves communication between team members, as it becomes easier to share knowledge about a particular source code.
Companies using code ownership
Code ownership proves to be an efficient method to manage teams and code bases; resulting in a widespread practice that many large companies, such as Microsoft, Twitch, and Google, have adopted.
How each company uses code ownership models differs, but they all seem to have a common goal: high-quality software.
Microsoft - strong code ownership (kind of)
Microsoft favors strong code ownership–kind of. This is because there is no single code owner. Instead, their model is based on various individuals with high-expertise or higher seniority to do code reviews. Microsoft believes that a code owner with high-expertise is more likely to deliver higher-quality software with fewer mistakes. They also act as a single point of contact for other developers who have questions or issues with a particular source code.
Microsoft published a study that further explores the effects of ownership. The study states that they believe that someone who performs a task repeatedly is most likely to take less time to deliver high-quality results, which can also be applied to software development, a field where no task is ever the same.
For example, when a developer works on the same source code repeatedly, they are more likely to be able to solve different problems in an efficient manner, due to gaining more knowledge and experience in that system. The study states, “...found that increased experience increases a developer’s knowledge of the architectural domain of the system. Repeatedly using a particular API, or working on a particular system creates episodic knowledge. Robillard indicates that the lack of such knowledge negatively affects the quality of software…”. In other words, they claim that reusing knowledge and experience is the better option in order to maintain the quality. That way, developers do not have to waste time and resources trying to acquire new knowledge as they work on different projects/tasks.
The study concluded that higher levels of ownership result in higher-quality code with less errors.
Google - strong code ownership
Google uses the strong code ownership model as well, in which a single individual is required to review code changes other engineers make.
Google is a bit more stricter than Microsoft, as it has company-wide policies around code reviews that every code owner/reviewer must fulfill. In Microsoft, things are more lenient as changes and reviews depend on how each team works.
For example, at Google, every code change, no matter how big or small, requires code review. Also, most code changes are approved by a single code owner/reviewer that has clear ownership rights and readability rights. Meaning, only those who have code ownership and a readability certification are able to approve changes. The readability certification shows that you know how good/clean code looks, and must be obtained for each programming language, ensuring consistency in style and design. On the other hand, Microsoft does not require code owners to have readability rights; reviews are made by those who have higher expertise and seniority rather than those who are ‘certified’.
So, as long as an individual is a code owner and has readability rights, they are able to approve code changes, despite their seniority level.