본문 바로가기

일상/독서

[독서] 폴 그레이엄 <해커와 화가> 01. - 해커와 화가에게는 어떤 공통점이 있을까?

폴 그레이엄 <해커와 화가> 리뷰 01 

 

해커와 화가
국내도서
저자 : 폴그레이엄 / 임백준역
출판 : 한빛미디어 2014.01.06
상세보기

 

개요 

 

예전에 해커와 화가라는 책을 추천받았는데 그동안 나는 이 책이 일반적으로 사람들이 말하는 '해커(악의적인 목적으로 범죄를 일으키는 블랙햇 해커 또는 이를 방지하는 화이트햇 해커)'에 관한 책인 줄 알고, 계속 '나중에 봐야지' 라고 생각했었다.

 

이런 내용인 줄 알았습니다... 털썩.. (사진 출처 : @cbpsc1 Unsplash)

 

 

그런데 알고보니 이 책에서 말하는 해커는 좀 더 포괄적인 의미에서 숙련된 프로그래머를 의미했다.

 

컴퓨터 세상에서는 사물에 정통한 프로그래머들이 자신을 스스로 해커라고 부른다. 

 

아무튼 나는 이 책에서 지칭하는 해커의 뜻을 알게 된 후에는 이 책에 대하여 지대한 관심이 생겼다. 프로그래머와 화가? 나는 프로그래밍과 그림 그리기 두 영역에 모두 관심이 있는데, 저자는 어떤 식으로 이 두가지 영역을 엮어서 표현할까? 그래서 곧바로 읽어보았다.

 

이 책에서 내가 특히 인상깊게 읽은 부분은 Ch2 해커와 화가, Ch3 우리가 말할 수 없는 것, Ch4 모범적인 불량 태도, Ch6 부자가 되는 법, Ch7 차이에 대한 연구, Ch9 창조자의 심미적 취향, Ch12 평균 뛰어넘기였다. 나머지는 공감이 안되거나 아니면 아직 내 수준에서는 이해할 수 없는 이야기들이었다(내가 나중에 더 숙련된 프로그래머-해커-가 되면 다시 읽어보도록 하겠음). 그래서 인상깊었던 부분들을 토대로 리뷰를 진행해보고자 한다. 원래 한 페이지에 다 쓸 생각이었는데 쓰다보니 길어져서 여러번으로 나눠서 올릴 예정이다. 

 

 


 

해커와 화가에게는 어떤 공통점이 있을까?

 

(책에서 발췌한 부분은 기울임 글씨로 썼으니 참고 바랍니다.)

 

 

1. 저자에 따르면 소설가, 화가, 그리고 건축가의 작업이 그런 것처럼 프로그램이란 전체 모습을 미리 알 수 있는 것이 아니라 작성해 나가면서 이해하게 되는 존재다. 

 

 

2. 화가에게 있어서 위대한 작품을 그대로 모방하는 것은 수백 년동안 전통적인 교육의 일부였다. 모방 과정은 그 작품을 매우 자세하게 들여다보도록 모방자를 강제하기 때문이다. 소설가들도 같은 방법, 즉 필사로 글쓰기를 배운다. (...) 마찬가지로 해커들도 좋은 프로그램을 들여다봄으로써 프로그래밍을 배운다. 겉핥기식으로 프로그램이 어떤 일을 하는지만 보는 것이 아니라 내부의 소스코드를 들여다보는 것이다.

 

참고로 이 부분이 나에게 가장 인상깊었던 부분 중 하나였다. 그림을 정말 뛰어나게 잘 그리는 사람들은 모작을 하라고 강조하고, 소설가들도 필사의 중요성을 늘 이야기한다.

 

모작과 필사의 중요성..!

 

마찬가지로 프로그래밍 공부를 할 때 클론코딩을 해보는 것이 정말 중요한 것 같다. 이렇게 위대한 작품을 모작하는 것이 중요한 건, 결국 위대한 작품 속에서 창조자가 하고 싶은 이야기나 그의 기법들을 가장 밀접하게 관찰할 수 있기 때문이다. 그냥 바라보고 끝나면 보통 놓치는 부분이 생긴다. 그러나 그걸 직접 해보면 세부적인 부분까지 다 놓치지 않고 관찰할 수 있다. 

 

 

3. 그림은 대개 스케치에서 시작되어 세밀한 부분이 조금씩 더해진다. 하지만 그것은 단순한 덧칠의 과정이 아니다. 때로는 처음의 구상이 잘못된 것으로 드러나기도 한다. 엑스레이를 통해서 들여다보면 많은 그림에서 팔다리를 여기저기로 옮기고 얼굴 표정을 셀 수 없이 고친 흔적을 고스란히 볼 수 있다. (...) 나는 해킹도 이와 같은 방식으로 진행되어야 한다고 생각한다. 프로그램을 위한 스펙 요구사항이 완벽할 것이라고 기대하는 것은 환상이다. 개발 도중에 스펙이 바뀌는 것을 수용할 수 있는 방식으로 프로그램을 짜는 것이 현명할 것이다.

 

 

