일기장/2011-07-02

내 마음의 코드 품질 지수. 프로젝트 할 때마다 대략 점수를 매겨본다. 이 언어, 이 프레임워크로 할 수 있는 최선의 코드를 100점으로 볼 때, 우리 코드의 점수는 얼마인가. 이콜레모를 시작하고 나서 기록한 최고의 점수는 스마트패스원 안드로이드 버전. 85점은 되지 않았나 싶다. 경이적인 생산성을 발휘했었고. 스마트패스원 아이폰 버전은 좀 나쁜 편. 55점 정도. 최악은 웰게이트 5개월 째의 캘린더, 15점. 그래도 3주 동안 다 갈아 엎어서 70점대로 만들고 끝낼 수 있었다. 티몬에서 만난 레거시 코드는 30점, PHP로 일차 갈아엎고 45점, 파이썬으로 갈아엎은 코드는 70점 정도.

이번 프로젝트도 좋은 느낌은 아니다. 웹, 아이폰 모두 50점 안팎인 듯. 웹 쪽은 써니 때보다 후퇴했고, 아이폰 쪽은 스마트패스원 때보다 좋은 점도 있고 나쁜 점도 있는 정도. 웹 쪽은 전반적으로 method 길이도 길고, cyclomatic complexity도 높다. duplication도 엄청 많고. 아이폰 쪽은 기반 클래스는 지저분하지만 인터페이스는 그나마 괜찮게 빠져서 다행.

근데 코드 퀄리티 올리기가 뜻대로 잘 안된다. 프레임워크의 설계가 지속적으로 개선되어야 하는데, 기능만 추가되고 설계는 점점 후퇴하고 있다. 제대로 하자면 디자인 세션을 몇 번 열어서 차이 나는 점들 맞추고, 코드 리뷰 정기적으로 해야 할 텐데, 내가 하자고 하지 않으면 그런 세션이 열리지 않고, 또 내가 하자고 해서 열면 내가 부담이 있다보니 이래저래 잘 안하게 된다. 또, 코드 리뷰가 사실 ROI가 나오기 쉽지 않은 활동이기도 하다.

원래는 이 프로젝트 끝나면 괜찮은 자바 프레임워크 하나 나와 있을 걸로 기대했는데, 이대로는 정말 써니 프로젝트 때의 결과물만도 못한 게 나올 것 같다. 재활용은 거의 불가능.

팀이 뭉쳐 있지 않은 것도 여러 가지로 힘든 요소 중 하나. 원격 팀이 잘 되는 경우는 오픈소스 프로젝트처럼 리더가 명확하거나, 혹은 본사에서 미션을 디테일하게 설정해서 원격지에서 일하는 프로그래머에게 미션을 주는 경우인데, 우리는 원격 팀이 잘 굴러갈 만한 요소를 전혀 갖고 있지 않다.

적어도 70점 수준은 넘겨야 할 텐데 어떻게 해야 할까. 일단 인지 게임부터 시작해볼까. 코드를 보다가 냄새 맡고 인상 찌푸려지는 회수를 매일매일 재볼까?