코딩 스타일은 개인적으로 따르기는 쉬워도, 스타일이란 의제를 놓고 팀 합의를 이끌어가는 과정은 정말로 어려운 문제다. 왜 스타일이 필요한지, 의견 충돌은 왜 일어나는지, 어떻게 합의에 도달하는지 등에 대해 잘 정리한 글이 있어 원저자 Sandi Metz의 허락하에 번역해 공유한다. 원문은 Why We Argue: Style이다.
나는 수년 동안 코드에 대해 논쟁을 하는 이유가 무엇인지, 그리고 격렬하게 엇갈리는 의견들을 건설적인 방향으로 전환하는 방법은 어떤게 있을까 고민해 왔다.
나의 견해는 매우 특이한 상황에서 발견되었다. 나는 불특정 기업들에 가서 며칠에 걸친(3일, 혹은 그 이상의) 객체 지향 설계 강의를 일년에 10회에서 12회 정도를 진행한다. 나는 외부인이었지만, 그들 기업에서 며칠을 보내는것으로도 그 기업들의 보이지 않은 부분들을 볼 수 있었다.
그 때 깨달았던 부분이 여기에 기술되어 있다. 몇몇 기업들은 모두가 대체로 행복해하며 프로그래머도 잘 지내고 있고, 그들 대부분은 이 일에 함께 한다는 동질감을 가지고 있는것 같다. 이런 기업에서는 내 시간의 대부분을 실제 객체 지향 설계 강의에 집중하게 해 준다.
몇몇 다른 기업들은 놀라울 정도로 비참한 상황에 빠져있는 곳도 있다. 많은 불협화음이 존재하고 프로그래머들도 “파벌” 싸움에 휘말려 있기도 하다. 이런 상황에서의 객체 지향 설계 강의는 뿌리 깊은 충돌을 어떻게 해결할까에 대해 광범위하게 그룹 토론의 장으로 바뀌어 버린다.
톨스토이의 “행복한 가정은 서로 비슷하지만, 불행한 가정은 모두 저마다의 이유로 불행하다”라는 유명한 성구는 안나 카레니나의 원칙(Anna Karenina Principle)로 알려져 있다. 그리고 이 법칙은 성공에는 엄청난 판단 기준을 모두 충족해야함을 보여 준다. 행복해지는 유일한 방법은 그 하나 하나 모두를 충족하는 것이다. 불행히도, 이러한 판단 기준의 단 하나라도 만족하지 못하면 불행은 찾아온다. 즉, 행복한 기업은 대부분 비슷하지만, 불행한 기업은 자신들만의 독특한 이유로 불행을 겪고 있는 것이다.
상당수의 강의를 하면서 나는 다양한 불행의 종류를 기업에서 체험하고 나서 행복을 판단하기 위한 몇 가지 일반적인 기준이라는 것을 이해하기 시작했다. 본 뉴스레터는 그 중에서 하나를 토론해 보고 싶고 나머지에 대해서는 향후 뉴스레터에서 언급할 예정이다.
지금 내가 관심있는 것은 자신의 기업의 스타일 가이드에 동의하고 따르는지에 대한 여부 즉, 구문(syntax)의 선택이다. 내가 이런 평범하게 생각하는 이슈에 대해 쓰기 시작한다는 것을 보고 여러분이 놀란다면 다행히 지금의 당신 직장은 좋은 구문(syntax)을 선택하고 있다고 생각한다. 이 토픽의 중요성에 대해 후회하듯 고 개를 흔들며 이 주제의 중요성에 동의하고 있다면 진심으로 나는 당신의 고통에 공감한다.
왜 스타일 가이드라는 것이 있는가?
나는 개인적으로 검토해야 할 모든 코드는 일관된 형식으로 보여줘야 된다고 굳게 믿고 있다. 코드는 쓰는 횟수보다 읽는 횟수가 훨씬 많다. 그래서 코드의 많은 비용은 읽을 때 발생한다. 그러므로 코드는 가독성을 위해 최적화를 해야 한다는 결론, 즉 응용 프로그램의 코드는 모두 같은 스타일로 통일되어야한다는 결정을 이끌어 낼 수 있다. 일반적인 스타일에 맞춤으로써 여러분은 비용을 절감할 수 있다.

