익스트림 프로그래밍(Extreme Programming, XP)의 실천법으로, "이 모듈은 A 담당"처럼 개인에게 소유권을 두지 않고 팀 전체가 코드 전체를 소유하는 방식이다. 주문 기능을 만들다 쿠폰 코드를 고쳐야 하면 담당자에게 요청하지 않고 직접 고친다.
소유권의 세 가지 형태 (마틴 파울러의 분류)
| 형태 | 의미 |
|---|---|
| 강한 소유 (strong) | 담당자만 그 코드를 수정할 수 있다 |
| 약한 소유 (weak) | 담당자는 있지만 다른 사람도 수정할 수 있다 |
| 집단 소유 (collective) | 담당자 없이 팀 전체가 공동 소유한다 |
얻는 것
- 지식 사일로(Knowledge Silo)와 버스 팩터(Bus Factor) 해소: "결제는 B님만 알아요" 상태에서 B가 자리를 비우면 아무도 못 고친다. 여러 사람이 만지며 이해가 퍼진다
- 병목 감소: 다른 모듈 수정 때문에 담당자를 기다리지 않는다
- 리팩터링이 쉬워진다: 여러 모듈에 흩어진 중복을 경계를 넘어 한 번에 정리할 수 있다 → 리팩터링, 산탄총 수술과 뒤엉킨 변경
함께 있어야 하는 안전장치
누구나 아무렇게나 고친다는 뜻이 아니다. XP에서는 다른 실천법과 맞물려야 작동한다.
그래서 "누구나 고칠 수 있다"와 "누구나 품질에 책임진다"가 한 묶음이다.
현실적인 절충
결제, 보안, 정산처럼 전문성이 필요한 영역은 수정 권한은 팀 전체에 두되 리뷰는 경험자가 참여하게 할 수 있다. 파울러의 분류로는 약한 소유에 가까워지지만, 수정 권한과 리뷰 책임을 나눠 생각하는 것이 핵심이다. 파울러는 셋 중 강한 소유를 가장 꺼리고, 약한 소유와 집단 소유는 둘 다 잘 돌아갈 수 있지만 개인적으로는 집단 소유를 선호한다고 말한다.
본질은 수정 권한의 문제가 아니라 팀 안에서 지식과 책임을 나누는 것이다. 『함께 자라기』의 표현으로는 좋은 통찰은 한 명만 있어도 퍼지고, 실수는 여러 사람이 모두 놓쳐야만 새어 나가는 구조다 → 함께 자라기 (책 개요). 팀 구조가 코드 구조를 닮는다는 콘웨이의 법칙와도 연결된다.
출처: CodeOwnership Martin Fowler