해커와 화가

  1. […] 지난 30여 년 동안에 부자가 된 사람들 중에서 많은 수가 프로그래머라는 사실을 눈치 챘을 것이다. 빌 게이츠, 스티브 잡스, 래리 엘리슨, 어째서 그런가? 도시 공학자, 사진작가, 보험 회계가 아니라 왜 프로그러매가 부자가 되었는가?

  2. […] 지금은 컴퓨터의 시대다. 사실 현재는 컴퓨터의 시대가 이나라 우주의 시대, 혹은 원자력의 시대가 되기로 되어 있었다. 하지만 이런 이름들은 물론 PR 업계의 사람들이 지어낸 이름에 불과하다. 그렇지만 컴퓨터는 우리의 삶에 대해서 우주여행이나 원자력 기술보다 훨씬 더 심오한 영향을 끼치고 있다.

  3. 공부벌레들은 바로 이점을 인식하지 못한다. 그들은 인기를 끌기 위해 각별한 노력이 필요하다는 사실을 알지 못한다. 어떤 분야에 속하지 않는 사람들은 그 분야에서 성공을 거두기 위해 얼마나 지속적으로 (종종 무의식적이기도 한) 노력해야 하는지 알지 못한다. 예를 들어서 사람들은 그림을 잘 그리는 사람을 보면 그가 그러한 재능을 타고 났을 것이라고 생각한다. 하지만 그림을 “잘 그리는” 사람들은 그림을 그리는데 많은 시간을 투자해 왔다. 그들이 그림을 잘 그리는 이유는 거기에 있다. 마찬가지로 인기도 그저 인기가 있는가, 없는가의 문제가 아니다. 그것은 지속적인 노력을 통해서 만들어 나가는 무엇인 것이다.

  4. […] 인기라는 것은 단지 부분적으로만 개인의 매력과 관련된 문제다. 사실 그것은 연합과 더 깊은 관련을 갖는다. 좀 더 많은 인기를 얻기 위해서는 다른 인기 있는 사람들과 가까워지는 노력을 끊임없이 해야 한다. 그리고 그렇게 하는 데에는 공동의 적을 갖는 것보다 좋은 방법은 없다.

  5. 유권자들의 관심을 국내의 실정으로부터 다른 데로 돌리는 정치인들과도 같다. 만약 실제적인 적이 존재하지 않으면 가상의 적이라도 만들어내야 한다. 인기사다리의 상층부에 앉아 있는 아이들은 공부벌레를 추려내서 배척하는 과정을 통해서 자기들끼리의 연대감을 공고히하는 것이다. 외부의 침입자를 공격함으로써 그들 모두가 내부자로 결속된다. 왕따와 같은 현상이 주로 집단적으로 일어나는 것은 이러한 이유 때문이다.

  6. 어른들이 10대 아이들이 서로를 고문하는 있는 것을 모를 리 없다. 그렇다면 그들은 이런 현실에 대해서 무엇이든 조치를 취해야 하는 것이 아닐까? 하지만 그들은 아이들의 그런 행동을 사춘기의 열병이라고 나무란다. 어른들은 아이들이 그렇게 불행해 보이는 것은 단지 그 괴물딱지 같은 화학물질, 즉 호르몬이 그들의 혈관을 돌아다니면서 그들의 열기를 뜰쑤시기 때문이라고 말한다. 사회 시스템에 잘못된 것은 없으며, 원래 그 나이 또래에는 그런 비참한 심정을 느끼기 마련이라고 말한다.

  7. 나는 13살 아이들이 본래부터 엉망진창인 삶을 살도록 되어 있다는 이론을 밎지 않는다. 만약 그것이 그런 심리적인 이유에서라면, 그것은 서게 어느 곳에서나 발견되어야 옳다. 하지만 몽고의 유목민들도 13살 무렵에 그렇게 비참한 기분을 느끼고 있을까?

  8. 10대 아이들은 본래 사회에서 좀 더 활동적인 역할을 담당해 왔다. 산업혁명 전의 시기에는 그들이 가게든, 농장이든, 아니면 심지어 전함에서든, 무언가 실질적인 것을 위한 견습생이었다. 그들이 자기들만의 사회를 형성하도록 방치되지 않았다. 그들은 어른들의 사회에 속한 주니어 멤버였다.

  9. 그 시절에는 어른들이 아이들이 배우고자 하는 일의 실질적인 전문가였기 때문에 지금에 비해서 더 많은 존경을 받았다. 요즘 아이들은 그들의 부모가 멀리 떨어진 사무실에서 도대체 무슨 일을 하는지 알지 못하며, 그들이 학교에서 하는 일과 나중에 어른이 되어서 할 일 사이에 어떤 관련이 있는지 인식할 수도 없다.

  10. […] 고등학교의 불어 시간에 우리는 빅토르 위고의 «레 미제라블»을 읽은 적이 있었다. 하지만 우리 중에 어느 누구도 그 위대한 책을 읽을 수 있을 만큼 불어를 잘 했다고 보이지 않았다. 다른 아이들과 마찬가지로 나 역시 그저 클리프의 요점정리(Cliff’s Notes)만 대충 훑어보는 식이었다. 나중에 시험을 보는데, 주어진 문제가 이상했다. 문제 안에는 심지어 불어 선생님마저 사용하지 않을 정도로 긴 단어가 포함되어 있었던 것이다. 도대체 이런 단어가 어디서 나타난 것야? 나중에 알고 봤더니 그것은 클리프의 요점정리에 등장하는 단어였다. 선생님들도 요점정리를 이용한 것이었다. 우리는 모두 그저 서로를 향해서 흉내를 내고 있었을 뿐이었다.

  11. 물론 공립학교의 선생님 중에는 훌륭한 사람도 있다. 내가 4학년이었을 때의 선생님인 미하코(Mihalko)씨의 열정과 상상력은 그 반 아이들이 30년이 지난 지금도 그때를 회상하도록 만들 정도였다. 하지만 그런 사람은 다만 흐르는 물결을 거슬러 올라가는 사람일 뿐이었다. 그런 사람들 몇몇이 시스템 전체를 고칠 수는 없다.

  12. […] 컴퓨터 사이언스라는 말은, 예전에 유고슬라비아가 그랬던 것처럼, 그저 겉으로 보기에 서로 연관된 것처럼 보일 뿐인 영역을 한꺼번에 쓸어 담는 그릇에 불과하다. 그 그릇의 한쪽 끝에는 사실 수학자이지만 DARPA에서 연구비를 타내기 위한 목적으로 자기가 컴퓨터 사이언스를 하고 있다고 주장하는 사람들이 존재한다. 그릇의 가운데에는 컴퓨터의 자연사, 예를 들어서 네트워크로부터 데이터를 라우팅(routing)하는 알고리즘에 이르기까지의 대상을 연구하는 사람들이 존재한다. 그릇의 반대편 끝에는 뭔가 재미있는 소프트웨어를 만들기 위해서 노력하는 해커들이 위치한다. 해커들에게 있어서 컴퓨터는 - 건축가에게는 콘크리트가, 화가에서는 그림이 그런 것처럼 - 자기를 표현하기 위한 매체에 불과하다. 결과적으로 컴퓨터 사이언스란 마치 수학자, 물리학자 그리고 건축가가 하나의 학과 안에 뒤섞여 있는 것과도 같다.

  13. 해커가 수행하는 일은 가끔 “소프트웨어 엔지니어랑”이라는 말로 불리기도 하는데 이것은 컴퓨터 사이언스에 못지않게 잘못된 인식을 심어준다. 훌륭한 소프트웨어 설계자가 엔지니어가 아닌 것은 건축가가 엔지니어가 아는 것과 다르지 않다. 건축과 공학의 경계선이 분명한 것은 아니지만 아무튼 그것은 존재한다. 그 경계선은 ‘무엇’과 ‘어떻게’라는 두 개념 사이에 놓여있다.: 건축가는 무엇을 할지를 결정하고 엔지니어는 어떻게 할지를 알아낸다.

  14. ‘무엇’과 ‘어떻게’가 지나치게 분리되어ㅑ 할 이유는 없다. 다만 어떻게 해야 할지를 이해하지 못한 채 무엇을 할지 결정ㅎ면 심각한 문제에 부딛힐 가능성이 있다. 하지만 해킹이라는 것은 분명 주어진 요구사항(spec)을 단준히 어떻게 구현할 것인지 정하는 일이 아니다. 진정한 해킹이란 사실 요구사항 자체를 창조하는 것이다. 요구사항을 만들어 내는 최선의 방법은 그것을 실제로 구현해 보는 것인 경우가 많다.

  15. […] 내가 ‘컴퓨터 사이언스’라는 말을 좋아하지 않는 또 하나의 이유가 그것이다. 논쟁의 여지는 있겠지만 그릇의 중간에 위치한 사람들이 수행하는 것은 일종의 실험과학(experimental science)이다. 하지만 양쪽 긑에 존재하는 사람들, 즉 해커와 수학자는 과학을 수행하고 있는 것이 전혀 아니다.

  16. […] 그 당시 나는 분명히 몇 장의 종이보다는 컴퓨터 앞에 앉아서 프로그래밍하는 것을 더 즐겼다. 또 전체적인 프로그램을 미리 신중하게 적어서 내가 생각하는 방향이 옳은지 여부를 확인하기 전에 조각난 코드부터 대책 없이 늘어놓은 다음 그것의 모양을 조금씩 잡아 나가는 방법으로 프로그래밍을 했다. 내가 배운 바로는 디버깅이란 틀린 절차나 부주의한 실수를 잡아내는 최후의 과정에 속했다. 그러나 내가 일한 방식대로라면 프로그래밍 자체가 완벽하게 디버깅으로 이루어져 있다.

  17. […] 프로그래밍 언어는 당신이 이미 머리속으로 생각한 프로그램을 표현하는 도구가 아니라, 아직 존재하지 않는 프로그램을 생각해 내기 위한 도구다.

  18. […] 그래서 해커가 하나의 프로젝트를 붙들고 몇 년 동안 일하면서 나중에 새롭게 떠오르는 생각을 프로젝트에 부분적으로 적용하여 개정판을 만들어 나가는 것보다는, 화가와 같이 처음부터 새롭게 시작하는 프로젝트를 규칙적으로 반복하는 것이 더 바람직하다고 본다. 해커들이 실제적인 행동을 통해서 해킹을 배운다는 사실은 해킹이 과학과 다르다는 점을 시하는 또 하나의 증거가 된다.

  19. […] 내 생각으로는 너무 섣부른 디자인도 성능의 최적화와 똑같은 정도로 비판의 대상이 되어야 옳다. 다시 말해서 프로그램이 수행하는 일을 너무 일찍 결정해 버리는 것 말이다.

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

  21. […] 우리는 조그마한 아이들이 산타클로스를 믿는 것이 귀엽다고 생각한다. 나 자신도 그렇게 생각한다. 하지만 누군가는 의문을 품을 것이다. 도대체 우리는 왜 아이들을 위해서 그런 이야기를 꾸며내는가, 혹시 그것은 어른인 우리 자신을 위해서 꾸며내는 것은 아닌가?

  22. 좋은 과학자는 전통적인 지혜를 무시하는 것이 아니라, 그 지혜를 깨뜨리기 위해 노력을 기울기는 사람이다.

  23. 해커들이 다은 세대를 위한 아이디어를 얻는 방법은 현존하는 테크놀러지의 내부를 들여다보는 것이다.

  24. 나의 어머니는 컴퓨터가 필요한 것이 아니라 가계부가 필요한 것이며, 그런 사람은 한두 명이 아니다.

  25. 개발자들의 입장에서 보았을 때 웹 기반 소프트웨어와 테스크톱 소프트웨어 사이에 존재하는 가장 뚜렷한 차이는 코드에 있지 않다. 정확히는 웹 기반 소프트웨어가 하나의 커다란 바이너리가 아니라 서로 성격이 다른 여러 개의 프로그램이 모여서 구성된다는 점일 것이다.

  26. 만약 스타트업 회사들이 용할 만한 플랫폼을 만들고 싶다면, 해커들 자신이 실제로 이용하고 싶어할 만한 것을 만들어야 한다.

  27. 소프트웨어 회사들은 때로 사용자에게 새로 출시된 소프트웨어를 테스트하도록 강요한다는 혐의로 비난을 받는다. 그렇지만 바로 그것이야말로 내가 주장하고 싶은 훌륭한 테스트 방법이다. 웹 기반 소프트웨어에서는 버그가 많지 않고 또 코드가 투명하기 때문에 그렇게 하는 것이 좋은 방법이 된다. 소프트웨어를 점진적으로 릴리즈하면 우선 한꺼번에 훨씬 적은 수의 버그가 나타나게 된다. 그리고 에러를 재현할 수 있고 수정된 내용을 금방 릴리즈할 수 있기 때문에, 버그를 발견함과 동시에 잡을 수 있다. 우리는 단 한 번도 버그 관리(bug-tracking) 시스템이 필요할 정도로 버그가 많았던 적은 없었다.

  28. […] 두 개의 기능 중에서 사용자가 더 원하는 것이 어떤 것일지 물어보면 그들은 그 자리에서 대답을 했고, 그것은 늘 옳은 판단이었다.

  29. […] 그리하여 만약 소프트웨어를 성공적으로 판매하기 시작한다고 해도, 결국에는 그 일이 마이크로소프트라는 회사의 시장 분석을 도와주는 것과 다름없다는 사실을 깨닫게 된다.

  30. 만약 스타트업 회사들이 이용할 만한 플랫폼을 만들고 싶다면, 해커들 자신이 실제로 이용하고 싶어할 만한 것을 만들어야 한다.

  31. 사용자들이 좋아할 만한 것을 만드는 것에 대해서는, 일반적인 조언을 조금해 줄 수 있다. 무엇보다도 우선 자신이 사용하고 싶어할만큼 간단하고 깔끔한 소프트웨어를 만드는 데에서 출발하라. 1.0 버전을 빠르게 내놓은 다음, 사용자의 반응에 신중하게 귀를 기울이면서 개선을 해 나가라. 고객은 언제나 옳지만, 서로 다른 고객은 서로 다른 의견을 내어놓기도 한다.

  32. […] 당신이 백만 불을 벌기 원하면, 백만 불 어치의 고통을 감수해야 한다. 에를 들어서 백만 불을 벌 수 있는 방법 중의 하나는 평생 동안 우체국에서 일을 하면서 번 돈을 한 푼도 쓰지 않고 저금하는 것이다. 우체국에서 50년 동안 일하는 스트레스를 상상해 보기 바란다. 스타트업이란 그 정도에 달하는 스트레스를 3~4년의 시간에 압축시켜서 경험하는 것을 의미한다.

  33. 부를 창줄하고 싶다면 실제로 부란 게 무엇인지 알아야 한다. 부는 돈과 동일한 것이 아니다.

  34. […] 회사가 당신에게 일 년에 x불을 준다면, 당신은 최소한 일 년에 x불에 해당하는 만큼의 일을 해야 한다. 그렇지 않으면 회사는 망할 수 밖에 없기 때문이다.

  35. […] 집단 속에서는 당신의 일이 다른 사람들의 일과 평균값으로 뭉뚱그려질 것이므로 함꼐 일할 사람들의 실력은 뛰어날수록 더 좋다.

  36. 스티브 잡스는 스타트업의 성공과 실패는 처음 열 명이 어떻게 구성되는가에 달려 있다고 지적했다.

  37. […] 샘 왈튼은 물건을 팔아서 부자가 된 것이 아니라, 새로운 종류의 상점을 구상함으로써 부자가 되었다.

  38. […] 그것은 바로 성급한 최적화(premature optimization)을 피하는 것이다. 너무 많은 기능을 붙잡고 꾸물거리지 말고 최대한 빨리 1.0 버전을 내놓아야 한다. 소프트웨어의 성공 여부를 정확하게 평가할 수 있는 사용자들이 존재하기 전에 수행하는 최적화는 모드 근거 없는 추측에 불과할 뿐이다.

  39. […] 어떤 사람이 체스를 두거나 소설을 쓰는 데 있어서 다른 사람보다 실력이 낫다고 해서 불평을 하는 사람은 없다. 하지만 어떤 사람이 돈을 버는 데 있어서 다른 사람들을 앞지르면, 그건 잘못된 것이라고 말하는 신문 사설을 읽게 된다.

  40. 왜? 돈을 버는 기술에서 불균형이 드러나는 패턴은 다른 기술에서와 다를것이 없는 것처럼 보인다. 하지만 돈을 버는 기술에서 불균형이 나타나면 사람들은 왜 그렇게 민감하게 반응하는 것일까?

  41. […] 잡스와 워즈니악은 부자가 되기 위해서 다른 사람을 가난하게 만들 필요가 없었다. 완전히 그 반대였다. 그들은 우리의 삶을 물질적으로 풍요롭게 만들 수 있는 장치를 개발했다.

  42. […] 만약 레닌이 야후, 인텔, 구글과 같은 회사의 사무실에 들어가 볼 기회가 있다면, 그는 공산주의가 승리했다고 생각했을 것이다. 모두 똑같은 옷을 입고, 똑같이 생긴 사무실을 가지고 있고, 똑같은 가구에 앉아서, 서로에게 경어가 아니라 이름을 부르는 광경을 목격하게 될 것이기 때문이다.

  43. 사회에서 부자가 필요한 이유는 그들이 쓰는 돈과 그들이 만들어내는 직장때문이 아니라, […] 그가 당신의 말을 트랙터로 교체할 수 있도록 만들어줄 것이라는 점이다.

  44. 아름다움은 첫 번째 테스트다. 이 세상에는 못생긴 수학이 영원히 차지하고 들어서 있을 자리가 없다. - G.H. 하디 “어느 수학자의 변명”

  45. […] 미적 취향이란 단지 개인적인 선호의 문제일 뿐이라고 귀가 얼얼할 정도로 반복해서 말한다. 그러나 아이들을 미술관에 데러고 가서 레오나르도는 위대한 예술가이므로 그의 작품에 좀 더 관심을 기울이라고 말한다.

  46. 좋은 디자인은 간명하다. 이런 이야기는 수학에서 그림그리기에 이르기까지 어디에서나 들을 수 있다.

  47. 수학과 공학에서는 재귀가 큰 도움이 된다. 귀납적 증명은 놀라울 정도로 짧다. 소프트웨어에서는 재귀로 풀리는 문제는 거의 언제나 재귀로 푸는 것이 가장 최선의 해결책이 되곤 한다.

  48. […] 레오나르도가 만들어지기 위해서는 타고난 재능 이외에 무언가가 더 있어야 하기 때문이다. 즉, 1450년의 플로렌스가 필요한 것이다. 재능 있는 사람들이 모여서 관련된 문제를 연구하는 커뮤니티보다 강력한 것은 없다.

  49. 어떤 분야의 전문가로 성장함에 따라서, “이런, 이것보다 더 나은 방법이 있을 거야”라는 희미한 목소리를 듣게 될 것이다. 그 목소리를 무시하지 않기 바란다. 위대한 작품을 만드는 방법은 바로 자기 자신만의 미적 취향과 그것을 만족시킬 수 있는 능력에 달려 있는 것이다.

  50. 우리가 가진 테크놀러지를 가장 제대로 이해하고 있었던 사람은 사용자들이었다. 사용자들도 비아웹의 소프트웨어가 어떤 어떤 언어로 작성되었는지에 대해서는 별로 관심을 기울이지 않았다. 하지만 그들은 우리의 소프트웨어가 잘 동작한다는 사실을 알고 있었다.

Written on March 18, 2013