"해커와 화가" 독후감(?) 시리즈
얼른얼른 정리하고 다른 책 얘기로 넘어가려고 한참 전에 읽고는 쌓아둔 메모를 정리한다.
자유로운 언어:
폴 그레이엄 어록 #1에서 인용한 내용에 관련해서:
이러한 깨달음은 프로그래밍이란 것은 부드럽고 말랑말랑한 존재라는 엄연한 사실에 대한 재확인을 가져온다. 프로그래밍 언어는 머릿속으로 생각한 프로그램을 표현하는 도구가 아니라, 아직 존재하지 않는 무언가를 생각해내기 위한 도구다. 볼펜이 아니라 (스케치에 쓰이는) 연필인 셈이다. 정적인 타입 체크는 학교에서 배운대로 프로그래밍을 하는 경우라면 별로 나쁘지 않다. 그러나 해커에게 필요한 것은 얌전히 무릎을 모으고 앉아서 엄격한 컴파일러라는 숙모와 대화를 나눌 때 쓰는 언어가 아니라 마음껏 내갈기고 더럽히고 사방에 떡칠을 할 수 있는 언어이다.
수학에 대한 질투로부터의 자유로움:
과학에 종사하는 사람들은 내심 우리들 중에서 가장 영리한 사람은 수학자라는 생각에 사로잡히곤 한다. 그 결과 과학자들은 자신들의 업적을 최대한 수학적인 모습으로 장식한다. 한페이지를 가득 메운 수학공식은 그럴듯 하다. 그러다보니 사람들은 실제로 중요한 문제보다 수학 공식에 입각해서 다룰 수 있는 문제를 풀어보고자 하는 유혹을 받게 된다. 만약 해커가 소설가나 화가와 같은 부류의 창조자들로 분류된다면 이러한 유혹을 받을 일은 없을 것이다. 소설가와 화가는 수학에 대한 질투에서 자유롭다.
진정으로 사랑하는가:
비아웹에서는 프로그래머를 채용하기 위한 면접을 볼때 집중적으로 물어본 질문은 그가 남는 시간에 작성한 소프트웨어가 무엇인가 하는 것이었다. 무엇을 진정으로 사랑하지 않는다면 그것을 정말로 잘해낼 수 없다.
Self-descriptive 소프트웨어:
소프트웨어가 수행해야 하는 일의 일부는 자기 자신을 설명하는 것이다. 사용자들은 아무런 준비 과정도 없이 소프트웨어를 사용하기 시작할 것이고, 매뉴얼 따위는 읽을 생각조차 하지 않을 것이다. 이런 관점에서 내가 경험한 최고의 시스템은 1984년에 나온 오리지널 매킨토시였다. 그것은 지금까지 소프트웨어가 단 한번도 이뤄내지 못한 일을 해냈다. 바로 사용자가 아무 생각 없이 일을 시작해도 제대로 동작하는 것이다.
소스코드도 마찬가지로 스스로를 잘 설명해야 한다. 프로그램은 오직 사람이 읽기 위해서 작성되어야 한다. 컴퓨터가 그것을 실행하는 것은 부차적인 일이다. 당신은 사용자 뿐만 아니라 당신의 소스코드를 읽는 독자를 위한 감정이입도 해야 한다. 얼마후에는 당신 스스로가 그 독자 가운데 한명이 될 것이다.
실수란:
실수는 자연스러운 것이다. 그것을 재난으로 간주하는 대신, 실수를 쉽게 인정하고 쉽게 고칠 수 있도록 허용해야 한다. 레오나르도는 그림이 엄청난 무게의 탐사를 감당할 수 있도록 스케치라는 수단을 발명했다. 오픈소스는 버그의 가능성을 솔직하게 인정하기 때문에 실제로 훨씬 적은 버그를 포함하고 있다.
수정이 쉬운 매체를 갖는 것도 도움이 된다. 15세기 유화가 템페라화를 대체했다. 유화 물감은 템페라와 달리 서로 섞이기도 하고 덧칠도 가능한 것이었다.
주: 원문에 임의로 요약이나 생략이 들어갔음.
Posted by saber

