해커와 화가

Posted on Jul 17, 2006

야후 스토어를 만든 폴 그레이엄이라는 사람이 쓴 책이다. 창업한 회사를 야후에 팔고 그림 공부를 하면서 느낀 점을 책으로 엮은 것이다. 전체 내용이 해커와 화가에 대한 것은 아니고 여러 essay가운데 하나가 바로 “해커와 화가"에 대한 이야기이다.

프로그래머지만 인문학적 지식이 많이 담겨있고 SW개발에 대하여 남다른 관점을 제시하여 색다른 느낌으로 책을 읽을 수 있었다. 특히 그림 그리기를 좋아하는 나로서는 프로그래밍과 그림 그리기는 작업 방식이 같다는 저자의 주장이 참 신선했고 충분히 동감이 갔다.

사실 SW개발과 그림 그리기는 그 결과가 어떻게 나올지 대충 예상은 가능하지만 정확하게 미리 보기는 힘들다. 초기 스켓치는 그냥 버려지고 (SW에서는 프로토타입) 점진적으로 작품이 완성되어 간다. 그리고 가장 좋은 디자인일 때 완성이라고 말할 수 있으며, 단순한 디자인일수록 아름답다는 저자의 말에도 공감이 간다.

해커란?

해커에 대한 저자의 정의 또한 뭔가 내게 숙제꺼리를 남겨주었다.

“해킹을 정말로 좋아한다면 뭔가 자기 자신만의 프로젝트를 수행하지 않고는 견딜 수가 없는 것이다”

여기서 해킹은 우리가 흔히 아는 그런 의미(남의 시스템을 몰래 망가뜨리는)는 아니다. 저자는 해킹에 대한 구체적으로 정의하지 않았으나 내 생각에, 해킹이라는 지적 호기심의 탐구이며 그런 호기심을 구체적 실행에 옮기는 행위를 뜻하는 듯 보였다. 여기서 실행이란 Open Source Project의 참여라고 저자는 말하고 있다. 나도 전에 Open Source Project를 수행한 적이 있으나 지금은 개점휴업 상태이다. 물론 지금도 새로운 일거리에 관해 계획을 세워보기도 하지만 실천에 옮기지 못하고 있다.

“우리는 좋은 생각이 떠오르면, 계획을 세우는 것이 아니라 그것을 구현했다” 나도 대학원 시절에는 그랬던 것 같다. 뭔가 좋은 생각이 떠오르면 내가 원하는 것을 뚝딱뚝딱 만들어냈다. 홈페이지 게시판도 그냥 만들었고 공부하면서 필요한 프로그램도 직접 개발했었다.

좋은 소프트웨에 대한 그의 생각

해커가 되려면 다른 사람이 개발한 좋은 프로그램을 살펴봐야 한다고 했다. 이는 마치 옛 예술가들이 다른 작품을 분석하면서 좋은 화가가 된 것 처럼 말이다. 그리고 Oil Paint의 발명이 그림을 좀 더 고치기 쉽게 만들었던 것 처럼 우리도 가능하면 변경이 쉽도록 코딩을 해야된다고 했다. “좋은 소프트웨어 안을 들여다 본다면, 누구도 볼 수 있을 것이라 생각지도 못했던 부분들 역시 아름답다는 것을 알게 된다”

이 말은 정말 잘 설계되고 잘 짜여진 코드를 볼 때, 예술작품 처럼 그 안에서 아름다움을 느낄수 있다는 것을 의미하는데, 과연 내가 이런 아름다움을 느껴본 적이 있는지.. 이런 아름다움이 뭔지는 알고 있었는지 기억만 희미할 뿐이다. 그래도 예전에 코딩을 끝낸 후, “완벽해! 더 이상 수정할 곳이 없고 아주 직관적으로 잘 짜여져 있어"라고 외쳤던 적은 있다.

사용자 입장에서 소프트웨어 바라보기

“SW는 그 자체로 설명이 가능해야 하며, 좋은 SW를 개발하기 위해 소수의 사용자가 어떻게 이해하는지 헤아리고 있어야 한다”

SW를 개발할 때, 많은 개발자가 착각하는 것은 자신들의 입장에서 SW를 개발하는 부분이다. 설명서 없이는 사용하기 힘들고, 개발자가 알고 있는 용어를 무심코 사용자에게 강요하기도 한다. 이런 부분은 모든 엔지니어가 꼭 고쳐야할 분 부분이다.

“소스코드는 그 차제로 설명되어야 한다”

“프로그램은 오직 사람이 읽기 위해서 작성되야 한다. 컴퓨터가 그것을 실행하는 것은 부차적인 일이다”

SW개발 프로세스에서 산출물은 참 중요하다. 어떠한 산출물을 포기하더라고 기본 설계서, 상세 설계서는 빠뜨리기 힘들다. 이렇게 산출물을 작성하는 이유는 코드만 봐서는 SW를 이해할 수 없기 때문이다. 이것은 개발자 수준의 문제인 것 같다. 정말 훌륭한 아키텍트가 설계하고 좋은 개발자가 개발을 진행했다면 코드만으로도 SW를 이해할 수 있어야 한다.

마이크로소프트는 공식적으로 설계서를 작성하지 않는다고 한다. 워낙 SW가 자주 변경되다 보니 그 내용을 설계서에 반영할 만큼 여유가 있지 않으며 설계서를 통해 SW를 이해하기 보다 코드를 통해 선임자가 설명해주는 방식으로 후임자들은 SW를 이해하게 된다고 한다. 그 만큼 SW가 일관성있게 잘 짜여져 있다는 것을 보여주는 대목이다.

우리가 지금 짜고 있는 코드가 예술 수준은 아니더라 일정 수준의 개발자라면 누구나 이해하기 쉽도록 짜여져 있는지는 고민해 볼 문제다.

레오나르도 다빈치도 해커다

우리는 레오나르도 다빈치의 작품에서 아름다움과 예술성을 느낀다. 하지만 과거에도 지금 우리가 느끼는 만큼 평가를 받았을까? 아마도 오늘날의 SW개발자 처럼 그들도 당시의 개발자(?) 중 하나였을 것이다. 단지 SW가 아닌 초상화와 벽화를 그리며 자신만의 세계에서 해킹에 열중했을 것이다. 사실 SW가 어찌 개발되던간에 일반 사용자는 코드 내부를 볼 수 없으므로 SW설계나 코딩이 정말 예술의 경지처럼 잘 되어 있는지 확인할 방법이 없다. 다빈치의 그림이나 벽화도 그 당시 대중이 인식할 수 없는 부분에서 작가만의 미를 추구했는지 모른다. 저자는 그림 배경에 있는 나무 덤불의 세밀한 묘사를 그 예로 들고 있다.

예술성은 당대에 평가받지 못한다

저자는 많은 개발자에게 우리의 작업이 현재는 제대로 평가받고 있지 못하지만 그 옛날 예술가가 그래왔듯이 우리만의 미학을 추구하다보면 일반 사람들도 해킹에 열광하는 그런 시대가 올 것이라고 희망을 주고 있다.

뭐, 이정도는 바라고 있지 않지만, 우리 마음속에 잠자고 있는 해커적 기질을 깨워서 예술에 못미칠지라도 편리하고 좋은 소프트웨어 개발에 힘을 쓰고, 우리의 작업에 좀 더 많은 의미를 부여해야하지 않을까 생각해본다.

참고문헌
  • Paul Graham, Hackers & Painters (Big Ideas From The Comptuer Ages), O’REILLY, 2004

출처: 주네의 열린 소프트웨어 이미지: Wikipedia