티스토리 뷰


(요약은 아니구요. 대담 내용을 제 생각과 함께 살을 붙여서 써보았습니다.)


 오픈소스란 무엇인가?

 오픈소스가 현 시대에 다방면으로 사용되어지고 있습니다. 그럼에도 국내에는 자생적인 오픈소스가 잘 없는 편이지요.

 오픈소스를 진행한다 하더라도 가장 중요한 것은 사람들과 관계를 맺는 방법이 중요합니다. 거기다 오픈소스는 금전전 혜택을 위하여 만드는 경우가 거의 없는 편이라, 대게 개인적 동기에 의해 이루어집니다. 이는 다양한 사람들의 욕망이 하나로 모여서 가는 경우인데, 이는 수많은 의견들이 나타날 수 밖에 없는 환경을 조성하겠지요. 중요한 것은, 각각의 다른 의견들이 어떤 맥락을 갖추기 된다면 하나의 방향이 나올 수 있다는 점입니다. 이렇게 하기위해서는 어떤 종류의 이끌림이 필요합니다.

 그 어떤 종류의 단서 중 하나가 바로 국내의 엔하위키입니다. 오픈소스를 이야기하는데 엔하위키가 나오셔서 많이 당황하셨죠? 오픈소스의 기본적인 틀은 바로 공유에 있습니다. 내가 경험하고 알고 있는 지식을 공유함으로써 다른 이들과 함께 성장시켜나가고자 하는 것이 바로 오픈소스가 지향하는 방향이기 때문입니다. 이점에 있어서 엔하위키는 위키보다 더 많은 컨텐츠를 가지고 있습니다. 왜냐면, 위키만큼 격식을 차리는 자리가 아니기에, 재미에 의해 쓰여지는 위키가 많다는 점입니다. 공유를 하거나 자신이 아는 것 알리고 싶은 것이 재미있을때, 그 오픈소스 개발은 활성화 될 수 있음을 이야기합니다.


 프로그래밍은 인생에서 어떤 의미인가?

 프로그래밍은 일종의 탈출구라고 말할 수도 있을 겁니다. 일적인 것을 떠나서 취미 생활로서 의미를 가졌습니다. 가장 좋았던 점은, 오픈소스를 진행하면서, 추상적인 이야기가 많은데, 이런 과정을 잘 추스려가며, 여러 분야의 사람들을 많이 알게 되었다는 점입니다.


 오픈소스 프로젝트 참여에서 얻은 장단점은?

 조직이 커지면 의사결정 구조가 생겨날 수 밖에 없고, 여기에 따른 사람들간의 가치관 충돌이 조직을 흔들기 시작합니다. 오픈소스를 지속하는 동력이 내부동력(개인적 동기)인 만큼 각 개인들의 선의에 기댈 수 밖에 없다보니, 개인들의 의견 충돌은 매우 큰 불화를 일으킬 수 밖에 없을 겁니다. 또한, 프로그램이 커지고 복잡해지면서, 이전에 재미로 만들어내는 것보다 더욱 어려워지는 일들이 발생합니다.

 그럼에도, 사회적 동인에 의해 지속될 수 있습니다. 바로 내가 생각하고 만들어낸 프로그램이 사회에 좋은 영향을 끼치고 있다는 점을 인식하게 되었을 때의 즐거움이랄까요.

 오픈소스가 파생되는 프로젝트로 인해 간혹 금전적 이득을 거둘 수 있기도 합니다.

 어떤 선의의 목적을 가지고 오픈소스를 제작하여도, 누군가 악의에 의해 쓰여질 수도 있어서 슬픕니다.


 오픈소스를 권하는 이유?

 오픈소스는 거창한 것이 아닙니다. 오픈 소스의 시작은 자신이 가진 경험과 지식을 나누는 일입니다. 가령, 자신만의 레시피가 있는 요리법을 공개하는 것이지요. 그러면 어떤 누군가가 그 요리 레시피를 보고 마음에 들어서 따라하거나, 혹은 거기서 더욱 좋은 것을 발견한 사람들이 같이 만들어갈 수 있다면?

 리차드 스톨만의 재미난 애피소드 하나 이야기를 하겠습니다. 스톨만이 한국에 와서 밥을 먹을려는데, 젖가락을 6개나 주더랍니다. 젖가락을 몰랐던 스톨만은 고민을 합니다. 그러다가, 이 젖가락 6개 모두를 이용해서 음식을 먹을 수 있지 않을까 생각하며 모든 손가락에 젖가락을 다 끼워서 음식을 먹을려고 시도하지요. 이상하게 들리겠지만, 이것이 해킹입니다. 해킹은 별다른 뜻이 아닙니다. 어렵지만 유희적인 것입니다. 아주 내제적인 동기가 필요한 것이지요.


 기획과 개발을 같이 한다는 것?

 기획일과 개발일을 병행하고 있습니다. 꽤나 다양한 커리어를 가지고 있는데요, 다양한 직군과 협업을 하였던 것이 계기가 되어, 기획과 개발을 동시에 하게 되셨다고 합니다. 개발은 참 익히기가 쉽습니다. 무엇보다 피드백이 즉각적으로 다가오기 때문입니다. 그러나 기획은 다릅니다. 자신이 기획한 그 무언가의 피드백은 먼 미래에 나오는 것이거든요. 그러므로 여기에 필요한 것이, 데이터 분석이 아닐까 싶습니다.


 의사소통은 어떻게?

 프로그래머의 시각에서 이야기 하자면, 컴퓨터에게 일을 시키기 위해서도 문법적으로도 문제가 없고 논리로도 문제가 없는 코드로 소통을 해야만 작동을 합니다. 사람도 마찬가지 입니다.  어떤 무언가의 일을 함에 있어서 그 세심함이 필요한 것입니다. 이러한 점들이 프로그래밍을 하면서 얻은 교훈이, 소통으로 전이가 된 사례라고 말할 수 있겠지요.


 소통의 문제들?

 기획자와 개발자가 말하는 언어가 다르다는 것입니다. 기획자는 이런 기능을 필요하다고 생각하고 개발자에게 요구하나, 개발자가 잘못 이해서 다르게 개발할 수도 있다는 점입니다. 가령, 기획자는 sns를 생각하며 이런저런 구상들을 이야기하지만, 정작 개발자는 "아 체팅되는 방이 필요한 거군?"이라고 생각해서 체팅 프로그램을 개발해버리는 것이지요. 이는, 기획자가 요구사항을 이야기할 때, 세심함이 없었거나, 소통이 적었음을 이야기하기도 합니다. 또한 개발자는 대게 어떤 아이디어를 들으면 구현가능성에 대해서 검토를 시작하기에, 개발자 스스로도 소통을 위한 통로를 열어두고, 자신이 해야할 구현에 대한 상상은 조금 미루는 편이 낫지 않을까 싶습니다.


 기획자가 개발자가 되니, 기술에 대한 제약을 많이 느낄텐데?

 위대한 예술가들은 제약이 좋은 것이라고 말합니다. 재미난 사례를 이야기하자면, 5.1 채널 등 입체음향을 만들어내기 위해서는 아주 큰 앰프나 시스템이 필요합니다. 그러나 닌텐도가 만든 wil의 리모콘은 생각을 바꿔서 입체적인 음향을 만들어냅니다. 스피커를 방의 사방에 설치하는 것이 아니라, 리모컨 자체에 스피커를 장착함으로서, 리모컨으로 게임을 할 때, 리모콘에서 소리가 나도록 하는 것입니다. 테니스 게임을 한다고 가정할때, 테니스공을 칠때 리모콘에서 소리가 난다면, 정말 그 쪽에서 소리가 나는 것이기에, 야주 완벽한 입체음향을 만들어내는 것이지요. 제약이 예술로 승화된 것이지요.


 몇가지 코맨트

 기획자가 개발을 이해한다 하여도, 되도록이면 개발에 지나치게 관여해서는 안됩니다. (하지만 저는, 소스 리뷰라는 형식을 이용해서 개발로서 완성된 소스가 모두 공유하고 알 수 있도록 해야하지 않을까하고 생각해 봅니다. 그래도 아마 말의 뉘양스는, 자기가 예전에 개발 좀 하였다하여 지금의 개발자들에게 훈수두는 것은 어찌보면 미묘한 감정대립을 만들 수도 있다는 이야기겠지요?)

 건축은 자연현상과 역학에 의한 원칙에서 설계가 되고 만들어지지만, 프로그래밍은 그 원칙을 인간에게 출발해야합니다. 네이버나 다음 이메일을 써보시면, 파일 업로드가 메일 전송 버튼을 누르면 진행되는 점을 발견할 수 있을 겁니다. 그러나 지메일의 경우 첨부할 파일을 클릭하는 순간 그때부터 올라가기 시작합니다. 이는 인간의 행동 자체가 병렬화 해서 진행하기 때문입니다. 만들어야할 서비스는 컴퓨터처럼 절차지향적이고 일방적인 행동이 아니라, 병렬적으로 이루어져야 한다는 점을 잊지 말아야 할 것입니다.


 경험을 많이 하라!

 개발에서 기획, 학술 연구, 생활코딩, 오픈소스 등등. 이런 활동들을 독립적인 활동들로 바라보지만, 이 여러 활동들은 독립적이지 않고 서로 유기적으로 연결되어질 수 있습니다. 생활코딩은 오랫동안 글을 써왔던 능력이 들어가는 부분도 있습니다. 다시, 어떤 하나가 별거의 독립은 아니라는 것입니다.


 의견은 작은 의견에서 큰 영향력이 이루어진다.

 의견이 형성되기 시작할 때, 작은 의견 하나에 따라가는 경향이 있습니다. 이런 경우입니다. 많은 사람들이 모여있는 가운데서, 어떤 누구도 의견을 제시하지 못하고 있을때, 누군가 먼저 의견을 제시하기 시작하면, 사람들은 그 의견에 모이기 시작합니다. 그 의견이 정확한지 아닌 지는 잘 모르지만, 어쩌면 사람은, 불확실하게 받아들여지는 현실을 좀 더 확실하게 받아들이기를 원해서 그럴지도 모릅니다. 소수가 영향력을 발휘하는 것은 막기 위해서는, 다수가 자신들 각자의 이익을 최대한으로 가져갈때 수렴되어야 한다고 말합니다. (공리주의적인 이야기인데, 저는 회의적인 입장입니다.)


 마지막으로, netlogo를 추천하였습니다. 교육용을 목적으로 만들어진 언어이기도 하지만, 어떤 큰 모델들을 테스트해볼때 이용할 수도 있다고 합니다.


 감사합니다.