정리정돈에 대해서 진지하게 생각해보게 되다.

최근 삼주간, 대학생인 여자친구가 거의 매일 집에 왔다.

내가 회사에 가 있는 동안, 먼저 와서 나름의 자기 공부와 할 일을 하고

퇴근하고 같이 저녁을 먹고 데이트를 하다가 집에갔다.

자주 내 오피스텔에 다른 사람이 놀러오다보니, 혼자서는 잘 눈치채지 못했던 일이

문제가 되었다. 집이 점점 어지러워지고, 그러다보니 10평 남짓한 방이 처음으로

좁게 느껴졌다. 조심스럽게 이야기를 꺼내서, 여자친구와 문제를 파악할 수 있었다.

원인은 바로, 각 물건들이 있어야할 원래 자리가 명확하지 않기 때문이었다.

처음에는 바쁘고, 청소라는게 오래 걸려서 그런 줄 알았지만, 각 물건들의 원래 자리를

정하고, 공간을 나름대로 분할하고 나서 노동력의 부족 때문에 일어난 일이 아니란 걸

확신했다. 각자 생활을 하면, 매번 다른 도구와 물건들을 사용할 수 밖에 없다.

그러다보면, 매번 다른 공간에 엉뚱한 물건들이 어지러져 있는 데다가,

정작 그 물건이 필요할 때, 그 물건을 찾는데 노력도 상당히 커진다.

그런데, 각 물건들의 자리가 명확하고 , 그 것들의 집합이 특정 공간에 할당되기만 하면

물건을 사용하고 제자리에 놓게 되면서, 단순히 생활하는 것으로도 집은 점점 더

정갈하고, 정돈된 모습을 되찾게 되는 것이다. 다행이 여자친구와 감정소모나 다툼 없이

정확하게 문제를 파악하고 해결할 수 있었다.

문득 이 이야기를 회사에서 하다가, 이 교훈이나 요점이 코드에도 적용됨을 깨달았다.

“라이브 서비스 코드는 반드시 더러워진다. “ 특히 게임회사 시니어들에게 들을 수 있는 일종의 민담이나 전설… 또는 그것의 엔딩을 표현하는 말이다. 복잡성과 불확실성을 잔뜩 머금은 매번의 업데이트와 확장을 거치게 되는 게임 프로젝트의 특성상 한 집에 여러명이 다른 생활 양식을 가지고 물건들을 사용하며 생활 하듯이, 온갖 모듈과 라이브러리들을 필요에 따라 활용과 수정을 반복하기 때문일 것이다.

그렇다면, 코드의 가독성이나 우아함을 유지하기 위해서도, 매번의 사용과 활용을 제어하고 확인하는 작업만큼이나, 한 단위의 목적, 기능과 의도의 구체적인 명시, 그리고 그 단위들의 집합을 공고히하고, 개발팀 내에 공유하는 것이 상당히 중요하지 않을까 싶다.

재미있는 일이다. 이제 제법 코드를 짜고 정리하는 일의 방법론과 생활의 방법론이 서로의 앎과 즐거움을 공유하고 있다.