티스토리 뷰

Books_tech

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

devsong 2016. 9. 24. 08:14

 
해커와 화가
폴 그레이엄 저/임백준 역/정희 감수

<해커와 화가>는 와이 콤비네이터의 공동 창업자이자 천재 해커로 불리는 폴 그레이엄의 생각을 읽는 즐거움을 준다. 이 책에서 그는 프로그래머와 예술가, 웹 기반 프로그램, 프로그래밍 언어, 스타트업 같은 주제에 대해 이야기한다. 먼저 프로그래머와 예술가를 비교하는 부분에서는 내가 프로그래밍을 하는 이유에 대해서 다시 생각하게 하고 좋은 자극제가 되었다. 그리고 웹 기반 프로그래밍에 대한 글을 읽고 있으면 지금 당장 하던 일을 그만두고 리스프 기반의 웹 프로그래밍을 공부해야만 할 것 같다. 마지막으로 100년 후의 프로그래밍 언어를 내다보는 그의 통찰력도 매우 인상적이고 흥미로웠다.

목차

01 / 공부벌레는 왜 인기가 없을까
__그들은 게임판 위의 말에는 관심이 없다

02 / 해커와 화가
__해커는 화가, 소설가, 건축가와 같은 예술 창조자다

03 / 우리가 말할 수 없는 것
__이단자로 생각하고 행동하는 방법

04 / 모범적인 ‘불량 태도’
__해커는 규칙을 깨면서 성장한다

05 / 또 하나의 길
__웹 기반 소프트웨어가 준 두 번째 기회

06 / 부자가 되는 법
__부를 창조하는 최상의 방법, 스타트업

07 / 차이에 대한 연구
__불균등한 수입 분배가 정말 나쁜 걸까?

08 / 스팸을 위한 계획
__더 나은 스팸 필터링을 위한 노력

09 / 창조자의 심미적 취향
__위대한 디자인에 이르는 길

10 / 프로그래밍 언어에 대한 설명
__프로그래밍 언어가 뭔데?

11 / 100년 후의 프로그래밍 언어
__지금 시작하는 프로그래밍 언어의 미래

12 / 평균 뛰어넘기
__나를 알고, 경쟁자를 살핀다

13 / 공부벌레의 역습
__망하는 지름길, 최고 사례 따라 하기

14 / 꿈의 언어
__해커들이 마음대로 사용할 수 있다면, 좋은 것이다

15 / 디자인과 연구
__착한 디자인, 깨는 연구

 

본문 중에서

해커와 화가

해커와 화가의 공통점은 우선 그들이 둘 다 무언가를 창조한다는 사실이다. 작곡가, 건축가, 작가와 마찬가지로 해커와 화가는 좋은 무엇을 만들어 내기 위해서 노력한다. 그들은 연구를 수행하지는 않지만, 창조의 과정에서 휠씬 좋은 새로운 기술을 발견하기도 한다.

올바른 도구는 우리가 이러한 위험을 피하도록 도와준다. 좋은 프로그래밍 언어는 마치 유화 물감처럼 생각이 중간에 바뀌는 것을 쉽게 만들어 주어야 한다. 동적인 타이핑은 특정한 데이터 표현을 처음부터 고민할 필요가 없기 때문에 바로 이런 상황에 적합하다. 하지만 이와 같은 유연성을 위해서는 언어를 매우 추상적으로 만들어야 한다. 수정하기에 가장 쉬운 프로그램은 결국 짧은 프로그램이기 때문이다.

해킹이 결국 그림이나 소설과 비슷하다면, 그림이나 소설만큼 멋진 일일까? 우리의 인생은 단 한 번뿐이다. 그래서 인생을 뭔가 멋진 데에 쓰는 것은 중요하다.

우리가 말할 수 없는 것

좋은 과학자는 전통적인 지혜를 무시하는 것이 아니라, 그 지혜를 깨뜨리기 위해 노력하는 사람이다. 과학자는 문제를 찾아 헤맨다. 학자라면 어느 정도 그런 성향을 가지고 있지 마련이지만 특히 과학자는 누구보다도 바위 아래 숨어 있는 진실을 보고 싶어 한다.

당신이 물속에 있을 때 파도의 흐름을 어떻게 볼 수 있을까? 항상 질문을 던져라. 그것만이 유일한 방법이다. 자, 이제 생각해 보자. 당신은 무엇을 말할 수 없는가? 왜?

모범적인 '불량 태도'

