1884년 10월의 어느 날 빈센트 반 고흐는 동생인 테오에게 다음과 같은 편지를 보냈습니다.
"의욕은 실수를 두려워하지 않는다.
잘못을 저지르지 않으면 훌륭하게 될 거라고 말하는 사람들이 있다.
착각이다. 그들은 그렇게 자신의 침체와 평범을 숨기려고 한다.
사람을 바보처럼 노려보는 텅 빈 캔버스를 마주할 때면, 그 위에 무엇이든 그려야 한다. 너는 텅 빈 캔버스가 나를 얼마나 무력하게 만드는 지 모를 것이다. 비어 있는 캔버스가 날 뚫어지게 쳐다보며, "넌 아무것도 될 수 없어"라고 말하는 듯 하다. 캔버스의 백치같은 마법에 홀리면 화가들은 결국 바보가 되어 버리고 말지. 많은 화가들이 캔버스 앞에 서면 그래서 두려워 하지. 반대로 텅 빈 캔버스는 "넌 아무것도 할 수 없어"라는 마법을 깨부수려는 열정적인 화가를 가장 두려워한다."
거대한 일은 계획부터 철저히 한 후에 실행에 들어가야 한다는 믿음은 보편적입니다. 비단 큰 일이 아니어도 그렇습니다. 계획의 치밀함은 고금을 통틀어 중요시되는 덕목입니다. 하지만 너무 계획에 골몰하면 오히려 일이 안 될수도 있습니다. 소프트웨어 개발도 마찬가지입니다. 그래서 '애자일Agile'이란 키워드가 각광을 받고 있습니다. 이 단어에는 여러 가지 의미가 함축되어 있지만, 쉽게 시작하고 빠르게 방향전환을 한다는 뜻이 내포되어 있습니다.
저희 회사에서 그동안 차마 손을 대고 있지 못하던 특정 소프트웨어 코드에 대한 대대적인 보수작업에 들어갔습니다. 업계의 용어로 이런 작업을 리팩토링이나 리아키텍처링이라 부릅니다. 아파트 리모델링하는 것과 대동소이합니다. 더 좋은 구조로 재설계를 해야 하는데, 문제는 본래의 소프트웨어 코드에 대해 잘 아는 사람이 없습니다. 10여년에 걸쳐 숱한 개발자들이 가지가지 코드를 짬뽕해놓은 상황입니다. 이런 소프트웨어 코드를 스파게티 코드라고 부릅니다.
여러 전문가들이 나서서 이렇게 해야 한다, 저렇게 해야 한다 말은 많지만 정작 본격적인 진행이 되고 있지는 못 합니다. 전문가들이라고 모아 놨는데 밖에서 보면 일이 진행이 더뎌 보입니다. 왜 큰 계획과 설계가 나오지 않는지 비개발부서에서는 의구심을 가질 수 있습니다. 혹자는 탑다운(Top-Down)으로 큰 부분부터 작은 부분까지 구조를 설계하고 그에 따라 매끄럽게 진행계획을 수립하는게 전문가 아니냐고 말을 합니다.
제 경험과 견해로는 결과가 불투명한 상태에서 일을 시작하는 경우 탑다운은 미신입니다. 전문가만이 아닌 천재라 해도 마찬가지입니다. 천재적인 자질을 들먹거릴 때 흔히 조각가 미켈란젤로의 이야기를 합니다. 미켈란젤로가 다비드상을 만들기 전에 큰 대리석 앞에 마주섰을 때 완성된 다비드상은 이미 그 대리석 안에, 다시 말해 미켈란젤로의 머릿속에 있었고 미켈란젤로는 한치의 주저함 없이 돌을 깎아내어 그 안의 형상을 드러냈다는 스토리는 천재적인 예술가의 전형을 보여줍니다. 하지만 이는 후대의 사람들이 꾸며낸 이야기에 불과합니다. 예술사가들의 연구에 따르면 미켈란젤로는 일단 해보고 배우는 것의 대가였다고 합니다. 그는 일단 시도했고, 그런 뒤에 그 지점부터 나아갔습니다. 그 결과 불멸의 예술작품들을 탄생시켰지만, 그보다 훨씬 많은 실패작과 하다가 그만둔 작품들이 있었습니다.
일반적인 통념과 달리 탑다운은 전문가의 특성이 아닙니다. 연구결과에 따르면 비전문가일수록 자신이 애초에 세운 계획에 집착하고, 전문가는 자신의 계획을 수정한 횟수가 훨씬 더 많았다고 합니다. 일단 해보고 바꾸고 다시 시도하는 것을 반복하는 것이죠. 탑다운이 전문가의 특성이 아니라고 했지만, 그렇다고 바텀업(Bottom-Up)이 전문가의 특성도 아닙니다. 바텀업은 작은 것부터 해서 큰 걸로 나아가는 거죠. 전문가는 바텀업도 하고 탑다운도 합니다. 다시 말해 큰 설계를 하다가 막히면 작은 것부터 해서 위로도 올라가 보고, 다시 아래로 내려가는 유연함을 보입니다. <함께 자라기>에서 애자일 전문가인 저자 김창준씨는 소프트웨어 전문가는 이와 같은 상호참조전략을 사용한다고 말합니다. 추상과 구상을 오르락 내리락 하는 거죠. 계획과 실행을 반복하면서, 계획은 더욱 공고해지고, 결과적으로 실행에 들어가는 최종적인 리소스는 줄어듭니다. 불분명한 대리석이 다비드상으로 조금씩 바뀌게 됩니다. 결코 한번의 조각칼질로 팔이나 얼굴의 온전한 형체가 나올 수는 없습니다. 이게 고수의 방법입니다. 하수는 추상과 구상을 빈번히 연결하려는 노력을 하지 않으며 종종 둘 중 하나에만 집중하는 경향을 보입니다.
누군가 그랬죠. 막막할 때는 '막' 하면 된다고 말입니다. 그렇다고 그냥 막 하면 안되겠죠. 계획을 간과해서는 안 됩니다. 계획 없이 일단 질러보고 그 다음에 고치는 것은 완전한 하수입니다. 소프트웨어 개발에서는 이를 "trial & error"라고 부릅니다. 건축용어(?)로는 '지어놓고 기도하기'쯤 되겠네요. 집은 지었다 부수고 다시 지었다 할 수 없을테니 말입니다.
비도 오고 다시 좀 쌀쌀해졌는데 봄이 오기 직전인 듯 합니다. 감기 조심하세요.