해커와 화가
책 표지에 쓰여있는 것처럼 “이단적인 통찰과 현실적인 지혜”로 가득찬 책이다. 특히 “공부벌레는 왜 인기가 없는가”라는 조금은 엉뚱한 질문으로 시작하여 학교 시스템에 대한 색다른 관점을 제시하는 1장은 한 번쯤 깊이 곱씹어볼 만한 가치가 있다. 2장은 이 책의 제목 “해커와 화가”에 가장 잘 어울리는 장으로서, 해커이자 동시에 화가인 저자의 프로그래밍에 대한 생각을 살펴볼 수 있다.
저자는 의도적으로 프로그래밍 대신 해킹이라는 용어를 사용하는데, 여기서의 해킹이란 -흔히 알려진 것처럼 남의 컴퓨터에 침입하거나 또는 운영체제를 깊이 파헤치는 행위가 아니라- (프로그래밍 언어를 포함하는) 소프트웨어를 디자인하고 구현하는 작업 전체를 아우르는 행위다. 그에 따르면 해킹은 수학이나 자연과학 같은 학문과는 다른 종류의 일이며, 또한 얼핏 비슷해보이는 소프트웨어 공학과도 구분된다. 소프트웨어 공학이 ‘어떻게’라는 방법에 집중하는 반면 해킹은 ‘무엇을’이라는 문제에도 관심을 쏟기 때문이다.
해킹이라는 것은 분명 주어진 요구사항을 단순히 어떻게 구현할 것이지 정하는 일이 아니다. 진정한 해킹이란 사실 요구사항 자체를 창조하는 것이다. 요구사항을 만들어 내는 최선의 방법은 그것을 실제로 구현해 보는 것인 경우가 많다.
해커와 화가의 작업 방식의 유사함을 설명하면서, 해킹이 컴퓨터 과학보다는 오히려 소설쓰기나 그림그리기와 같은 예술적 창조 행위에 더 가깝다고 말한다.
나는 오랫동안 이런 프로그래밍 방식에 대해서 남몰래 부끄러워했다. 하지만 내가 그 당시에 화가나 건축가 같은 다른 창조자들이 일하는 방식을 알았더라면, 내가 프로그래밍 하는 방식을 지칭하는 특별한 이름이 있다는 사실을 알 수 있었을 것이다. 그 이름은 바로 ‘스케치’다. (중략) 소설가, 화가, 그리고 건축가의 작업이 그런 것처럼 프로그램이란 전체 모습을 미리 알 수 있는 것이 아니라 작성해 나가면서 이해하게 되는 존재다.
하지만 그림과 소프트웨어 사이의 무시할 수 없는 차이, 즉 그림이나 건축과 같은 작품은 (창조자에 의해) 한 번 완성된 뒤에는 그대로 보존하기만 하면 되는 반면, 소프트웨어는 끊임없는 유지보수를 필요로 한다는 사실에 대해서는 어떻게 생각할까?
어느 한 화가의 작품을 시간 순서대로 확인해 보면 하나의 작품은 바로 이전 작품에서 학습한 내용을 토대로 구축되어 있음을 알게 된다. (중략) 하나의 프로젝트를 붙들고 몇 년 동안 일하면서 나중에 새롭게 떠오르는 생각을 프로젝트에 부분적으로 적용하여 개정판을 만들어 나가는 것보다는, 화가와 같이 처음부터 새롭게 시작하는 프로젝트를 규칙적으로 반복하는 것이 더 바람직하다고 본다.
2장 말미에서 저자는 레오나르도 다빈치의 시절에만 해도 그림이란 지금만큼 멋진 일이 아니었음을 강조하며 “해킹의 전성기는 바로 지금”이라는 말로 독자를 해커의 길로 유혹한다. 작품의 질은 창조자가 그 일에 어떻게 반응하는가에 달려있듯이 해킹이 얼마나 멋진 일이 되는가도 우리가 지금 해킹을 통해 무엇을 하는가에 달려 있음을 알기 때문일 것이다.