대부분의 언론 매체에서는 "해커"를 남은 컴퓨터에 침입한 사람이라는 의미로 사용한다. 하지만 프로그래머 사이에서는 좋은 프로그래머라는 의미이다. 이 두 가지 의미는 서로 연결되어 있다. 프로그래머에게 있어서 "해커"란 문자 그대로 어떤 것에 정통했다는 의미를 담고 있다. 즉, 컴퓨터가 원하든 아니든 컴퓨터를 자기가 원하는 대로 조작할 수 있는 사람이라는 의미다.

창조자의 심미적 취향

1. 좋은 디자인은 간단하다.
2. 좋은 디자인은 시간에 구애받지 않는다.
3. 좋은 디자인은 제대로 된 문제를 해결한다.
4. 좋은 디자인은 무언가를 제안한다.
5. 항상 그런 것은 아니지만 좋은 디자인은 조금 우습기도 하다.
6. 좋은 디자인은 어렵다.
7. 좋은 디자인은 간단해 보인다.
8. 좋은 디자인은 대칭을 이용한다.
9. 좋은 디자인은 자연을 닮았다.
10. 좋은 디자인은 무언가를 다시 디자인하는 것이다.
11. 좋은 디자인은 복사가 가능하다.
12. 좋은 디자인은 이상할 때도 있다.
13. 좋은 디자인은 뛰어난 사람들의 모임에서 나온다.
14. 좋은 디자인은 종종 대담하다.

100년 후의 프로그래밍 언어

비효율적인 소프트웨어가 그 자체로 엉터리인 것은 아니다. 진짜 엉터리는 프로그래머에게 불필요한 일을 강제하는 언어이다. 기계의 시간이 아니라, 프로그래머의 시간을 낭비하는 것이 진짜 비효율성이다. 컴퓨터의 속도가 더 빨라질수록, 이러한 사실은 점점 더 명확해질 것이다.

그렇다고 해서 객체지향 프로그래밍의 종말을 예언하려는 것은 아니다. 특별한 분야를 제외하면 객체지향이 수준 높은 프로그래머들에게 주는 이득은 별로 없지만, 큰 조직에서 객체지향에 대한 유혹을 견디기 어렵다. 객체지향 프로그래밍은 스파게티 코드를 유지하는 것을 도와준다. 그것은 프로그램이 일련의 패치로 이루어지도록 만든다. 커다란 조직은 소프트웨어를 이와 같은 방식으로 개발하는 경향이 있는데, 나는 이렇한 일이 100년 후에도 여전히 똑같을 것이라고 믿는다.

평균 뛰어넘기

일자리를 설명하는 문구에서 IT와 관련된 냄새가 더 많이 날수록, 별로 염려할 필요가 없는 회사였다. 가장 안전한 경쟁자는 오라클 경험을 요구하는 회사였다. 그런 회사는 전혀 걱정할 이유가 없다. C++나 자바 개발자를 요구하는 경우에도 크게 걱정할 일이 없다. 하지만 만약 펄이나 파이썬 프로그래머를 찾는 경우에는 약간 긴장할 필요가 있다. 그것은 그 회사가 최소한 기술적인 부서는 해커에 의해서 운영된다는 증거이기 때문이다. 만약 내가 리스프 해커를 찾는 구인 광고를 보았다면, 진짜 걱정하기 시작했을 것이다.

꿈의 언어

1. 꿈의 언어는 우선 깨끗하고 간결하다.
2. 수준 높은 추상화를 이용하기 때문에 당신은 프로그램의 첫 번째 버전을 매우 빠르게 작성할 수 있다.
3. 언어를 배울 수 있는 예제가 풍부하게 존재하고, 그런 예제를 몇 분만 들여다보면 그것을 어떻게 사용하는지 금방 알 수 있을 정도로 직관에 충실하다.
4. 언어는 작은 코어를 가지고 있고, 그러한 코어만큼이나 신중하게 설계된 강력하고 날카로운 라이브러리를 가지고 있다.
5. 언어는 층이 이루는 결에 따라서 만들어졌다.
6. 꿈의 언어는 오픈소스에 그치는 것이 아니라, 오픈 디자인까지 포함하는 것이다.

디자인과 연구

디자인이라는 것은 결국 언제나 사람들을 위한 것이다. 하지만 사용자만 사람인 것은 아니다. 디자이너도 사람이다.

 

참고

폴 그레이엄 홈페이지
http://www.paulgraham.com/

에반 로스 <예술가는 해커다>

 

 

- James Song

댓글