4. 보이지 않는 섬세함이 모이고 쌓이면 마침내 눈에 보이게 되는 법이기 때문에 결국은 빛을 발하기 마련이다. (...) 그림과 마찬가지로 위대한 소프트웨어의 내부를 들여다보면 아무도 들여다볼 것이라고 생각되지 않는 곳조차 아름답다는 사실을 알게 될 것이다.

 

여기서 저자가 말하는 못생긴 프로그램은 결국 비효율적으로 반복되거나 정렬되지 않는 코드 등을 말한다. 이는 곧 클린 코드의 중요성을 역설하는 것이다. 또한 남들이 안 볼 것이라고 생각하는 부분까지 디테일을 신경쓰는 태도는, 내가 배우고자 하는 태도이기도 하다. 이전의 나는 어떤 작업을 할 때 디테일을 신경쓰지 않았던 적이 많다. 그러나 그런 작은 차이점들이 결국은 전체를 구성하면서 결정적인 차이가 된다는 것을 깨닫고 있다. 그래서 이 부분에 더 공감이 되었다. 

 

 

5. 해커가 위대한 작품을 남기기 위해서는 화가와 마찬가지로 감정이입을 할 줄 알아야 한다. 즉, 사물을 사용자의 입장에서 바라볼 줄 알아야 한다. 사물을 타인의 입장에서 바라보는 것이 곧 성공의 비밀이다. 감정이입이라는 것이 자기희생을 뜻하는 것은 아니다. 오히려 그것과는 거리가 상당히 멀다. 사물을 다른 사람의 입장에서 바라본다는 것이 다른 사람의 이익을 대변하다는 뜻은 아니다. 예를 들어서 전쟁같은 상황에서는 오히려 정반대의 목적을 위해서 사물을 상대방의 입장에서 보려고 노력한다. (...) 어느 사람이 감정이입을 잘하는지 여부를 판별하는 좋은 방법은 기본 지식이 없는 사람에게 어떤 기술적인 내용을 설명해 보라고 시키는 것이다. (...) 소프트웨어가 수행해야 하는 일의 일부는 자기 자신을 설명하는 것이다. 따라서 좋은 소프트웨어를 만들기 위해서는 도대체 사용자가 얼마나 조금 알고 있는지를 이해해야 한다. (...) 사용자를 위해서 감정이입을 하는 것이 아니라 소스코드를 읽는 독자(나중에 그 소스코드를 읽게될 작성자 본인 포함)를 위해서도 감정이입을 해야 한다.

 

이 부분도 정말 인상깊었다. 저자가 정말 강조하는 부분이기도 하다. 타인의 관점에서 바라보려는 마음이 있어야 어떤 분야에서든 좋은 작업물을 낼 수 있을 것이다. 그게 그림이든, 글이든, 프로그램이든 말이다. 일단 저자가 든 예시부터 시작해서, 앞으로도 각종 분야에서 타인의 관점을 더 고민해봐야 겠다고 느꼈다.

* 어떤 기술적인 내용을 타인에게 설명할 때 어떻게 해야 쉽게 설명할 수 있을까? -> 이건 블로그를 운영하면서 글쓰는 연습을 해볼 생각이다. 요즘 기술 블로그들을 열심히 보고 있는데 정말 어려운 개념도 쉽게 설명해주시는 블로거 분들을 보고 감탄할 때가 많다. 나도 내가 공부한 내용들을 쉽게 풀어서 써보고 싶다. 그런데 일단 쉽게 쓰려면 정말 제대로 알고 있어야 한다는 것을 전제로 하기 때문에 더 어려운 것 같기도 하다. 

* 소스코드를 어떻게 해야 남들이 보기에도 눈에 잘 들어오도록 깨끗하게 작성할 수 있을까? -> 아직 공부단계이긴 하지만 지금부터 코드를 깨끗하게 짜는 연습을 해야 할 것 같다. 언젠가는 타인과 협업할 일이 있을 수도 있고, 미래의 내가 다시 볼 수도 있고. 그래서 지금 하고 있는 공부가 어느 정도 안정되면, 추후에 클린 코드에 관한 책들도 읽어볼 생각이다. 

 

 


이 책에서는 프로그래머를 창조자로 바라보면서 창조자들의 학습방식이나 덕목을 프로그래머에게도 적용하고 있는데, 저자의 통찰력이 정말 놀라울 정도이다. 단순하게만 생각하면 연관성이 없어보이는 분야일 수도 있는데 저자가 그 별도의 점들을 연결(connecting the dots)하면서 설명하다보니, 사고가 확장되는 느낌이었다. 프로그래밍이나 그림 분야 외에도 인생 전반에 걸쳐 적용될만한 이야기들이라서, 저자가 던져둔 화두에 대해서는 앞으로도 계속 고민해볼만한 가치가 있는 것 같다. 

 

반응형