9월, 2010의 게시물 표시

공개(Open), 참여(Participation) 그리고 비즈니스(Business)

이미지
작은 Startup을 생각하면서 방법론 측면에서는 Creative Innovation, 그리고 기술적 관점에서는 Social, Mobile, Open이 마음 속의 큰 화두이다.다른 영역들은 어느 정도 출발점을 정리했는데 Open 부분은 훨씬 오래전부터 고민해왔지만, 정리를 못하고 있다. 기업이란 Profit을 목적으로 하는 존재인데 Open과 Profit은 직접적인 연결 고리를 찾기가 매우 어렵기 때문이다. 하지만, 이미 Software 전반적으로 Open은 Profit에 대한 큰 위협이자 기회 요소로 자리하고 있기 때문에 거칠게나마 정리를 시도해본다. 정리를 시작하기에 앞서 Open이 Social이나 Community 개념과 많은 관련을 가지고 있기 때문에 한 가지 용어를 정리하고자 한다. '이 글에서 Social과 Community는 구분해서 사용한다.' Social은 Social Networks 즉, 사람의 사람 관계 망을 직접적으로 활용하는 좁은 의미의 Social을 지칭하고, Community 기반의 공동 작업은 Social로 표현하지 않는다. 다시 정리하자면 이 글에서 Social이라 칭하는 영역은 엄밀하게 SNS를 적용한 영역이다. 공개(Open)의 대상. 무엇을 오픈하는가? Open Source 기업에서 소프트웨어를 하면서 가장 큰 도전적 이슈는 소스 코드의 공개, 즉 Open Source였다. 소스 코드의 공개는 소스 코드의 수익권을 부정하는 Free Software 운동과 연결되어 시작되었고, 이후 여러 가지 형태의 소유권(License)이 등장하면서 수익권도 다양해졌다. 소스 코드는 공개하되, 누구나 수익을 추구할 수 있는 Apache 그룹의 라이센스에서부터, 특정 기업에서만 수익을 추구할 수 있는 형태의 라이센스들, 그리고 원래의 수익권을 부정하는 GPL 라이센스 등의 형태가 존재하고 있다. 소스 코드의 공개는 수익권 측면뿐 아니라 저작 측면 즉, 소스를 저작하는 형태에서도 변화를 불러왔는데, 개인적인

Idea(아이디어)와 Creative Innovation(창의적 혁신)이 핵심 가치이다.

창의성을 키우는 영재 교육 초등학교 3학년인 큰 애가 수학 문제 풀기가 싫다고 해서 살짝 놀랐다. 아빠를 꼭 닮아서 단순 암기를 싫어하고, 새로운 걸 익히는 걸 좋아할 줄 알았는데. 자세히 들어보니, 학교 수학이 싫다고 한다. 단순 반복에 가까운 숙제가 많아서 수학에 흥미를 잃고 있는 것 같다. 수학은 논리적 사고와 모든 과학의 핵심이 되는 기초인데 자칫 큰일나겠다 싶어 서점에서 영재교육용 수학책을 하나 사서 일요일마다 아빠랑 같이 풀어보기로 했다. (일주일에 한번 한다니 아빠랑 수학하는 걸 특별히 허락해준다고 ㅠ_ㅠ;;) 그런데 영재교육용 수학책을 들쳐보니 앞쪽은 모두 창의력에 대한 얘기이다. (Torrance, Treffinger 등이 대표적인 이론가라고 한다.) 여기에 몇가지 창의의 방법이 소개되어 있어서 언급해본다. 판단을 유보하고 통제한다. 계속 질문한다. 판단을 유보하는 것은 창의를 위해 매우 중요한 부분인데, 직관적인 느낌으로 미리 판단해버리게 되면 숙고의 과정을 거칠 수가 없고, 모든 논의가 중단되어 버린다. 판단은 신중하게 해야 한다. 실패한 발명의 대명사라고 하는 3M의 포스트잇 같은 사례에서 볼 수 있듯 창의적 판단은 현상적 실패나 불합치에서도 섣불리 판단하지 않는다. 결론을 미리 고정해버리면 사고의 풍부함이 생겨날 수 없다. 아이디어의 빈도는 높더라도 단순한 사람들이 많은데, 이러한 습성 때문에 아이디어가 단순한 생각에 그치거나 수준이 떨어지는 경우가 대부분인 것 같다. 질문이라는 것은 끊임없이 다시 생각하는 것을 의미한다. 부끄러워하지 말고 질문을 통해 정확하게 이해하고, 호기심을 끊임없이 자극하면서 질문을 반복해야 사물을 좀더 이해하고, 새로운 면을 발견해낼 수 있다. 창의는 소프트웨어의 핵심 수익을 목적으로 하는 기업에 몸담고 있으면서, 소프트웨어가 주문 제작 방식의 단순 공정이나 혼이 없는 복제에서 벗어나 높은 수익을 만들기 위해서는 차별화된 아이디어를 담아야 한다. 또, 하나의 특이한 아이디어가 아니라 지속

Social Networks, 연결하여 더욱 자유로운 개인들

