나는 유튜브나 인프런 등 온라인으로 강의를 자주 들으면서 컨벤션이라는 단어를 자주 접하게 되었다. 컨벤션.. 매우 생소한 단어라 알아보았다.
사전적 의미는 관습이나 관례인데, 보통 코딩을 하다가 "이렇게 하는 것이 개발 컨벤션입니다."라고 자주 들었다. 코딩하는 관습이나 스타일이라고 해석할 수 있겠지만 코딩보다는 뭐랄까.. 프로젝트의 구조를 구성할 때 많이 들었던 거 같았다.
우선 위 글을 참조해 작성해봤다.
컨벤션은 Convention over Configuration(CoC)를 뜻하며, 간단하게 설명하자면 설정 이상의 관례라고 표현할 수 있겠다. CoC, 컨벤션은 개발자가 정해야하는 수많은 결정들을 줄여, 단순성을 확보하면서 유연성을 잃어버리지 않도록 하기 위한 소프트웨어 디자인 패러다임이라고 한다.
팀원간의 협업으로 개발을 한다면, 팀원 개개인이 코드를 작성하는 스타일이나 변수명을 네이밍 하는 방법 등 천차만별로 달라질 수 있다고 본다. 일상생활에서 의사소통을 하며 의견 차이가 벌어지는 것처럼 다 같이 작성해야 하는 프로그래밍 코드에서는 안 그럴 것인가?
나는 이러한 부분에는 극도로 공감한다. 남자라면 다녀온다는 군대에서 정말 나와는 생각도 다르고 살아온 배경이 다른 사람과 생활하며 임무를 수행 한다는 자체가 처음에는 스트레스를 받았다. 상급자든 하급자든 둘 중 하나는 말이다.
어느정도 스트레스를 받으며 경험이 쌓이고 각자의 스타일이 파악된다면 트러블 없이 부딪힘이 줄어들며, 일이 순조로워지고 군대에서 속된 말고 짬 찼다고 한다.
그 사람에 대한 이해일 수 있고 조직에 이해일 수 있지만, 본론으로 돌아와 컨벤션은 대다수의 인원이 코드를 작성하기 때문에 효율적, 생산적으로 결과물을 도출하기 위해 지켜야 하는 룰 정도로 이해하면 될듯하다.
살짝 의아한 부분은 단순성을 확보하면서 유연성을 잃어버리지 않다는 부분인데.. 조직에서는 단순성과 효율성에 초점을 맞추어 하나의 확립된 컨벤션을 문제가 생기지 않는 한 계속 유지할 것이고 그렇게 된다면 유연성은 자연스럽게 떨어지기 마련이다.
조직에서는 단순성과 유연성 두 마리의 토끼를 어떻게 잡을 것인가를 고민해야하지 않을까?