ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 해커와 화가 (폴 그레이엄)
    Book Review 2021. 5. 29. 17:42

    1장. 공부벌레는 왜 인기가 없을까 (XX)

    :미국 공부벌레들을 예로 들었는데 한국과는 상황이 매우 달라서 공감되지 않는 장이다.

    2장. 해커와 화가 (O)

    p.48      

    큰 회사는 최악의 재난을 피하기 위해서 설계 산출물에 대한 표준 편차를 줄이려고 노력한다. 하지만 활기차게 진동하는 기운을 억누르면 진폭의 저점만이 아니라 고점도 함께 잃어버리게 됨을 기억해야 한다. 큰 회사는 훌륭한 제품을 만들어서 번창하는 것이 아니기 때문에 고점의 상실이 문제 되지 않는다. 그들은 다른 큰 회사에 비해서 상대적으로 덜 망치면 되는 것이다.

    p.49

    스타트업과 관련된 또 하나의 문제점은 돈을 벌 수 있는 소프트웨어와 작성하고 싶은 재미있는 소프트웨어 사이에는 별로 겹치는 부분이 없다는 사실이다.

    p.52

    과학자는 직접적인 행동이 아니라 실험과 일련의 연습문제를 통해서 배워나간다. 그들은 궁극적으로 독창적인 할 수 있는 지점에 도달하게 된다. 하지만 해커는 시작부터가 독창적이다. 독창적으로 시작해서 점점 좋은 상황으로 전진하고, 과학자들은 좋은 상황에서 출발해서 차츰 독창적으로 되어 간다.

    p.53

    프로그램을 위한 스펙 요구사항이 완벽할 것이라고 기대하는 것은 환상이다. 그것을 처음부터 인정하고, 개발 도중에 스펙이 바뀌는 것을 수용할 수 있는 방식으로 프로그램을 짜는 것이 현명할 것이다.

    p.59

    좋은 소프트웨어를 만들기 위해서는 사용자가 얼마나 조금 알고 있는지를 이해해야 한다. 그들은 아무런 준비 과정도 없이 소프트웨어를 사용하기 시작할 것이고, 매뉴얼 같은 것은 읽을 생각조차 하지 않을 것이기 때문이다. 소프트웨어는 그들이 막연하게 추측할 만한 일을 알아서 수행할 필요가 있다.

     

     

    03장. 우리가 말할 수 없는 것 (OO)

    : 내 신념과 굉장히 비슷하다. 사회생활하면서 꼭 갇추어야 할 덕목

    p.64

    사람들은 도덕이 유행과 상관없이 존재한다고 생각하기 때문에, 설령 도덕에 유행이 있다고 해도 그것을 깨닫지 못한다. 그렇기에 도덕에 존재하는 유행은 더 위험하다.

    옷을 이상하게 입는 경우라면 비웃음을 사는 정도에 그치지만 도덕적 유행의 기준에 어긋나는 경우에도 해고, 추방, 투옥, 심지어 사형을 초래할 수 있다.

    p.65

    우리가 사는 시대는 경향으로부터 자유로울까? 역사와 관련된 책을 조금이라도 읽은 사람이라면 당연히 아니라고 답할 것이다. 이 시대에서만 갑자기 모든 것이 올바르게 굴러간다면, 그것은 정말이지 말도 안 되는 우연에 불과하다.

    p.67

    사람들을 화나게 만드는 말이 있다면 그것은 다른 사람들이 믿을지도 모를 만큼 진실에 근접한 말이다. 그런 면에서 보자면 사람들을 화나게 만드는 것은 그들 자신이 진실일지도 모른다고 믿는 것이 발설되었을 때다.

    p.68

    수많은 사람을 곤경에 몰아넣은 이야기가 지금은 아무런 문제도 되지 않는다. 따라서 오늘날의 우리가 발언하면 곤경에 빠질 만한 이야기 중에서 미래에서 찾아온 사람이 그것은 참이라고 말할 내용이 있을 가능성은 상당히 높다.

    p.70

    내가 보기에 대부분의 이단적인 생각은 이미 우리의 마음속에 형성되어 있다. 만약 우리의 자기검열 장치를 잠시 꺼놓는다면, 그런 생각들은 우리의 의식 위로 떠오를 것이다.

    p.71

    우리가 과거 세대에 비해서 훨씬 더 똑똑하고, 더 도덕적이라고 생각할지도 모른다. 하지만 역사에 대해서 많이 읽을수록 그럴 가능성이 희박하다는 점을 분명히 깨닫게 된다. 과거의 사람들도 우리와 다를 바가 없었다. 그들은 영웅도 아니고, 야만인도 아니었다. 그들의 생각이 어떤 것이었든, 그것은 보통 사람이 충분히 믿을 수 있는 그런 생각이었다.

    여기서 흥미로운 이단의 출처를 하나 찾을 수 있다. 현재의 생각을 과거의 다양한 문화에 적용시켜 그 차이점을 비교 분석해 본 다음 어떤 결론이 나오는지 살펴보는 것이다. 어떤 것은 현재의 기준으로 볼 때 충격적인 내용일지도 모른다. 좋다, 그렇다면 그것은 진실일까?

    명백한 차이를 발견하기 위해서 꼭 과거를 뒤돌아볼 필요는 없다. 오늘날에도 무엇이 괜찮고 무엇이 아닌지는 사회에 따라서 제각각 다르다. 따라서 다른 나라의 생각을 우리나라의 문화에 적용해 보는 것도 하나의 방법이 된다.

    p.72

    아마도 대부분의 크고 작은 터부를 능가하는 진정한 터부만이 보편적인 터부일 것이다. 예컨대 살인 같은 것이 그렇다. 그렇지만 많은 시간과 공간 속에서 무해한 것으로 받아들여졌음에도 불구하고 지금 우리에게 터부로 존재하는 것이 있다면 그것은 우리가 잘못 생각하고 있다는 증거일 가능성이 높다.

    당대의 터부를 발견하기 위한 또 다른 방법을 제공해 준다. 잘난 체하는 사람을 찾아서 그들의 머릿속에 들어있는 생각을 살펴보는 것이다.

    p.74

    도덕적 유행이 어떻게 등장하는가, 그리고 그들은 사람들에게 왜 받아들여지는가? 이 메커니즘을 이해하면 도덕적 유행이 우리 시대에서 떠도는 방식을 이해할 수 있을 것이다.

    p.76

    사상의 유행과 옷의 유행이 서로 다른 뿌리를 둔 것은 사실이지만, 그들이 받아들여지는 메커니즘은 거의 동일하다. 유행에 처음 발을 담그는 얼리어댑터는 야망에 의해서 움직인다. 자기가 정말 멋지다고 생각하는 사람들은 자신이 평범한 군중과 차별화되기를 원한다. 유행이 일단 하나의 대세로 자리를 잡으면 그에 참여하는 두 번째 단계의 사람들이 움직이기 시작한다. 수가 월씬 많은 이 사람들을 움직이는 힘은 두려움이다. 이 사람들은 스스로 멋있어 보이기 위해서 유행을 따르는 것이 아니라, 무리에서 배제되는 것을 두려워하기 때문에 움직인다.

     

    그러므로 우리가 도대체 무엇을 말할 수 없는지 알고 싶다면, 유행의 메커니즘을 분석해서 말하지 못하게 만드는 장애물이 무엇인지 살펴보면 된다. 어떤 집단이 힘이 있으면서도 신경은 잔뜩 곤두서 있는가? 최근에 벌어진 투쟁에서 패배한 집단과 연결되어 있어서 본래의 의미가 퇴색된 사상이 있는가? 전통적인 관념을 가진 평범한 사람이 차마 발설하기 두려워하는 것은 무엇인가?

    이러한 방법이 우리가 말할 수 없는 것을 모두 찾아줄 리는 없다. 최근의 투쟁에서 패배한 집단과 관련되지 않고도 의미가 퇴색한 관념들도 여러 개 있다. 우리가 가지고 있는 터부 중에서 많은 것이 오래된 과거에 뿌리를 두고 있다. 그렇긴 하지만 이 방법은 앞에서 말한 네 가지 방법과 더불어 우리가 생각할 수 없는 수많은 관념을 찾을 수 있게 해 줄 것이다.

    p.80

    가장 중요한 점은 당신이 원하는 것을 말하는 것이 아니라 그냥 생각하는 것이다. 그리고 만약 당신이 스스로 생각해서 모든 것을 입 밖으로 내어 말한다면, 그것은 파격적인 생각에 방해가 된다. 정반대의 노선을 취하는 것이 옳다는 게 내 의견이다. 당신의 생각과 말 사이에 날카로운 경계선을 그어라. 머릿속에서는 무엇이라도 허용이 된다. 나 역시 머릿속에서는 사람으로서 가능한 가장 대담하고 파격적인 상상을 즐긴다. 하지만 비밀 클럽처럼 건물 안에서 벌어진 일이 외부자에게 발설되면 곤란하다. 파이트 클럽의 첫 번째 규칙은 파이트 클럽에 대해서 누구에게도 말하지 않는 것이다.

    p.81

    만약 당신이 모든 것을 입 밖에 내어 말한다면, 진짜 필요한 일을 할 시간이 완전히 없어지고 말 것이다. 말하자면 당신은 노암 촘스키가 되어야 하는 것이다.

    p.82~83

    만약 당신이 검열에 대해서 전반적으로 반대한다면, 검열되는 책이나 필름에 담긴 이단적인 생각을 주장하거나 보호한다는 모함에 걸리지 않고 의견을 밝힐 수 있다. 메타 딱지(딱지를 초월한 딱지)를 가지고 딱지를 공격하는 것이다. 딱지를 남발하고 있다는 딱지를 붙여버려서 논쟁을 방지하는 것이다.

    반격을 또 하나의 방법은 은유를 사용하는 것이다. 최고의 방법은 무엇보다도 유머다. 그들의 신조가 무엇이든 열성주의자들에게는 불가피하게도 유머 감각이 없다. 그들은 농담에 대해서 친절하게 답변하지 못한다. 그들은 유머의 영역에 들어서게 되면 마치 스케이트 링크에 들어선 중세의 기사처럼 불행해진다.

    04장 모범적인 불량 태도 (XX)

    한국문화와 동떨어진 이야기

    05장 또 하나의 길 (O)

    p.114

    새로 등장한 버그를 수정하는 것은 오래 묵은 버그를 잡는 것보다 수월하다. 6개월 전에 작성한 코드에 숨은 버그를 수정하는 것은 훨씬 더 많은 노력을 요구한다.

    p.115

    복합적인 버그란 서로 다른 두 개의 버그가 상호작용을 하면서 나타나는 문제를 말한다. 계단에서 미끄러져서 난간을 잡았더니 난간이 무너져 내리는 경우에 비유할 수 있다. 소프트웨어에서는 이런 종류의 버그가 찾기 가장 힘들 뿐 아니라, 가장 나쁜 결과를 초래하는 버그에 속한다.

    p.119

    큰 회사에서는 구체적인 기능을 구현하는 대신 계획을 세운다. 계획이란 다만 창고에 갇힌 생각의 다른 이름일 뿐이다. 우리는 좋은 생각이 떠오르면, 계획을 세우는 것이 아니라 그것을 구현했다.

    p.120

    프로젝트에 사람을 더 많이 투입하는 것은 오히려 프로젝트의 진행 속도를 둔화시킨다.

    p.123

    사용자들을 관찰하면 그들이 곤란한 문제에 부딪히는 시점을 알 수 있다. 고객은 언제나 옳기 때문에 그것은 당신이 무언가를 수정해야 한다는 것을 의미한다.

    p.137

    프로그래머와 시스템 관리자는 대게 서로 다른 저마다의 걱정거리를 가지고 있다. 프로그래머는 버그에 대해서 걱정하고, 시스템 관리자는 인프라스트럭처에 대해서 걱정한다. 프로그래머는 때로 소스코드를 작성하기 위해서 긴 시간을 보내기도 하지만, 어느 순간이 되면 집으로 돌아가서 모든 것을 잊어버린다. 시스템 관리자는 그렇게 하기가 힘들지만, 그들이 새벽 4시에 연락을 받았다고 해서 아주 복잡한 일을 해야 하는 것도 아니다. 웹 기반 애플리케이션에서는 이러한 두 가지 스트레스가 하나로 결합한다. 프로그래머가 시스템 관리자가 되는 것인데, 그 사이에는 일을 견딜 말한 것으로 만들어 주는 확실한 경계선이 존재하지 않는다.

    p.141

    비즈니스에 대해서 알아야 하는 것은 오직 두 가지뿐이다. 사용자가 좋아할 만한 것을 만드는 것, 그리고 자기가 쓰는 비용보다 더 많은 돈을 벌어야 한다는 것이 그만이다. 이 두 가지를 정확하게 이해하면, 이미 다른 스타트업에 비해서 한 발 앞서고 있는 것이다. 나머지는 일의 진행에 따라서 자연스럽게 배울 수 있다.

    처음에는 쓰는 것보다 많이 벌지 못할수도 있다. 그렇지만 그 차이가 빠르게 좁혀진다면 괜찮다. (현대에서는 천천히 좁혀져도 시장을 장악할 기대가 있다면 괜찮은 듯)

    p.143

    당신이 하지 못하는 것을 마이크로소프트가 할 수 있는 것처럼, 마이크로소프트가 할 수 없는 것을 당신이 할 수 있다.

    06장 부자가 되는 법 (O)

    p.150

    스타트업은 마술이 아니다. 그들이 부를 창출하는 일반적인 법칙을 바꾸는 것이 아니다. 그들은 다만 곡선의 끝에 존재하는 한 점을 표현할 뿐이다. 당신이 백만 달러를 벌기 원하면, 백만 달러 어치의 고통을 감수해야 한다.

    압축된 고통을 한 번에 사들이는 경우에는 약간의 할인은 있을지 몰라도 질량 보존의 법칙을 근본적으로 회피할 수는 없다. 스타트업 시작이 그렇게 쉽다면 아무나 시작할 것이다.

    p.154

    돈은 부가 아니다. 돈은 단지 부를 움직이기 위한 수단에 불과하다. 그렇기 때문에 다른 사람과 교환할 수 있는 화폐량이 어느 일정한 순간에는 일정한 분량으로 정해져 있다고 해도, 세상에 존재하는 부의 크기는 일정한 값으로 정해져 있는 것이 아니다. 당신은 더 많은 부를 만들 수 있다. 부는 인류의 역사 속에서 창조되고 파괴되어 왔다.

    p.155

    당신은 낡은 자동차를 수리함으로써 스스로를 좀 더 부자로 만들었다. 그렇다고 해서 다른 누군가를 더 가난하게 만든 것은 아니다. 이 점만 보아도 크기가 고정된 파이 따위는 존재하지 않는다는 사실을 쉽게 알 수 있다.

    p. 158

    회사에서 하는 일은 다른 사람들이 하는 일과 뭉뚱그려져서 하나의 평균값으로 평가된다. 그런 이유로 당신은 당신이 하는 일이 사람들이 원하는 일이라는 사실을 구체적으로 깨닫지 못할 수 도 있다.

    p.159

    대학을 졸업하는 사람은 어떤 기관의 일원이 되는 것이 중요한 일이기라도 한 것처럼 직장을 반드시 구해야 한다고 생각한다. 혹은 그런 이야기를 주변에서 수없이 듣게 된다. 더 직접적으로 말하자면, 대학을 졸업한 당신은 이제 사람들이 원하는 일을 수행할 필요가 있다. 그렇지만 그런 일을 하기 위해서 반드시 회사에 들어가야 한다는 법은 없다. 회사라는 것은 결국 사람들이 원하는 일을 하기 위해서 여러 사람이 한 자리에 모인 것에 불과하다. 중요한 것은 어느 그룹에 소속되는 것이 아니라, 사람들이 원하는 일을 하는 것이다.

    p.161

    당신이 빠르게 전진하고 싶다면 일이 다른 사람의 일과 한 덩어리로 뭉쳐 있다는 사실이 문제가 된다. 커다란 조직에서 당신의 능력은 독자적으로 측정되는 대상이 아니다. 다른 사람이 당신의 일을 지연시킨다.

    p.162

    스스로의 노력을 통해서 부자가 되는 사람은 정당한 평가와 영향력이 모두 있는 상황에 있을 것이다. 적어도 내가 생각할 수 있는 사람들은 전부 그렇다. CEO, 영화배우, 헤지펀드 매니저. 전부 영향력을 가지고 있는지를 판단하기 위한 하나의 단서는 실패할 가능성이 있는가다. 오르막길은 반드시 내리막길에 의해서 균형이 맞추어져야 한다. 성공을 위한 기회가 있다면 무서운 실패의 가능성도 존재해야 한다. CEO, 영화배우, 운동선수들은 모두 목에 겨누어진 칼날을 의식하면서 살아간다. 실적이 하향세를 타기 시작하면 그들은 끝장이다. 당신 제법 안전하다고 느껴지는 직업을 가지고 있다면 당신은 부자가 될 가능성이 없다. 위험이 존재하지 않는 곳에는 영향력이 존재할 이유가 없기 때문이다.

     

    7장. 차이에 대한 연구(-)

     

    p.185 우리가 급여가 지나치거나 부족하다고 말할 때 의미하는 것은 무엇인가? 자유 시장에서 가격은 구매자가 원하는 바에 따라서 결정된다. 사람들이 시보다 야구를 훨씬 더 좋아하기 때문에 야구 선수는 시인보다 더 많은 돈을 벌게 된다. 그렇기 때문에 특정 직업에 대한 급여가 부족하다고 말하는 것은 사람들이 그 일 대신 뭔가 잘못된 것을 원하고 있다고 주장하는 것과 다르지 않다.

     

    사람들이 셰익스피어나 삶은 야채에 비해서 리얼리티 tv나 핫도그를 더 좋아하는 것은 통탄할 만한 일이다. 하지만 그것이 부당하다고? 그것은 마치 파란색은 무겁다고 말하거나 하늘이 원형으로 순환한다고 말하는 것처럼 아무런 의미도 없는 말이다.

     

    8장. 스팸을 위한 계획(x)

     

    9장. 창조자의 심미적 취향(o)

     

    p.215 요즘에는 많은 사람들이 미적 취향을 "주관적인 것"이라고 말한다. 정말 그들에게는 그렇게 느껴지기 때문에 미적 취향은 주관적인 것이라고 믿는 것이다.

     그들은 무언가를 좋아할 때, 그것이 왜 좋은지에 대해서는 생각하지 않는다. 그것은 그냥 아름답기 때문일 수도 있고, 그들의 어머니가 똑같은 물건을 가지고 있기 때문일 수도 있다. 사람들의 생각은 확인되지 않은 충동이 얽혀 있는 실타래와 비슷하다.

     

    p.217 사람들은 무엇을 하든 더 낫게 하고자 한다. CEO들은 더 많은 수익을 올리고 싶어하고, 축구선수는 시합에서 승리하고 싶어 한다. 그것은 일 속에서 성장하고자 하는 자존심이 걸린 문제이며, 진정한 기쁨이 걸린 심각한 문제다. 하지만 새로운 무언가를 디자인할 때, 그 안에 아름다움이라는 요소가 존재하지 않는다면 성장한다는 것은 불가능하다. 미적 취향이라는 것이 단지 개인적인 선호에 불과한 문제라고 했을 때에는, 모든 사람이 이미 충분히 완벽하기 때문이다. 그런 상황에서는 각자 자기가 좋아하는 일을 한다. 그것이 전부다.

     

    좋은 디자인은 간단하다.

    이런 이야기는 수학에서 그림 그리기에 이르기까지 어디에서나 들을 수 있다. 수학에선 짧은 증명일수록 더 훌륭하다는 의미로 해석된다. 공리는 특히 짧으면서 많은 의미를 함축한 그 무엇에 집중한다. 프로그래밍도 마찬가지다. 건축가와 디자이너에게 아름다움이란 피상적인 장식물을 제멋대로 달아놓은 것을 의미하지 않는다. 그것은 신중하게 선택된 구조적인 요소로부터 풍기는 무엇이다. (장식이라는 것이 그 자체로 나쁜 것은 아니지만, 멋없는 형상을 숨기기 위해서 사용되면 나쁘다.) 이와 마찬가지로 미술에서는 대상에 대한 깊은 관찰과 견고한 구성이 돋보이는 정물화가 아무 생각 없이 이미지만 복사한 그림보다 더 흥미롭다. 

     

    초보 작가는 예술적이기 위해서 실제로 쓰이는 말과 거리가 먼 현학적인 문체를 구사한다. 디자이너는 조금이라도 더 예술적이기 위해서 화려한 장식을 꾸며내려고 애쓴다. 모두 핑계일 뿐이다. 긴 단어나 "표현주의적인" 붓질의 이면에는 애무 내용이 담겨있지 않다. 

     

    진정한 문제는 단순성이 강제되었을 때 만나게 된다. 무의미한 장식물을 동원할 수 없게 되었을 때에는, 실질적인 내용을 보여주어야 하기 때문이다.

     

    좋은 디자인은 시간에 구애받지 않는다.

    어떤 해결책이 지저분하다면, 그것은 최선의 해결책일리가 없다. 어딘가에 더 나은 해결책이 있을 것이고, 언젠가 다른 사람이 그것을 발견하게 될 것이다.

     

    시대를 뛰어넘으려고 노력하는 것은 당대 유행의 포로로 잡히는 것을 피하기 위한 방법이기도 한다. 유행이라는 것은 본질적으로 시간에 따라서 변하는 것이므로, 미래에도 여전히 멋지게 보일 만한 것을 만드록 싶다면 순간적인 유행이 아니라 사물의 고유한 장점으로부터 내용을 이끌어 내야 한다.

     

    미래의 세대에게 통하는 어떤 것을 만들고 싶다면 이전 세대에게도 통할 만한 것을 만들어야 한다. 미래의 모습이 어떨지에 대해서 생각해 보는 것은 쉬운 일이 아니지만, 현재의 유행에 아무런 신경을 쓰지 않는다는 점에서는 미래나 과거가 별로 다르지 않다. 따라서 현대인과 1500년 무렵의 인류에게도 동시에 인정받을 수 있는 작품이라면, 그것이 2500년의 인류에게도 인정받을 가능성이 크다.

     

    좋은 디자인은 제대로 된 문제를 해결한다.

    나쁜 디자인은 대게 방향이 틀릴 때 나온다. 20세기 중반에는 텍스트를 산세리프 서체로 장식하는 것이 유행했다(이런 폰트는 실제적이고 순수한 글자 형태에 가까웠다). 하지만 텍스트 전체를 놓고 봤을 때 문제가 되는 것은 각 글자의 형태가 아니었다. 글을 쉽게 읽을 수 있는 가독성을 높이기 위해서는 글자들이 서로 적당한 거리로 떨어져 있는 것이 더 중요했다. 타임스로만 체는 비록 빅토리아 시대의 서체처럼 보이지만 소문자 g와 y의 구분이 훨씬 쉽다.

     

    좋은 디자인은 무언가를 제안한다.

    좋은 건물은 사람드링 그 안에서 건축가의 각본을 수행하는 배우로서의 삶을 살도록 강요하지 않는다. 오히려 사람드링 펼치고자 하는 삶의 조용한 배경의 공간이 된다.

     

    항상 그런 것은 아니지만 좋은 디자인은 조금 우습기도 하다.

    유머란 힘과 관련이 있기 때문이다. 유머감각을 갖기 위해서는 우선 강해질 필요가 있다. 유머감각을 유지한다는 것은 불행을 가볍게 털어낸다는 뜻이고, 유머감각을 상실한다는 것은 불행에 압도된다는 뜻이다. 때문에 힘이 있음을 나타내는 증표, 혹은 최소한 힘이 가진 특권은 무엇이든 너무 심각해지지 않는다는 데 있다. 확신이라는 것은 과정 전체를 놀림감으로 삼아 버린다. 히치콕은 그의 영화에서, 브뢰겔은 그의 그림에서, 셰익스피어는 그의 희곡에서 그렇게 했다.

     

    좋은 디자인이 꼭 우스워 보일 필요는 없다. 하지만 유머가 없는 데 좋은 디자인으로 불리는 것을 상상하기가 쉽지는 않다.

     

    좋은 디자인은 어렵다.

    어렵다고 해서 좋은 것은 아니다. 고통에는 좋은 것과 나쁜 것이 있다. 예를 들어서 목적지를 향해 달리는 고통을 원하는 것이지 손톱을 밟히는 그런 종류의 고통을 원하는 사람은 없다. 어려운 문제에 부딪힘으로써 디자이너는 더욱 발전하지만, 여기에서 어려운 문제라는 것은 변덕스러운 고객이나 품질이 떨어지는 옷감 따위는 아니다.

     

    바우하우스의 건축가들이 설리반이 말한 "형태는 기능을 따른다."는 명제를 채택했을 때, 그들이 의미한 것은 형태가 기능에 의해서 결정되어야 한다는 것이었다. 만약 기능의 충분히 어려운 과정을 극복하고 구현되었다면, 그 안에는 실수에 대한 여지가 거의 없기 때문에 형태는 기능이 요구하는 대로 따라가야 한다. 자연에서 살아가는 야생동물들은 쉽지 않은 삶을 살아가기에 아름답게 보인다.

     

    좋은 디자인은 간단해 보인다. 

    가장 위대한 과학과 공학의 발견 중에서 어느 것은 너무나 간단해 보이기 때문에 그런 거라면 나라도 생각할 수 있었을 텐데, 하고 생각할 정도다. 그것을 발견한 사람은 그 말에 이렇게 대꾸할 것이다. 그런데 당신은 왜 생각하지 않았습니까?

     

    간단하고 쉽게 보이도록 드러내기란 무수한 연습을 통해서만 가능해진다. 연습이 하는 일은 대게 의식적인 생각을 요구하는 일들을 수행하기 위해서 무의식을 훈련시키는 것이다. 어떤 겨웅에는 몸 전체를 훈련시키기도 한다. 전문적인 피아니스트는 그의 두뇌가 손에 신호를 보내는 것보다 더 빠르게 음표를 쳐 내려갈 수 있다. 그와 마찬가지로 일정한 훈련을 거친 예술가는 마치 누군가 리듬에 맞춰 발을 흔드는 것처럼 눈으로 지각한 시각적인 대상을 손끝을 통해서 자동적으로 뽑아낸다.

     

    좋은 디자인은 대칭을 이용한다.

    대칭에는 두 가지 종류가 있다. 반복가 재귀가 그것이다. 재귀란 나뭇잎에 나타는 가느다란 줄기의 모습처럼 하부요소에서 반복이 일어나는 것을 의미한다.

     

    수학과 공학에서는 재귀가 큰 도움이 있다. 귀납적 증명은 놀라울 정도로 짧다. 소프트웨어에서는 재귀로 풀리는 문제는 거의 언제나 재귀로 푸는 것이 가장 최선의 해결책이 되곤 한다. 에펠탑이 놀랍게 보이는 것은 부분적으로 그것이 탑 위에 탑을 쌓는 재귀적인 방법을 동원하고 있기 때문이다. 

     

    대칭, 그리고 특히 반복이 갖는 하나의 위험은 그것이 생각의 자리를 대체할 수도 있다는 점이다.

     

    좋은 디자인은 자연을 닮았다.

    자연은 닮은 것이 본질적으로 좋은 이유는 자연은 이미 오랜 세월 동안 문제를 해결하기 위해서 노력해 왔기 때문이다.

     

    복사는 사기가 아니다. 소설이 실제 삶을 닮아야 한다는 데 이견을 다는 사람은 별로 없을 것이다. 삶으로부터 내용을 훔치는 것은 그림에서도 소중한 방법이 된다. 그림을 그리는 목적은 단순히 기록을 남기는 것이 아니다. 삶으로부터 따온 내용을 그리는 것은 당신의 마음속에 씹어 삼킬 영양분을 제공해 준다. 당신의 눈이 무언가를 바라볼 때, 손은 더 재미있는 일을 하게 되는 것이다.

     

    좋은 디자인은 무언가를 다시 디자인하는 것이다.

    실수는 자연스러운 것이다. 그것을 재난으로 간주하는 대신, 실수를 쉽게 인정하고 쉽게 고칠 수 있도록 허용해야 한다. 레오나르도는 스케치라는 수단을 발명했다고도 할 수 있는데, 그림이 엄청난 무게의 탐사를 감당할 수 있도록 만들기 위해서였다. 오픈소스 소프트웨어는 버그의 가능성을 솔직하게 인정하기 대문에 실제로 훨씬 적은 버그를 포함하고 있다.

     

    수정이 쉬운 매체를 갖는 것도 도움이 된다. 15세기경의 유화가 템페라화를 대체하면서 화가들이 사람의 모습처럼 어려운 주제를 다루기 쉬어졌다. 유화 물감은 템페라와 달리 서로 섞을 수도 있고 덧칠도 가능하기 때문이다.

     

    좋은 디자인은 복사가 가능하다.

    자기가 무얼 하는지도 모르고 따라 하기만 하는 것은 형편없는 디자인을 만드는 지름길이다. 자기 아이디어가 어디에 근거를 두고 있는 것인지 모른다면, 모조품을 만들고 있는 것이다. 19세기 중반 무렵의 라파엘은 워낙 유명했기 때문에 그림을 그리는 사람 대부분이 그를 모방했다. 그러나 그러한 모방은 원작에 비해서 대개 몇 단계 아래의 수준이었다.

     

    야심은 모방에 의해서 채워지지 않는다. 미적 취향이 성장하는 두 번째 단게에서는 자신만의 독창적인 작품을 만들기 위해서 의식적으로 노력하게 된다. 위대한 대가는 이기심과 다를 바 없는 자신의 열망을 채우기 위해서 전진한다. 그들은 단지 올바른 대답을 구하기 원할 뿐이며, 올바른 대답의 일부가 다른 사람에 의해서 이미 발견되었다면 그 방법을 사용하지 않을 이유가 없다고 생각한다. 그들은 다른 사람의 생각을 도용한다고 해서 자기 자신의 관점이 상실되는 것은 아니라고 확신한다.

     

    좋은 디자인은 뛰어난 사람들의 모임에서 나온다.

    재능 있는 사람이 모여서 관련된 문제를 연구하는 커뮤니티보다 강력한 것은 없다. 유전적 재능은 상대적으로 보았을 때 별로 중요하지 않다. 단순히 레오나르도의 유전적 재능을 타고나는 것은, 피렌체가 아니라 밀라노에서 태어나는 불행을 극복하지 못한다. 요즘 우리는 주거지를 옮겨 다니지만, 뛰어난 작품을 뜨겁게 달아오른 특정 지역에서 집중적으로 나온다. 바우하우스, 맨해튼 프로젝트, 더 뉴오커를 보라.

     

    좋은 디자인은 종종 대담하다.

    역사 속에서 사람들은 어떤 일이 터무니없다고 생각했을 때, 그와 다른 견해를 밝히는 사람을 추방하거나 폭력으로 다스리는 일을 저질러 왔다. 우리 시대라고 해서 다른 것은 아무것도 없다. 이런 문제는 모든 시대에, 모든 분야에 걸쳐서 나타난다.

     

    오늘날의 실험적 오류는 내일의 새로운 이론을 위한 밑거름이 된다. 새롭고 위대한 무언가를 발견하고자 한다면, 전통적인 지혜와 진실이 서로 어긋나는 상황을 좌시하기보다는 그런 곳에 시선을 집중해야 한다.

     

    아름다움을 상상하는 것보다 추함을 지켜보는 것이 쉽다. 아름다운 것을 창조한 사람들은 자기 눈에 추하게 보이는 것을 고치는 과정을 거쳤다. 위대한 작품은 누군가 어떤 것을 바라보고 생각을 하기 때문에 탄생한다. 흠,, 나라면 저것보다 더 잘 만들 수 있을 텐데.. 라는 생각을 하는 것이다. 조토는 여러 세기 동안 사람들이 만족했던 틀에 박힌 공식대로 그려진 비잔틴의 성화를 바라보면서 너무나 딱딱하고 부자연스럽다는 생각을 했다. 코페르니쿠스는 분명히 더 나은 답이 있는 문제를 놓고 동시대의 동료들이 만족하고 있는 현실을 견딜 수가 없었다.

     

    추함을 참을 수 없는 것, 그 자체만으로는 충분하지 않다. 좋은 후각을 발달시키기 전에 해당 분야의 일을 충분히 이해하고 있어야 한다. 창조 이전에 자기 숙제부터 해야 하는 것이다. 어떤 분야의 전문가로 성장함에 따라서, "이런, 이것보다 나은 방법이 있을 거야."라는 희미한 목소리를 듣게 될 것이다. 그 목소리를 무시하지 않기 바란다. 위대한 작품을 만드는 방법은 바로 자기 자신만의 미적 취향과 그것을 만족하게 할 수 있는 능력에 달려 있는 것이다.

     

    10장. 프로그래밍 언어에 대한 설명

    p.241
    문제인 것은 어떤 언어를 오랫동안 사용하면, 어느 순간부터 사고 자체가 그 언어로 이루어진다는 사실이다. 이런 상황이 되면 실질적으로 다른 언어에 본질적으로 잘못된 것이 아무것도 없음에도 불구하고, 터무니없이 어색하게 느껴진다. 경험이 부족한 프로그래머들이 언어에 대해서 내리는 판단은 이러한 심리적 효과에 영향을 받기도 한다.

    p.242
    해커 중 일부는 이미 익숙해진 언어만을 선호하고, 그 밖의 모든 것을 혐오한다. 반면 일부는 세상에 존재하는 언어가 모두 똑같은 것이라고 말한다. 진실은 이 두 가지 극단 사이의 어딘가에 놓여있다. 언어는 서로 다르지만, 무엇이 최선인지에 대해서 말하는 것은 쉽지 않다. 프로그래밍 언어라는 분야는 계속해서 발전하고 있기 때문이다.

    p.244
    정적 타이핑을 지지하는 사람들은 그렇게 하는 것이 버그를 양산하는 것을 막을 수 있고, 컴파일러가 빠른 코드를 작성하도록 만들 수 있다고 말한다. (둘 다 사실이다.) 동적 타이핑을 주장하는 사람들은 정적 타이핑은 작성할 수 있는 프로그램의 종류를 제한한다고 논박한다. (맞는 말이다.)

    p.245
    객체지향 방법론에 대한 논쟁은 정적 타이핑과 동적타이핑 사이의 논쟁처럼 분명하지는 않다. 타입 체크(타이핑)의 경우에는 이쪽이든 저쪽이든 어느 한쪽을 선택해야만 한다. 하지만 어떤 언어의 객체지향성이라는 것은대개 정도의 문제일 뿐이다. 사실 객체지향에는 두 가지 의미가 있다. 어떤 언어는 당신이 객체지향 스타일로 프로그램을 짤 수 있도록 허용한다는 점에서 객체지향적이고, 어떤 언어는 당신이 반드시 객체지향 방법론으로 프로그램을 짜도록 한다는 점에서 객체지향적이다. 후자의 경우에는 특별한 장점이 있는지 모르겠다. 

     

    11장. 100년 후의 프로그래밍 언어

    p. 252
    모든 프로그래밍 언어는 두 개의 부분으로 나누어질 수 있다. 공리의 역할을 담당하는 기본 연산자 집합과, 이러한 연산자를 이용해서 작성할  수 있는 언어의 나머지 부분이 그것이다. 
    언어의 기본 연산자는 그 언어의 장기적인 사활에 가장 중요한 요소다. 나머지는 얼마든지 바꿀 수 있다. 그것은 마치 집을 살 때 위치가 가장 중요한 것과 비슷하다. 다른 것은 나중에 고칠 수 있지만, 위치는 바꿀 수 없다.
    공리는 잘 선택하는 것만으로는 부족하고, 수도 적어야 한다. 수학자들은 공리가 적을수록 좋다고 생각해 왔다. 일리가 있는 생각이다.
    어떤 언어의 중심을 깊게 들여다보면서 없어도 좋은 공리가 있는지 살펴 보는 것은 좋은 연습이 된다. 

    p.254
    언어 자체는 테크놀로지가 아니기 때문에 천천히 발전한다. 언어는 표기notation다. 프로그램이란 컴퓨터가 수행했으면 하는 일을 공식적으로 표기한 것에 지나지 않는다. 따라서 프로그래밍 언어의 발전 속도는 교통수단이 아니라 수학적 표기 방법의 발전 속도와 비슷하다. 수학적 표기 방법도 존재하기는 하지만, 테크놀로지만큼은 아니다.

    p.
    세상에는 좋은 낭비와 나쁜 낭비가 있다. 나는 더 많이 소모함으로써 더 단순한 디자인을 얻을 수 있는 좋은 낭비에 관심이 있다. 우리가 새롭고 더 빠른 하드웨어를 통해서 얻을 사이클을 마음껏 낭비할 수 있는 기회를 어떻게 활용할 것인가?
    속도에 대한 욕망은 보잘것없고 느린 컴퓨터를 통해서 우리 마음속 깊이 각인되어 있기 때문에, 욕망을 극복하기 위해서는 의식적인 노력을 기울일 필요가 있다. 새로운 언어를 디자인할 떄 우리는 사소한 편의를 향상시키기 위해서 과감하게 효율성을 포기할 수 있는 상황을 의식적으로 찾아 나서야 하는 것이다.

    p.257
    구현에 대해서 적게 정해 높을수록 프로그램이 더 유연해지기도 한다. 스펙은 프로그램이 만들어지는 동안에 변경되기도 하는데, 이것은 단순히 불가피한 일이 아니라 바람직한 일이기도 하다.
    에세이essay라는 단어는 '시도한다'는 의미를 갖는 불어 'essayer'에서 나온 말이다. 에세이의 본래 의미는 어떤 내용의 진실을 파악하려고 시도한다는 뜻이다. 이것은 소프트웨어에서도 마찬가지다. 내가 보기에 프로그래밍을 수행하는 프로그래머는 코드를 처음 쓰기 시작할 때 자신이 정확하게 무엇을 쓰려고 하는지 모른다는 점에서 에세이를 쓰는 작가와 다를 바 없다.

    p.260
    소프트웨어를 다중의 계층으로 작성하는 것은 애플리케이션 내부에서도 강력한 힘을 발휘한다. 상향식 프로그래밍이라는 것은 프로그램을 여러 개의 계층으로 구성하는 것을 뜻한다. 하나의 계층이 자기보다 위에 있는 계층에게 언어로서 기능하는 방식이다. 이러한 접근은 더 작고 유연한 프로그램을 양산한다.
    재사용 가능성이라는 개념은 어떻게 하다 보니 1980년대의 객체지향 프로그래밍과 연결되었고, 그 이후로는 어떤 증거도 그 관계를 끊지 못하는 것처럼 보인다. 객체지향 소프트웨어 중에는 재사용이 가능한 것도 있지만, 재사용 가능성을 보장하는 것은 객체지향성이 아니라 상향식 접근방법이다. 라이브러리를 생각해보라.
    큰 조직에서는 객체지향에 대한 유혹을 견디기 어렵다. 객체지향은 스파게티 코드를 유지하는 것을 도와준다. 그것은 일련의 패치로 이루어지도록 만든다. 커다란 조직은 소프트웨어를 이와 같은 방식으로 개발하는 경향이 있는데, 나는 이러한 일이 100년 후에도 여전히 똑같을 것이라고 믿는다.

     

    12장. 평균 뛰어넘기

     

    p.274

    만약 다른 스타트업이 하는 일을 비슷한 수준으로 따라하면, 평균적인 수준의 실적을 기대할 수 있다. 문제는 평균이라는 것이 망하는 것과 동일한 지점을 가리키고 있다는 점이다. 스타트업의 생존 확률은 50% 미만이다. 따라서 스타트업을 경영할 때는 특별한 일을 하지 않으면 곤란하다. 그렇지 않으면 문제가 생기기 때문이다. 

     

    p.281

    귀납적 추론에 의하면 다양한 언어 사이에 존재하는 기능적 차이를 이해하고 있는 사람은 가장 강력한 언어를 사용하고 있는 사람이다. 당신은 다른 사람들의 말을 들으면 안 된다. 그들은 자기가 사용하고 있는 언어에 충분히 만족하고 있다. 그 언어가 프로그램에 대한 그들의 관념을 규정한다.

     

    13장. 공부벌레의 역습

     

    p. 300

    덜 유명한 언어를 사용하는 데 따르는 문제로 세 가지 정도 생각해 볼 수 있다. 우선 프로그램이 다른 언어로 작성된 프로그램과 함께 어울려서 작동할 때 제대로 작동하지 않을 수 있다. 사용할 수 있는 라이브러리가 제한될 수도 있다. 그리고 프로그래머 고용이 어려울 수도 있다.

     

     첫 번째 문제의 의미는 시스템 전체를 통제할 수 있는가이다. 당신이 시스템 전체를 통제하고, ITA가 그러리라고 생각되는 것처럼 모든 부분의 소스코드를 가지고 있다면, 어떤 언어든 원하는 것을 사용하면 된다. 호환성 문제가 발생한다면 스스로 해결할 수 있다. 

     라이브러리의 중요성은 애플리케이션에 달려있다. 크게 복잡하지 않은 문제를 해결할 때는 라이브러리의 존재가 언어 자체의 고유한 기능보다 더 큰 의미를 가질 수 있다. 손익분기점을 고려해라

     강력한 언어를 선택하면 당신이 필요로 하는 팀의 크기를 더 줄일 수도 있다. (a) 강력한 언어를 사용하면 많은 해커가 필요하지 않기 때문이고, (b) 앞선 언어를 사용하는 해커들은 대게 똑똑하기 때문이다.

     

     

     

     

    'Book Review' 카테고리의 다른 글

    cs opensource book  (0) 2022.09.16
    린 소프트웨어 개발론 적용  (0) 2022.04.05
    모두의 네트워크 Lesson 정리  (0) 2021.05.30
    파이썬 코딩의 기술 (브렛 슬라킨)  (0) 2021.05.29
Designed by Tistory.