이미지
Web과 Social 얼마 전에 " 소셜 웹이다 " 라는 온라인 책을 접할 기회가 있었다. 여러 가지 이슈를 던져주긴 했지만, Web 2.0의 기반을 Social Web이라는 이름으로 부르고 있다. Web 2.0과 구글, 리눅스 그리고 위키피디아의 실체를 Social Web이라고 부르자는 내용이었다. Open Source, Open Community, Collective Intelligence 이러한 내용이 Web 2.0의 핵심 문제 의식이었고 블로그, 위키, 유튜브, 위키피디어, 집단 창작 (더 나아가 구글), 그리고 기술적으로는 REST와 open API, open API에 기반한 mashup 등이 모두 웹 2.0의 실현 형태라고 볼 수 있다. 웹 2.0 자체가 Social Networks에 기반하고 있기 때문에 Social Web이라는 주장. 솔직히 기대했던 것은 Facebook과 Twitter가 대표하고 있는 Web 2.0 이후의 Social Networks에 대한 의견을 듣고 싶었던 것인데, 그 글은 Web 2.0의 Social 측면을 얘기하고 있었다. 기대했던 얘기가 아니어서 실망했지만, 마음 속에 담아두고 있던 Social이란 화두에 대해 돌아보는 계기가 되었다. 그렇다면 Web 2.0의 Social과 지금 열광하는 Social이 같은 것일까? 직관은 Web 2.0의 Soical Networks와 현재의 Social Networks는 질적인 차이가 존재한다고 느낀다. 그것은 무엇일까? Social과 Web의 관계에 대해 의문을 던진 글은 다음 Wired 기사이다. Web 2.0의 실체는 Social Web이라고 보는 앞의 글과 달리, 이 글은 Web은 끝났다고 본다. 웹은 죽었는데 인터넷은 만수무강할 것이라니... The Web Is Dead. Long Live the Internet (2010. 8. 17) Wired 2010년 9월호 표지 글이 "The Web is dead"라는 도

영세한 국내 게임 회사들.. 환상은 없다.

(가볍게 facebook에 올리려고 했는데 Status Update는 420글자밖에 안되어서 블로그를 통해 올립니다.) 오늘 저녁, 10년 넘게 게임 회사를 운영하고 있는 후배를 만나고 왔다. 영세한 환경에 여전히 혼자서 핵심 코딩을 다한다. 4,5명 규모의 작은 영세 업체에서 우수한 인력을 확보하기란 너무 어렵기 때문에 어쩔 수 없다는 것은 묻지 않아도 보인다. 혼자서 10여년 동안 하지 않고 다른 사람들과 같이 했으면 스스로도 더 많은 일을 해볼 수 있었을 텐데 아쉽다. 그래도 이 나라에서 Online Game Software 만들어 서비스하면서 10여년을 버텼다는 것만으로도 경외로운 일이다. 서버쪽 기술을 혼자서 익혀와서 체계적이지 못하고 큰 아키텍처와 작은 아키텍처 경계가 섞인다. 티맥스 같은 회사에서 1년만 일했으면 그런 기술들을 스폰지처럼 빨아들여 훨씬 더 대단한 것도 도전할 수 있었을텐데. 여전히 새로운 기술들을 받아들이면서 또 상당한 양의 개발도 병행하랴 수면 부족 속에 살고 있다. 기술들을 받아들이는 것도 혼자서 공부하는 것보다는 여러 사람들이 분석하고 공유하고 회의하면 깊이도 깊어지고 다면적으로 바라볼 수 있을텐데. 게임 쪽을 한번 살펴보려고 하는데 현실이 너무 안스럽다. NCSoft 같은 몇몇 성공한 기업 외에 다른 게임 업체들은 얼마나 척박한가. NCSoft 역시 그러한 과거를 뚫고 성공한 기업이지. 후배 또한 성공의 기회가 온다면 놓치지 말기를. 나는 게임을 한다기보다는 Technology를 활용한 새로운 게임 장르를 하고 싶다. 게임 자체는 충분한 동기 부여가 되지 않는다. 게임 오타쿠들과 소통하기는 조금 두렵다.

창의적인 Smart Software Engineer를 위하여

