처음 여러명이 일하는 환경에서 형상관리도구를 사용하는 분들께

맞아요. 다른 사람이 쓴 문서에 손을 대는 거 부담스럽죠.

지금 까지 아주 많은 사람들이 한 프로젝트에 속해 일하고 또 이 사람들이 만들어 내는 아주 많은 문서를 감당할 만한 강력한 여러 가지 체계가 개발되었지만 이를 사용하는 사람들의 행동을 살펴 보면 공식으로 여러 사람이 작성해도 된다고 알려진 페이지 소수를 제외한 나머지는 여간해서 다른 사람이 작성한 페이지에 손 대지 않곤 했어요. 단순히 잘못된 그림이나 링크를 수정하거나 오타를 수정하는 것 조차도 그냥 열려 있는 노션 페이지에서 이를 발견한 사람이 수정하면 끝나지만 굳이 문서를 작성한 사람을 찾은 다음 슬랙으로 말을 걸어 오타가 있다고 알려주기도 하고요.

개인적으로는 노션 같은 위키위키 기반에 만들어진 문서 도구는 과거에 ‘문서’라고 부르는 것이 어떤 완결된 선형의 문서를 가리켰다면 이제는 ‘문서’가 여러 사람이 작성한 수많은 문서의 집합을 가리키는 것이기 때문에 누군가 수정할 대상인 ‘문서’는 스스로 작성한 항목에 국한되지 않는다고 생각해요. 문서에 기여하는 모든 사람의 기여 범위는 수많은 문서의 집합 전체에 해당해요.

직업 프로그래머가 아니어서 잘은 모르겠지만 종종 어깨 너머로 바라보는 이들의 작업은 다른 사람이 작성한 코드에 손을 대곤 하는 것 같아 보여요. 코드를 살펴보다가 문제가 생길 때 원인을 알 수 있을 것 같으면 직접 수정해 이를 반영하게 하고 또 이럴 때 사용할 기술적 체계도 잘 갖춰져 있는 것 같고요. 재미있는 점은 프로그래머가 아닌 우리들도 똑같은 형상관리도구를 사용하지만 프로젝트 파일을 수정할 때의 자세는 이들과는 상당히 다르다는 점이예요. 일단 파일 대부분이 텍스트 기반이 아니기 때문에 함부로 수정해서는 안되기도 하지만 수정할 수 있는 상황이어도 위 노션 사례처럼 직접 수정하는 상황을 회피하려는 것처럼 보이곤 해요.

이 주제로 오랜 세월에 걸쳐 애초에 위키나 깃은 권한 범위 안에서는 누구나 무엇이든 고칠 수 있다고 교육해도 잘 안 되더라고요. 한번은 팀에 새로 오신 처음으로 게임 만드는 일을 시작하시는 분이 프로젝트 리파지토리에 뭔가를 올려야 하는 일을 하게 됐어요. 언리얼 에디터에 형상관리도구 환경을 설정하고 파일을 수정한 다음 이를 커밋하고 푸시하는 과정은 어떻게 생각하면 너무나 당연한 일상이지만 이 분께는 결코 그렇지 않았던 모양이었어요. 파일을 수정하고 커밋하고 푸시하는 과정 동안에 겪는 별 것 아닌 메시지들이 뭔가 심각한 문제로 이어질 수 있다는 생각을 한 것 같아요.

우리들이 형상관리도구를 사용하는 근본적인 이유는 인간이 멍청하고 그런 멍청한 인간 여럿이 모이면 좀 더 멍청해지기 때문이예요. 여러 사람이 한 가지 소프트웨어 제품을 개발할 때 우리들 모두가 똑똑하다면 누가 무슨 일을 하고 누가 언제 어디를 수정했는지 기억할 수 있으며 누군가 잘못된 기여를 했다면 누가 어디에 기여했는지 알아내 이를 직접 수정하거나 기여자 본인에게 수정해 달라고 이야기할 수도 있을 거예요. 하지만 인간은 멍청하고 이 모든 것을 기억할 수가 없어요. 당장 내가 뭘 고쳤는지 다음날에도 기억 나지 않는 마당에 백 명도 넘는 사람들이 같은 리파지토리를 쉴 새 없이 고치고 있다면 형상관리도구 없이는 그 누구도 온전한 정신상태를 유지할 수 없을 거예요.

또 한편으로는 인간의 실수를 방어하기 위해 사용하는 것이기도 해요. 누군가는 잘못 수정한 파일을 올리거나 실수로 삭제하면 안되는 파일을 삭제할 수도 있어요. 이 때 누가 어디에 무슨 일을 했는지 형상관리도구가 모두 기억하고 있다가 문제가 생길 때 문제 원인을 쉽게 찾을 수 있어요. 또한 이 모든 수정사항을 기록하고 수정사항 사이를 쉽게 오갈 수 있게 해 주고요. 방금 설명한 잘못된 수정이나 잘못된 삭제가 일어나더라도 이 문제가 순식간에 모든 사람에게 퍼져 문제를 일으키기도 전에 문제를 인지한 누군가가 꽤 간단하게 문제를 해결할 수 있게 해 주며 대부분은 문제가 퍼지기도 전에 문제가 생겼음을 알 수 있게 합니다.

그래서 형상관리도구를 사용하고 있다면 어지간한 실수를 하더라도 이 실수가 팀에 큰 문제를 일으킬 가능성이 없거나 거의 없어요. 아무리 최악의 시나리오를 상상해봐도 프로젝트에 참여한 개인이 형상관리도구에 의해 관리되는 프로젝트에는 할 수 있는 일이 없어요. 종종 퍼포스를 사용하는 팀에 새로 온 분이 리파지토리 루트에 Ctrl + E를 눌러 리파지토리 전체를 체크아웃 하는 정도가 그나마 일어날 수 있는 큰 해프닝 정도예요.

그래서 밥 먹다가 처음 리파지토리에 커밋하고 푸시하며 겪은 여러 상황에 대해 설명하시던 팀원님께 이야기해 드렸어요. 선생님이 형상관리도구를 잘못 사용해 프로젝트를 망가뜨리거나 다른 사람들에게 피해를 줄 방법은 거의 없거나 없으니 좀 더 자신감을 가지고 커밋하세요. 프로젝트가 형상관리도구에 의해 관리되는 한 우리들 개개인의 실수는 거의 아무 문제도 아닙니다.