점심시간에 동료와 근황을 나누웠다. 직장 생활을 하다 보면 이런 자리가 자주 있을 법도 하지만, 요즘은 온라인으로 일하다보니 사무실에서 함께 밥 먹고 잡답 나누는 일이 드물다. 가벼운 농담이나 각자 생활에 대해 이런저런 이야기를 하다 보니 분위기가 부드러워졌다. 그 중 내 귀에 유독 오래 남은 화재가 하나 있었다. 바로 '요가'였다.
"너무 힘을 주고 자세를 만들면 선생님께 혼난다."
처음 들었을 때는 조금 의아했다. 열심히 하는데 왜 꾸중을 듣는 걸까? 우리는 보통 더 노력하고 더 몰입하는 게 좋은 태도라고 생각한다. 그런데 요가에서는 그 반대의 가르침이 주어진다는 사실이 신선하게 다가 왔다.
곰곰히 생각해 보았다. 이유는 이렇다. 요가의 본래 목적은 건강과 균형인데 무리해서 자세를 잡으면 몸을 해칠 수 있다. 순간적인 성취감을 느낄지 몰라도 그 결과가 발목이나 허리의 부상이라면 본질을 잃는 셈이다. 선생님이 경계한 것도 바로 이 점일 것이다. 요가에서는 이런 태도를 '아상(我相)'이라고 부른다. 자신을 드러내려는 마음, 자아에 대한 집착이다.
나도 욕심을 부리다 발목을 다친적이 있다. 누군가에게 잘 보이려는 마음은 아니었다. 스스로 '이 정도는 할 수 있다'는 확신을 증명하고 싶었던 것 같다. 다치고 나니 속상했다.
소프트웨어 개발에서도 비슷한 상황을 여러 번 겪었다. 단순하게 구현하면 될 문제를 괜히 멋있어 보이고 싶어서 복잡하게 푼 적이 있었다. 새로운 디자인 패턴을 도입해 보고 싶다든지, 쓸데없이 일반화된 추상화를 적용해 본다든지, 재사용 가능성이라는 명분을 내세워 과도하게 범용적인 구조를 만들기도 했다. 그 결과는 늘 비슷했다. 코드는 점점 이해하기 어려워지고 유지보수가 힘들어졌다. 혼자 만들 때는 제법 근사해 보였지만, 막상 동료가 읽고 수정하려 할 때는 난관이 가득했다.
난 이런 코드를 '보여주기식 코드'라고 생각한다. 남들에게 잘난 척하려는 코드이기도 하고, 동시에 자기 자신에게 과시하는 코드이기도 하다. "봐라, 나는 이런 기법도 안다"라는 식으로. 하지만 남는 건 불필요하게 복잡해진 설계와 쌓여가는 팀의 피로감뿐이다.
이런 시행착오는 이상하리만치 반복된다. 10년 넘게 개발 일을 하면서도 잘 고쳐지지 않는다. 분명 지난 번에 같은 실수를 했든데 어느 순간 또 욕심을 내고 후회한다. 그럴 때면 '내게는 재능이 부족한 게 아닐까'하고 스스로 자책한다. 위대한 소설가가 자신의 작품을 '쓰레기'라고 폄하할 때, 그 정도 문장력을 갖추지 못한 나로서는 과도한 겸손처럼 들렸다. 그들의 명성을 감안한다면 단순한 겸손이 아니라 자기 한계를 절실히 자각한 순간의 고백일 것이다.
이런 사실을 함께 일하는 동료가 알아챈다면 그들은 어떻게 생각할까? '그래도 괜찮다, 누구나 시행착오는 겪는다'라고 위로할까? 아니면 '연차가 많아도 별거 아니네'라고 조롱할까?
프로그래밍의 목적을 명확히 해야한다. 수익 창출이라면 고객에게 가치 있는 기능을 안정적으로 제공하는 것이 우선이고, 공부라면 새로운 시도를 통해 배움을 얻는 것이 핵심이다. 문제는 종종 이 목적을 잊고 보여주기식 열심에 빠져들 때가 많다는 것이다. 그러면 코드도 꼬이고 마음도 흔들린다.
'너무 힘을 주면 선생님께 혼난다'는 말은 단순한 농담이 아니다. 소프트웨어 개발에도 적용할 수 있는 교훈이다. 보여주기식 마음을 내려놓고 본질에 집중하는 것. 요가에서 '무리하지 않고 호흡을 이어가는 것'이 중요하 듯, 프로그래밍에서도 '일의 목적을 놓치지 않는 지혜'가 중요하다. 멋있게 보이는 코드가 아니라 동료가 읽기 쉽고 유지보수하기 편한 코드가 좋은 코드다.