Collective code ownership is an important factor of XP

 Strong code ownership, weak code ownership and collective code ownership are the three main categories according to Martine Fowler, "Chief Scientist" of ThoughtWorks. 


  • Strong code ownership breaks a codebase into modules and is assigned to one developer. Developers are only allowed to make changes to modules they own.
  • Weak code ownership is modules that are assigned to owners but are allowed to be changed by other people.
  • Collective code ownership abandons any notion of individual ownership of modules. The code base is owned by the entire team and anyone may make changes anywhere. 




Problems of Individual Code Ownership

Among the cases I have known, the teamwork is mostly divided according to features. For example, Developer A is responsible for Feature A, and Developer B is responsible for Feature B. One will not take care of the other one's responsibilities. Consequently, a lot of problems are caused.


1. No cooperation within the team.

Since one is only responsible for the module/feature s/he is developing, no one knows/understands the other one's work. It means cooperation and communication are not much.


2. It is not easy to cultivate team spirit.

No cooperation means no teamwork. Besides, there are always developers who claim challenging tasks/bugs and ones who claim easy ones. This will motivate neither of the two kinds.


3. Redundant features are developed.

This is also caused by a lack of communication. Redundant work is a waste of human resources.


4. Knowledge cannot be shared within the team.

When developing modules/features, a certain knowledge-silo is build up. Because each one is only taking care of his/her responsibility and no cooperation/ communication, the accumulated knowlesge cannot be shared with others.


5. It is very risky as only the one who developed the feature know it. Once the developer leaves, it will cause problems and affect the company.

This is the last thing a company would like to see. If the module owner leaves, no one else can take over his/her module due to the individual code ownership.


Therefore, collective code ownership is practiced in Extreme Programming. It is to bridge the barrier within a team. Each module should be understood by at least two developers who back up with each other, and so knowledge could be passed around and developers can come and go without causing problems.

Collective Code Ownership

The code owned by the entire team and anyone can make changes to it. The benefit of collective code ownership is obvious.

  • Knowledge can be shared.
  • Code style can be unified.
  • Interdependency rather than too much responsibility on individuals.
  • ...

However, there are always two sides to a coin. Collective code ownership makes it difficult to hold a certain developer accountable. When everyone is responsible, no one is responsible.



Conclusion

Strong code ownership and weak code ownership are individual code ownership that module owners are responsible for their own modules. The only difference lies in the weak code ownership allows other developers to change the codebase while the owner has to look after it.  The choice has more to do with the team dynamics. Our team, ZenTao, prefers collective code ownership, particularly in the context of Extreme Programming.


Reference

1. https://martinfowler.com/bliki/CodeOwnership.html

2. https://tobeagile.com/2017/09/13/collective-code-ownership/

3. https://dzone.com/articles/collective-code-ownership-in-agile-teams

4.  https://martinfowler.com/bliki/CodeOwnership.html

Comments

Popular posts from this blog

ZenTao project management software: an Open source Scrum tool and self-hosted solution

Top 6 FREE and Open Source Project Management Systems in 2021

Why Zombie Scrum Teams Don’t Ship Fast