본문 바로가기
Thoughts

시애틀 (5)

by 이병준 2015. 11. 19.

지난 몇년간 써볼 기회가 없던 언어로 이런 저런 삽질을 하고 있노라면 역시 리팩터링의 백미는 다 만들어진 시스템을 뜯어고칠 때의 희열이라는 것을 새삼 깨닫게 된다. 


대개, 리팩터링 자체가 과제로 주어지는 모듈의 소스코드를 가만히 들여다보면, 어떤 공통점을 발견할 수 있다. 대체로 그런 모듈은 입문서의 소스코드 수준에서 시작했다가, 오류가 없다는 것이 검증되고 나면 수많은 이해 당사자들로부터 밀려오는 요구사항을 반영하는 과정에서 쓸데없이 커지고, 복잡해지고, 너덜너덜해진다. 요구사항이 접수되는 속도가 상상을 초월할 정도로 빠르기 때문에, 해당 모듈의 구조 자체를 검증하는 일은 자연스럽게 우선순위에서 밀린다.


"물론 명민한 개발자라면 중간 중간 불합리한 부분을 뜯어고치는 시도를 할 수도 있겠다. 그러나 대부분은 그런 시도를 포기하는데, 정말로 고칠 수 없어서라기 보다는 그 과정에서 API를 변경하게 되지는 않을까 두렵기 때문이다. API를 고쳐야 하는 일이 벌어지면, 해당 API의 소비자들과 이런 저런 조율을 하느라 굉장히 많은 시간을 소비하게 되기 때문에 어지간하면 피하는 것이다.... " 라고 이야기하는 것을 아마 이 글을 읽는 여러분도 많이 들어보셨을 것이다. 


"그러나 지금까지 겪어온 바에 따르면, 그런 이야기는 그저 핑계에 가깝다. API를 건드리지 않고도 상당수의 구조변경은 가능할 뿐 아니라, 하위호환성을 보장하기 위한 패턴을 따르면 신규 API를 도입하는 것 뿐 아니라 기존 사용자를 신규 API를 사용하도록 유도하는 것도 그다지 어렵지 않게 처리할 수 있다. 그냥 게을러서 안하는 것이다...." 라는 이야기를 하는 사람도, 아마 이 글을 읽는 여러분께서는 많이 만나보셨을 것이다. 


나는 어느쪽이었냐 하면 주로 후자 스타일로 말하는 사람이었다. 괜히 이런 저런 이야기를 하면서, 그 때 구조변경을 미뤘던 이유가 무엇이었는지 설명하는 사람들을 만나면, 어쩐지 방어적인데다 게으르게 느껴져서 별로 마음에 들지 않아하는 부류의 인간이었던 것이다. 덤으로 '니가 경험이 없어서 그렇게 말할 수도 있겠는데...'를 입밖에 내는 사람을 만나면, 그런 사람들은 아예 상종을 하지 않았다. 


그런데 지금에 와서 내가 그렇게 방어적인 개발자를 많이 만나고 실망했던 이유를 곰곰이 돌아보니, 아, 그건 전부 내가 지나치게 공격적이었기 때문이었던 것 같다. 공격적인 사람을 만나면 본능적으로 방어적이 되는 것이 사람의 본능. 내가 방어적인 사람을 많이 만났던 건 전부 내가 쓸데없이 공격적이었기 때문이었구나, 하는 생각이 드는 것이다. 


시애틀에는 공격적인 개발자는 드물다. 모두들 기꺼이 도와주려고 하고, 기꺼이 자기 의견을 나누며, 타인의 실수를 실수가 아니라 교훈으로 받아들이는 사람이 대부분이다. 아마 실패를 교훈으로 받아들이는 사회 분위기는, 바로 그런 태도에서 비롯된 것이 아닐까 싶다. 


그래서 다시 깨닫는 것은, 미국에 온 것이 내게는 자기개조의 기회이기도 하다는 것이다. 공격적이었던 나를 좀 더 겸손하고 차분한 사람으로 바꾸는 자기 개조의 기회.


"리. 요즘 너무 조용한데, 원래 그렇게 말이 없어?"


시발 영어가 안 되어서 닥치고 있는 거거든? 


아, 이렇게 한 일 년 살다보면 자연스럽게 공격적인 인간에서 차분하고 과묵하며 겸손한 인간으로 바뀌게 되지 않을까 싶다. 말이 많다 보면 자연스럽게 공격적인 사람으로 비춰지게 되기도 하는 법이니...