Collective code ownership is an important factor of XP

2017-12-15 13:26:00
Chuck, Renee
Original
956

There are strong code ownership, weak code ownership, and collective code ownership according to Martine Fowler, "Chief Scientist" of ThoughtWorks. The former two 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 code while the owner has to look after it.


Problems of Individual Code Ownership

Among 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/understand 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 is always developer 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 the lack of communication. Redundant work is a waste of human resource.

4. Knowledge cannot be shared within the team.

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


5. It is very risky as only the one who develope 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 of a coin. Collective code ownership makes it difficult to hold a certain developer accountable. When everyone is responsible, no one is responsible.



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

Write a Comment
Comment will be posted once reviewed.
blog-why

Why choose ZenTao

Leading

Serving 30,000+ teams

Serving 200,000+ projects

Serving 800,000+ developers

The #1 in local market share

Free & Open

Open source and unlimited to commercial

Powerful extension mechanism and various plug-ins

Available on Github

Either Self-Host or Cloud Apps

Professional

Refined ALM support

Zero downtime upgrades 

Integrate Git and SVN (pro)

Word and Excel import & export (pro)

Preview-Edit-Diff document online(ent)

Integrate OPS-Attendance-Feedback(ent)

Guaranteed

ZenTao team has involved in open source since 2004

Frequent releases and free upgrade forever(even self-hosted) 

Instant and powerful support for 20000+ companies

Easy

Out of the box, Less config

Nice price for small team($9.9)

Design to adhere Scrum Best practice

For Agile but not restrict to Agile

Flexible

Applicable for different sized teams

Applicable for Agile/Waterfall

Modules can be used in any combination

Convenient customization