이번 게시글에서는 협업에서 컨벤션에 대한 생각을 정리해보려고 한다. 나중에 성장한 후에 현재의 나를 되돌아볼 수 있도록, 다른 글과는 다르게 두서없이 지금의 생각을 그대로 담아 작성할 예정이다.
사실 협업에서 컨벤션을 설정하는 것은 매우 당연한 일이다. 그러나 나는 직접적인 필요성을 느끼기 전까지는 자유로운 사고방식을 지향했기 때문에, 컨벤션에 대해 크게 신경 쓰지 않았고, 진행하는 프로젝트에서도 굳이 컨벤션을 정해 진행하지 않았다.
이러한 생각을 가지게 된 계기는 bamboo-forest_backend 프로젝트를 진행하면서였다. 프로젝트를 진행하며, [책] Modern java in Action 후기에서도 언급했듯이, "Modern Java in Action"을 읽고 불변성의 중요성에 대해 깊이 공감하게 되었다. 그 결과, 코드에서 final 처리를 명시적으로 하여 최대한 부작용 없는 코드를 구현하고자 했고, 이를 통해 코드의 가독성을 높이려는 노력을 기울였다.
하지만 이러한 개인적인 코딩 스타일을 팀원에게 강요할 수 없었기 때문에, 컨벤션과 관련된 부분은 팀원들과 논의하지 않았다. 대신 기본적인 자바 컨벤션과 같은, 필수적인 사항에 대해서만 리뷰를 진행했다.
서로의 코드를 존중하는 분위기 속에서 프로젝트를 진행하다 보니, 코드리뷰를 하는 것도 점점 더 어려워졌고, 다른 사람이 작성한 코드를 수정하기도 불편해지는 상황에 직면하게 되었다. 결과적으로, 형상 관리 도구를 제대로 활용하지 못하는 상황에 이르렀고, 이는 협업의 비효율성을 초래했다.
이러한 문제를 겪으면서, 컨벤션의 중요성을 새삼 깨닫게 되었다. 사실 나는 다른 사람의 코드를 존중하는 성격이기 때문에, 컨벤션의 필요성에 대해 깊이 고민하지 않았던 것이 사실이다.
하지만 그렇다고 해서 컨벤션을 지나치게 엄격하게 정하는 것도 협업에 부정적인 영향을 미칠 수 있다. 너무 엄격한 규칙은 협업 과정에서 불필요한 긴장감을 조성할 수 있고 이는 스트레스를 유발할 수 있다. 따라서 앞으로는 프로젝트를 진행할 때 최소한의 컨벤션을 정하고, 이 컨벤션을 기반으로 데이터를 쌓아나갈 계획이다. 이를 통해 팀원들이 공통의 기준을 가지고 협업할 수 있도록 하면서도, 유연성을 잃지 않는 방향으로 나아가려고 한다.
결국, 이러한 고민과 경험은 협업 과정에서 얻을 수 있는 중요한 교훈이라고 생각한다. 나는 이제 컨벤션은 단순히 코딩 스타일을 통일하는 것을 넘어서, 팀원 간의 원활한 소통과 협력을 촉진하는 데 중요한 역할을 한다고 생각한다.