💡 핵심 인사이트
공동 코드 소유권은 XP(익스트림 프로그래밍)의 핵심 원칙 중 하나로, "이 모듈은 내가 짰으니 내 허락 없이 아무도 건들지 마!"라는 개인주의(Silo)를 철저히 박살 내는 문화입니다.
팀원 누구나 언제든지 프로젝트 전체 코드베이스의 어떤 부분이든 자유롭게 수정하고 개선할 수 있는 권한과 책임을 동시에 가집니다.


Ⅰ. 개인 소유권 (Individual Ownership)의 폐해

과거의 개발팀은 구역을 나눴습니다. "결제 모듈은 김대리가, 로그인 로직은 박대리가 전담한다."

  • 병목 현상 (Bottleneck): 어느 날 결제 쪽에 버그가 났는데 김대리가 휴가를 갔거나 퇴사해 버렸습니다. 다른 팀원들은 남의 구역이라 코드를 전혀 이해하지 못해 서비스가 일주일간 마비됩니다. (이를 '버스 팩터(Bus Factor)가 1이다'라고 합니다. 김대리가 버스에 치이면 프로젝트가 망한다는 뜻입니다.)
  • 이기주의와 방어적 코딩: 남이 내 코드를 고치려 하면 "네가 내 코드 의도를 알아?"라며 텃세를 부리고 기술 부채가 썩어 들어가도 남이 터치하지 못합니다.

Ⅱ. 공동 코드 소유의 패러다임 전환

공동 코드 소유는 "모든 코드는 팀 전체의 자산이다"라고 선언하는 것입니다.

  1. 자유로운 수정: 내가 로그인 담당이라도, 결제 모듈에서 오타나 더 좋은 로직을 발견하면 김대리에게 허락받지 않고 즉시 내가 직접 코드를 수정(Refactoring)하고 커밋합니다.
  2. 집단 지성과 품질 향상: 한 사람의 좁은 시야에 갇히지 않고, 시니어와 주니어 등 수많은 사람의 눈과 손을 거치면서 코드의 품질이 극적으로 정화됩니다.
  3. 버스 팩터 분산: 누군가 갑자기 아파서 안 나와도, 다른 팀원들이 이미 그 코드를 여러 번 만져보고 리뷰했기 때문에 아무런 차질 없이 개발이 이어집니다.

Ⅲ. 공동 소유를 가능하게 하는 필수 방어막 (안전장치)

"누구나 아무 코드나 다 뜯어고칠 수 있다면, 신입사원이 핵심 코드를 잘못 건드려서 서버가 터지면 어떡하죠?" 이 당연한 공포 때문에, 공동 코드 소유는 반드시 아래의 두 가지 강력한 XP 실천법(안전망)이 완벽히 갖춰진 상태에서만 가동해야 합니다.

  1. 자동화된 테스트 (TDD): 수천 개의 테스트 코드가 방어벽을 쳐야 합니다. 신입사원이 남의 코드를 잘못 고쳤다면, 서버에 배포되기 전에 테스트 코드가 "삐빅! 결제 로직이 깨졌습니다!"라며 즉시 에러를 뿜어주어야(안전망) 마음 놓고 남의 코드를 만질 수 있습니다.
  2. 지속적 통합 (CI, Continuous Integration): 수정한 코드를 혼자 들고 있지 않고 하루에 수십 번씩 중앙 저장소에 합치면서(Merge), 내가 수정한 부분이 다른 사람 코드와 충돌하지 않는지 시스템이 실시간으로 감시해야 합니다.

📢 섹션 요약 비유: 개인 소유권은 각자 자기 땅에 담장을 치고 **"내 마당(코드)에 쓰레기가 있든 말든 참견하지 마!"**라고 외치는 이기적인 주택가입니다. 반면 공동 코드 소유는 **'마을 공용 텃밭'**입니다. 지나가던 누구라도 잡초(버그)를 발견하면 즉시 뽑아버리고 물(개선)을 줍니다. 단, 남의 농작물을 망치지 못하도록 텃밭에는 CCTV와 경보기(자동화된 테스트)가 촘촘히 설치되어 있어야 합니다.