Google을 포함해서 Facebook, Twitter와 같은 미국의 신흥 기술 기업들의 가장 큰 특징은 Smart People 을 확보하고 이들로부터 혁신을 이끌어내는 데에 회사의 운명을 걸고 있다는 점이다. 이들이 절실하게 인재들을 관리하고 이들이 최상의 Output을 낼 수 있는 환경을 만들어가는 것을 보고 있으면, 서울대 전산학과가 매년 정원 미달이라는 우리 나라 현실과 겹쳐진다. 그나마, 우리 나라 기업 문화는 Smart People들의 능력을 이끌어내어 결과를 만들어내기보다는 누구나 고만고만한 결과를 만들 수밖에 없는 관리 방식으로 인해 Smart People 무용론에 젖어있었다. 창의적인 인재들은 외국계 기업으로 나가거나, 창업했다가 한국의 기업 현실 속에 파산하고 현실과 타협하거나, 학교로 돌아가거나, 아니면 그저 혼자 잘난 체 하는 이로 별다른 역할 없이 고립되어 살아간다. 논리적인 비약이긴 하지만, 서울대 무용론 같은 것도 결국 이러한 현실, 즉 탁월한 인재가 엄청난 혁신을 가져오는 것이 불가능한 현실과 맞물려 있는 게 아닌가 싶다. Google, Facebook, Twitter 같은 회사들은 탁월한 인재를 통해 끊임없는 기술 혁신을 주도하는 데에 회사의 운명을 거는 회사들이다. 마케팅적인 요소, 서비스나 제품 관리 요소 등 다양한 이슈들을 함께 갖고 있지만, 그것들이 회사의 운명을 좌우하는 핵심 요소들은 아니다. 왜 이러한 회사들을 우리는 만들지 못할까. 개인적으로 하루 아침에 이러한 환경을 만들 수는 없다는 답을 가지고 있다. 앞에서 언급한 데로 Smart People들이 Smart한 Output에 끊임없이 도전해야 하는데, Smart People들을 많이 보유한 회사에서 이러한 목표를 가지고 drive해주지 않으면 Smart People들은 자극을 받지 못하고 평범해지거나, 나홀로 헛똑똑이가 되고 만다. 나름 Smart하다고 생각하는 사람들이 자신보다 훨씬 Smart하고 훨씬 시간 관리에 철저하며, 훨씬 높은 Quality

Obama's decision making process in crisis

(원문 출처 :  http://www.usnews.com/articles/news/obama/2009/10/27/exclusive-interview-obama-never-100-percent-certain.html ) 작년에 다른 블로그에 쓴 글인데 옮겨왔습니다. 위기 상황의 의사 결정 방법과 일상에서 스트레스를 피하는 방법에 대한 오바마 대통령의 인터뷰 내용입니다. 오바마 대통령은 한번 내린 의사 결정이 완전 무결하리라고 믿지 않고 합리적 행동으로 이를 보완합니다. 과감한 결정, 실행, 피드백을 통해 뒤늦지 않게 보완. 어떤 지위에 있든 중요한 결정을 내릴 때가 있습니다. 중요한 결정은 여러 사람의 삶에 중대한 결과를 가져오게 됩니다. 어떻게 결정을 해야 할까요? You have faced an extraordinary array of urgent problems. Is decision making under crisis conditions different from decision making in normal times? 평상시의 의사 결정과 위기 상황의 의사 결정에 다른 점이 있나요? The things that for me work day to day become that much more important in a crisis: being able to pull together the best people and have them work as a team; insisting on analytical rigor in evaluating the nature of the problem; making sure that dissenting voices are heard and that a range of options are explored; being willing to make a decision after having looked at all the options, and then insisting on good execution as we

[Java] Concurrent Processing : Actor Model

actor model에 대한 개념을 정리하려 했는데 간결하지 못하고 장황해져 버렸다. actor model을 둘러싼 이슈에 대한 공유 정도로 읽어주기 바란다. Concurrent Computing multi-core CPU가 개인 PC에 일반화되고, 서버 환경에서도 8 CPU 서버는 흔하게 볼 수 있는 게 오늘날의 컴퓨팅 환경이다. 운영체제에서 다중 쓰레드를 지원하는 것은 기본인 데다가, 서버 소프트웨어를 운영하다 보면 발생 확률이 매우 낮을 것 같은 동시성 처리 관련 버그가 몇 달이 못가 심각한 운영 장애의 원인으로 발견되기도 한다. 또, 클라우드 환경에서는 수천대의 컴퓨터를 연결하여 연산을 동시에 분산 처리하여 빠른 결과를 가져오는 것이 일반화된 기술이 되고 있다. 단일 노드, 단일 CPU에서는 발생하기 어렵던 문제들이 서버쪽 소프트웨어에서는 매우 critical한 이슈로 매일 접하게 되었다. 흔히 concurrent programming 이라고 부르는 비동기적이고 동시적인 연산 처리 기법이 이미 보편화되어 있다. concurrent programming을 위한 여러 가지 모델 중에서 OS 에서 제공하는 thread와 locking을 사용하여 직접 구현하는 방법 외에 수학적 기반에 출발한 처리 모델들이 몇 가지 있다. 많이 사용되는 concurrency 고려 모델에는 여기 소개할 actor model 외에 단방향 그래프 방식으로 워크플로우 구현에 많이 사용되어온 petri-net, WS-BPEL 표준의 수학적 근거로 알려진 pi-calculus(π-calculus)가 있다. 아주 간단하게 설명하자면 Petri Net은 place와 transition으로 구성된 그래프에 token의 이동을 통해 흐름을 제어하는 모델로 동시에 여러 개의 token이 존재할 수 있어 동시성을 표현한다. Petri Net은 token이 현재의 실행 위치를 나타내므로 제어 흐름을 직관적으로 표현하는 장점이 있지만, 데이터 흐름은 고려할 수 없는