MSP 3기 지원 - 나만의 공식 만들기
MSP(Microsoft Student Partner) 2009/05/10 23:04 |저는 나만의 공식을 만들어 보기 위해 크게 다음과 같은 부분으로 나누어 진행하도록 하겠습니다.
1. 나만의 개인적인 성향에 대한 분석
2. 내가 관심 있어하고 잘하고 싶은 분야에 대한 분석
이렇게 두가지 파트로 나누어서 저 자신을 분석해 봄으로서 좀 더 다양한 저의 모습과 제가 가져왔던 많은 생각들과 관심, 그리고 열정들을 보여드리고 싶습니다.
그럼 우선 저만의 개인적인 성향에 대해서 분석해 보겠습니다.
Part 1. 나만의 개인적인 성향 분석
먼저 저의 성향을 한눈에 파악할 수 있도록 관련된 주제별로 키워드 분석을 시도해 보았습니다.
□ 내가 좋아하는 것과 관심있는 단어들
1. 내가 몰랐던 분야에 대한 새로운 발견과 경험
이 세상에는 제가 모르는 분야에 수많은 지식과 정보들이 넘처나고 있습니다. 새로운 분야에 대한 지식은 항상 처음에는 어렵게 느껴지거나 부담스러울 수 있습니다. 게다가 처음 접했을 때에 관심을 불러일으키지 못하면 다시 그 정보를 받아들이기가 쉽지 않은 것 또한 사실입니다. 하지만 새로운 분야에 대해 조금씩 눈을 떠가고 관심을 가지게 되면서 더 큰 안목을 가지고 생각할 수 있는 것 같습니다. 새로운 분야에 대한 지식을 하나씩 알게 되는것, 이것이 저에게 있어서 새로운 성장동력이 된다고 생각합니다. 또한 지금 같은 20대를 살아가는면서 가장 중요하다고 생각하는 것 중의 하나가 바로 다양한 분야에 대한 경험이라고 생각합니다. 내가 해보지 않은 일들을 해보고, 가보지 않았던 곳에 가서 많이 보고 느끼며, 많이 부딪혀 보는 것.. 이러한 것들 하나 하나가 인생에 있어서 소중한 자산이 되지 않을까 생각해봅니다.
2. 모르는 사람들과 만나서 친해지기
우리는 살면서 얼마나 많은 사람들과 만나서 만남을 가지고 인맥을 키워 갈까요? 처음에는 모르는 사람들과 만나는 것은 어색하고 낮선 환경에 부딪히는 것과 같을 수 있습니다. 하지만 여러 번 만남을 통해서 나와 다른 사람들과 만나 다양한 대화를 통해서 서로를 알아가고 이를 통해 많은 사람들과의 어울리게 되고 소중한 관계가 형성된다면 그 만큼 값진 성과가 없을 것입니다.
많은 사람과의 사귐을 통한 소통을 통해 나와 다른 사람들과의 생각을 좀 더 잘 파악할 수 있고 이는 자기 자신의 커뮤니케이션 능력을 높이는 효과를 기대할수 있으며 무엇보다도 많은 사람과의 만남을 통해 일상 생활 속에서 더욱 더 활기차고 열정적인 에너지를 얻을 수 있다고 생각합니다. 물론 다양한 정보를 공유할수 있다는 점은 부수적으로 따라오는 것이라 할수 있을 것입니다.
이렇게 생각하면 처음에 잠깐의 어색함은 가볍게 넘어갈 수 있지 않을까요? 많은 친구들을 사귀고 싶습니다 ^^
3. 간결하지만 명확하면서도 청중을 흡입시키는 프리젠테이션 능력 - 스티븐 잡스의 프리젠테이션
스티븐 잡스의 프리젠테이션이라고 하면 보통 어떤 이미지가 떠오르시나요?? 많은 사람들이 그가 새로 출시된 자사의 제품을 프리젠테이션을 하는 모습을 지켜보자면 딱딱하고 지루한 일방적인 프레젠테이션이 아니라 최대한 재미있고 간략하게 그리고 더 큰 설득력을 지니고 있다고들 말합니다. 마치 TV 토크쇼를 하고 있는 것 같다는 생각이 들 정도이니까요~ 그래서 청중들은 더욱 열광하며 그의 프레젠테이션 속으로 빠져들게 됩니다.
제가 스티븐 잡스의 프리젠테이션을 보고 가장 인상 깊었던 것은 Apple의 MacBook Air 가 처음 시장에 론칭 되었을 때 였습니다. 그 중에서도 가장 인상적인 장면은 스티븐 잡스가 프리젠테이션을 시작하면서 MacBook Air 가 세상에서 가장 얇은 노트북임을 강조하기 위해 실제 서류봉투에서 꺼네면서 청중들의 박수를 이끌어 내는 장면이었습니다. 저에게는 좀처럼 잊혀지지 않을 선선한 장면이었습니다.
스티븐 잡스는 프리젠테이션을 할때 몇 가지 원칙을 정해서 발표를 한다고 합니다. 그 중에서 저에게 가장 와닿았던 것들은 다음과 같은 부분입니다.
먼저 스티브잡스는 프레젠테이션을 할때 자신이 발표하는 제품에 대한 자신의 열정과 자신감을 숨김없이 드러내곤 합니다. 'incredible(놀라운)','extraordinary(비범한)', 'amazing(굉장한)', 'cool(멋진)' 같은 단어를 연발합니다. 발표자가 자기 제품에 열광하지 않고서 청중이 제품의 팬(fan)이 되길 기대해선 안 된다는 원칙인 셈이죠~ 이걸 보면서 저도 나중에 제가 만든 어플리케이션을 프리젠테이션할 때 이렇게 자부심을 가지고 말할 수 있을까 라고 생각해 보곤 합니다.
이밖에도 잡스는 아이튠스(iTunes)를 활용한 디지털 영화대여 서비스를 소개할 때 "영화는 수천 번 듣는 음악과 달리 몇 번쯤 보고 말기 때문에 렌트(rent)해서 보는 게 최고다. 저렴한 데다 컴퓨터 저장 용량도 절약할 수 있다"고 말합니다. 보통 청중들은 끊임없이 "저게 나한테 무슨 쓸모가 있지?"라고 자문하기 때문에 어떤 상품이든 사용자가 받는 혜택을 명확히 언급해야 한다고 합니다. 소프트웨어의 개발 역시 마찬가지라고 생각합니다. 궁극적으로 개발될 어플리케이션을 사용하는 사용자의 입장에서 생각하고 요구 사항을 정확히 이해하여 개발된 어플리케이션의 필요성을 호소력있게 어필하는 것이 매우 중요하다고 생각합니다.
물론 그의 이런 스페셜 프리젠테이션의 가장 큰 성공 요인은 '연습 또 연습'이라는 가장 단순한 원칙을 지켜왔기 때문일 것입니다. 이러한 그의 다이나믹한 프리젠테이션은 매우 인상깊게 제 머리속에 자리잡아 있습니다.
4. 자유롭게 생각하는 브래인스토밍(Brain Storming)을 통해 아이디어를 생각해내기
보통 브래인스토밍이라하면 잠재의식속(ID)에 있는 모든 생각들을 폭풍처럼 끄집어 내는 과정 정도로 말할 수 있겠는데요
보통 브래인스토밍을 할때에 다음과 원칙이 있습니다.
자유롭게 하라, 구체적이고 작은 것부터 시도하라, 브래인스토밍 과정 중 비판금지, 아이디어를 발전시켜라
이러한 원칙들은 실재 브래인스토밍을 할 때 중요한 요소들인데 브래인스토밍의 과정에서 절대적으로 중요한것은 양적인 측면이지 절대 질적인 것이 우선시 되어서는 안된다고 생각합니다. 최대한 자유롭고 구체적인 생각들이 많이 쏳아져 나와야 하며 상호간의 브래인스토밍 도중에 비판적인 생각이 개입될 경우 새로운 생각을 끄집어 내기가 점점 어려워 지기 때문입니다. 어디까지나 브래인스토밍과정 중에 나온 아이디어의 적절성에 대한 판단은 나중으로 미뤄두어도 늦지 않으며 선정된 아이디어에 대한 정리 및 구체화 과정을 통해 최종적인 결과물을 도출함으로서 마무리 하게 됩니다.
사실 저에게 있어 새롭고 기발한 아이디어를 생각하는 것은 쉽지 않은 일이었습니다. 하지만 고정관념에서 벗어나 조금 더 새롭고 참신한 생각을 시도해보고 아픈 머리를 부여잡고 나서 생각에 생각을 거듭하다 돌파구를 찾았을 때 정말로 짜릿하고 즐거운 기분이 들었습니다.
□ 내가 싫어하고 개선하고 싶은 것들
1. 단편적인 지식에 대한 반복적인 학습
지식을 습득하는데 있어서 기본적인 암기는 무시할 수 없는 부분이라 생각합니다. 하지만 그 지식에 대한 진정한 의미를 알지 못하고 글자 그대로의 의미만을 맹목적으로 습득하는 것을 통해 진짜 그 지식을 온전히 알게 되었다고는 할 수 없다고 생각합니다.
예를 들어 "AJAX란 무엇인가?" 라는 질문에 답변을 해야 한다면 가능하면 "Asynchronous Javascript and XML의 약자입니다." 라는 단편적인 답변보다는 "AJAX는 인터랙티브한 웹 어플리케이션을 만들기위한 아키텍처 스타일로서 클라이언트 단에서의 입력처리는 javascript로 처리하고 서버와의 송수신을 백그라운드로 처리합니다. 이 때 클라이언트에 처리한 데이터를 반환할 때 주로 XML 형식으로 반환하는 것을 말하며(JSON과 같은 타입 등으로 반환될 수도 있습니다) 비동기적으로 데이터만을 가저오기때문에 전체 페이지를 다시 리로딩 하지 않아 일반적인 방식의 에플리케이션보다 사용자의 입력에 대한 반응성이 좋은 편입니다. 하지만 AJAX 방식의 남용은 서버에 과부하를 줄 수 있습니다. " 와 같은 답변을 할 수 있었으면 합니다.
2. 운이 좋아서 간신히 무언가를 성공했을 때
실력과 운은 어떤 관계일까요? 보통 실력과 운을 별개의 것으로 생각할 수도 있겠지만 사실은 실력과 운은 어느 정도 일정부분 관계가 있다고 말하고 싶습니다. 물론 운이 너무 좋아서 로또 1등 당첨과 같은 엄청난 행운을 거머쥐었다고 한다면 그것도 실력과 관계가 있느냐고 반박할 수 있을 것입니다. 게다가 그렇게 당첨이 되신 분들 중에 여러 번 중복해서 당첨되시는 경우도 종종 뉴스에 나오곤 합니다. 하지만 그것이 진정한 운을 거머쥔 것인지, 계속해서 그런 행운이 지속될 것인지에 대해서는 아무도 장담할 수 없지 않을까 생각해 봅니다. 하지만 실력은 다르다고 생각합니다. 실력은 정말로 그 사람의 능력을 보여주는 것이고 지금까지의 노력과 열정이 모이고 모여서 만들어진 것이니까요~ 적어도 실력을 갖춘 사람이 더 좋은 기회와 행운을 거머 쥘 가능성이 높다고 말하고 싶습니다. 이렇게 생각하면 저 역시 온전히 실력을 갖추고 뭔가를 해내고 싶은데 모든 면에서 실력을 갖추는 것은 참 쉽지 않은 것 같습니다~^^
□ 내가 생각 하는 나만의 장점과 단점
1. 흥미 있어 하는 분야 에 대한 호기심과 열정, 그리고 오기
저는 한번 관심을 가지게 된 무언가가 생기게 되면 좀 더 잘하고 싶고 더 많이 알고 싶어하는 편입니다. 관심을 가지게 된 무언가라는게 꼭 전공분야에 대한 공부 이외에도 제가 평소 취미로 즐기는 것들, 더 알고 싶은 것 등 과 같이 비교적 넓은 분야의 정보들까지 포괄적으로 포함하고 있다고 생각하시면 됩니다. 정말 내가 좋아하게 된 일, 관심 있어하는 무언가를 할 때 만큼은 평소보다도 강한 집중력을 발휘할 수 있는 것 같습니다. 하지만 내가 정말 하고 싶은 일을 하면서 실력이 부족하다고 느끼거나 남들보다 뒤처지는 것 같다고 생각될 때엔 이상하리 만큼 오기가 생겨서 더 열심히 하려고 노력하는 편입니다. 이렇게 무언가 내가 바라는 무언가를 하기 위해서 해야할 일들을 알고 그것을 이루게 위해서 노력하며 이에 따라 책임감을 갖지는 것이 저의 장점이라고 생각합니다.
반면에 이러한 성향이 항상 좋은 것만은 아니라서 처음부터 흥미없다고 생각되는 분야에 대해서 억지로(?) 무언가를 해야만 할때는 참 집중력을 가지고 꾸준히 하는데 힘들어 하는 편입니다. 진부한 표현이긴하지만 피할 수 없다면 즐겨라~ 는 말처럼 최대한 내가 하는 일을 즐기려고 노력하는 자세가 이럴 때일수록 중요하지 않나 생각해 봅니다.
2. 창의적인 상상력, 남들과 다르게 생각할 수 있는 발상의 전환
사실 제가 생각해봤을 때 저에게 가장 부족한 점이 바로 이 부분이 아닌가 생각합니다. 앞서 브래인스토밍 쪽에서도 언급했지만 뭔가 다른 것, 창조적인 생각을 하는 것은 때론 제 머리에 엄청난(?) 고통을 안겨주기도 했습니다. 실제로 뒤에서도 소개할 예정이지만 웹 개발 관련 프로젝트를 진행하면서 관련 주제를 선정하고 기존의 사이트와 좀 더 차별화 되는 점들을 생각해 내기 위해서 팀원들과 많은 시간동안 의견을 주고받으며 생각을 거듭하곤 했습니다. 그래도 아이디어가 떠오르지 않아서 식사를 하고 난 후에도 근처 아파트 단지를 몇 번씩 돌면서 잠시 여유도 가지고 생각들을 정리했던 기억이 납니다. 지금 생각해 보면 웃지 못할 추억 중에 하나로 남아 있는데 그 때는 그러한 생각을 해본 경험이 부족하다 보니 생각보다 오랜 시간이 걸렸고 새삼스럽지만 그때 저의 부족함을 깨달을 수 있었습니다.
미국에서는 흔히 "상자 밖에서 생각하라(Think out of the box)" 는 표현이 즐겨 사용된다고 합니다. 이 말은 주어진 환경과 조건이 강요하는 생각의 흐름을 과감하게 탈피해서 전혀 새로운 각도로 생각을 시도해보라는 의미인데요~ 이렇듯 기존의 고정관념에 탈피해서 창의적인 상상력을 발휘 하기 위해서는 요즘 유행하고 있는 닌텐도 DS 두뇌트레이닝을 이용해 학습능력을 향상시키려는 것처럼 창의력 사고 트레이닝이 필요하지 않을까요~!??^^
□ 나만의 즐거운 취미 생활들
개인적으로 가능하면 많은 취미를 가지고 싶고 좀 더 다양한 자극(?)에 노출되기 위해 노력하는 편입니다. 무엇이든지 자기가 좋아하고 즐길 수 있는 것들이 하나, 둘씩 생길수록 좀 더 풍요롭고 즐겁고 또 건강한 생활을 할 수 있지 않을까 생각해봅니다.
1. 다양한 음악 감상, 공연 문화 즐기기
개인적으로 공연 문화를 좋아하는 편입니다. 잘 알려진 유명 가수들의 콘서트나 소규모 밴드 공연, 클럽 파티 까지 다양한 장르의 음악을 들을 수 있는 것 만으로도 저에게는 커다란 즐거움으로 다가옵니다. 특히 힙합 공연 같은 경우엔 많은 사람들과 함께 랩에 맞춰 좀 더 적극적으로 공연에 참여할 수 있기 때문에 좋아하는 편입니다. 또한 통기타 반주 같은 어쿠스틱한 음악등을 좋아하게 되었고 재즈나 하우스와 같은 장르의 음악에도 조금씩 관심이 가고 있습니다. 다음은 제가 즐겨 듣고 유투브에서 아마추어 밴드로 활동하며 많은 구독자를 보유하며 활동 중인 Boyce Avenue 의 기타 연주를 살짝 들려드리도록 하겠습니다.
비록 오랫동안 참여하지는 못했지만 대학교 1학년때는 학교 중앙 동아리의 통기타 동아리에도 가입해서 공연 준비도 해보고 실제 공연에도 참여하면서 즐겁게 학교생활을 했던 기억이 있습니다. 아쉬운 것은 그때 기타를 열심히 배워놓지 않아서 지금 와서는 조금 후회중입니다.^^ 뭐든지 뒤늦은 후회가 제일 좋지 않다고 생각하는데 기회가 된다면 다시 한번 기타를 배워보고 싶네요~
2. 일상의 휴식, 자전거 타기
정말 쉽고 간단하지만 평소 즐기는 취미 중 하나 입니다. 근처에 올림픽 공원에서 자전거를 타면서 나만의 시간을 가지는 편입이다. 운동과 더불어 기분 전환도 하는데 도움이 됩니다. 가끔씩 손잡이를 놓고 두 다리에만 의지한 채로 자전거를 타기도 하는데 약간 위험하긴 하지만 생각보다 재미있고 자유로움을 느낄수 있습니다. 하지만 자전거 타는데 익숙해 지기 전까지는 절대!절대! 삼가하시기를 바랍니다ㅎ 또한 앞으로는 대학생 지역 자전거모임에도 적극 참여해 볼까합니다.
3. 축구, 야구 등의 스포츠 활동
축구, 특히 유럽 축구 리그 경기를 보는것을 즐기는 편인데 전 경기는 못보더라도 관심가는 경기는 하이라이트 정도라도 챙겨보는 편입니다. 개인적으로 선호하는 스타일은 수비보다는 공격적인 축구 스타일을 선호하며 빠른 공격 전개와 정확한 패스를 바탕으로 경기를 주도해 나가는 경기를 좋아합니다. 따라서 이러한 저의 성향을 가장 잘 반영하는 팀이라고 생각되는 스페인 프리메라리가의 FC 바로셀로나와 잉글랜드 프리미어리그의 아스날 팀을 좋아합니다. 개인적인 소망이라면 꼭 스페인과 잉글랜드로 날아가서 두 팀의 경기를 직접 관전해 보고 싶습니다.
야구는 사실 작년 베이징 올림픽에서 국가대표팀의 올림픽 금메달 이후 많은 관심을 가지게 되었는데 올해 3월 WBC를 통해 더욱 관심있게 경기 자체를 즐길 수 있게 되었습니다. 가끔 시간을 내서 잠실운동장에서 프로야구 경기를 관전하면서 야구의 재미에 푹 빠져 있습니다. 또한 가끔씩 지나 가다 종종 배팅 연습장에 들러서 방망이를 휘드르며 스트레스를 풀기도 하는데 부족한 실력이지만 공을 처냈을 때의 기분은 정말 최고인 것 같습니다~ 마지막으로 우리나라에도 빠른 시일내로 돔구장이 생겨서 많은 사람들이 더 좋은 환경에서 경기를 즐길 수 있게 되었으면 좋겠습니다.
그 밖에 수영이나 스키같은 좀 더 활동적인 활동들도 좋아하는 편인데 문제는 꾸준지 하지 못한다는 점이 아닐까 싶습니다. 시간이 되는 대로 더 많은 활동을 통해 실력도 늘리고 건강도 챙길 수 있도록 할 생각입니다.
앞으로도 위에서 소개한 취미 활동들 이외에도 더 많은 활동(Activity)에 참여해서 더욱 즐거운 경험들을 해보고 싶습니다.
□ 내 영혼의 비타민 - 독서
바쁜 일상을 살아가고 있는 현대인에게 지적인 지식과 감성적인 생각을 얻는데 독서만큼 쉽고 간단한 방법도 없다고 생각합니다. 저같은 경우에는 개인적으로 전공이 컴퓨터 공학이다보니 프로그래밍 관련된 레퍼런스 북이나 IT관련 책등을 주로 보기는 하지만 가능하면 시간을 내서 다양한 분야의 잡지나 소설, 자서전 등 좀 더 폭넓은 분야의 책들을 읽으려고 노력하고 있습니다.
여기서는 제가 그동안 읽었던 책들 중에 여러번 읽고 인상깊었던 책 몇 권을 뽑아 소개해 볼까합니다.
1. 나는 프로그래머이다.
‘나는 프로그래머다’는 IT의 다양한 분야, SI, 전산, 데이터베이스, 웹, 게임, 임베디드 등의 각 분야에서 활동 중인 전문가들의 경험적 이야기를 통해 프로그래머로서의 삶과 비전, 열정, 자부심을 느낄 수 있었습니다.
뭐랄까 비록 학생의 입장에서 보긴 했었지만 그동안 막연하게만 생각해왔던 IT분야의 직업에 대해서 이 분야의 업무를 하면서는 이렇게 살아가겠구나 하는 것을 간접적으로나마 알 수 있었습니다. 학교에서는 듣지 못했던 살아있는 현장에서의 이야기를 들을 수 있었다고 생각합니다. 또한 이 책을 통해 제가 나아가야 할 방향성에 대해서도 생각해 봤고 그래서 그런지 내가 정말 어떤 분야의 일을 하면 괜찬을까 하는 생각도 가져봤던 것 같습니다. 무엇보다도 다시 한번 열정을 되새겨 저 자신에게 좋은 동기 부여가 될만한 책이 아니었나 생각이됩니다.
2. 임백준의 소프트웨어 산책
뉴욕의 월스트리트의 금융회사에서 현업 개발자로 일하고 있는 저자의 특별해 보이는 이력도 관심이 갔지만 책에서 다루는 내용들도 정말 평소에 들어봤지만 잘 알지못해서 더욱 관심있었던 주제들로 채워저 있어서 정말 즐겁게 읽은 기억이 있습니다.
이 책은 크게 두 부분으로 이루어져있습니다. 이론적인 내용과 소설부분으로 나뉘는데 이론부분은 객체지향, 디자인 패턴, 리팩토링, 소프트웨어공학, XML. 이렇게 5가지 분야의 간단한 개념과, 역사, 인물, 그리고 저자의 관련 경험을 소개하는 방식으로 구성되어 있으며 마지막장에는 프로그래밍에 대한 열정과 현실적인 어려움 사이에서 고민하는 어느 프로그래머에 대한 이야기를 다루고 있습니다.
오늘날의 프로그래밍 방법론의 대세로 자리잡은 객체지향적인 프로그래밍,그리고 이러한 객체지향적인 프로그래밍 방식에 의해 좀 더 효율적이고 명확한 소프트웨어 설계를 뒷받침하는 디자인 패턴에 대한 소개, 특히 관심있게 읽었던 코드의 논리적인 알고리즘을 유지하면서 버그의 가능성을 줄여 유지보수성을 높여주는 리팩토링 이야기(여기에 대한 자세한 내용은 리팩토링 폴더에 '매소드 추출'이라는 포스팅으로 따로 업데이트 하였습니다.)와 소프트웨어 공학 파트에서는 소프트웨어 개발 방법론이라는 주제를 다루면서 개발자로서가 아닌 프로젝트 관리자로서의 모습에 대해서도 알수 있었고 마지막으로 서로 다른 시스템 사이의 데이터 전송의 표준 형식으로 자리잡은 XML에 관련된 이야기까지 어느 것 하나 흥미롭지 않은 주제가 없었던 것 같습니다.
이 책을 읽고나서 가장 좋았다고 말하고 싶은 부분은 프로그래밍 레퍼런스 북에서는 좀처럼 맛볼수 없었던 감각을 느낄수 있었다라고 말하고 싶습니다. 프로그래밍이라는 것이 단순히 프로그래밍 랭귀지의 문법만을 배우고 이야기하는 코딩으로서의 프로그래밍이 아니라 프로그래밍에도 철학이라는 것이 담겨져 있다는 것을 느낄수 있었고 궁극적으로는 이 책을 통해 좀 더 생각하는 프로그래밍을 하고 싶다는 생각을 해봤습니다.
덕분에 이 책을 일고 나서 교보문고에서 임백준님의 다른 책을 고르게 되었는데 바로 최근 읽기 시작한 "프로그래밍은 상상(想像)이다." 인데요~ 간단히 소개해 보자면 다름과 같습니다.
새로운 시스템을 설계하는 작업이든, 정교한 알고리즘을 구현하는 코딩 작업이든, 속을 끓이는 디버깅 작업이든, 프로그래머는 언제나 상상한다. 그들이 치밀한 논리력이나 진득한 끈기를 발휘하는 시간은 사실 순간적이다. 적어도 손가락이 쉬고 있는 시간에 프로그래머들은 다른 무엇보다도 상상을 한다. 그래서 프로그래머란 상상을 하는 사람들이다.
말하자면 프로그래밍은 상상(想像)이다.
3. 마쉬멜로 이야기
세상에서 가장 아름다운 유혹은 ‘성공’이다
정말 많은 사람들이 읽었고 저 역시 1편과 2편 모두 읽었을 만큼 너무나도 유명한 책이라 다소 식상하게까지 느껴질 수 있지만 참 많이도 반복해서 봤던 책이었고 짧지만 강렬한 메시지를 담고 있는 것 같습니다.
마시멜로 이야기는 성공이 즐거움과 행복의 대가이기 위해서는 ‘성공을 꿈꾸기보다는 성공을 향해 깨어나라’는 교훈을 담고 있습니다. 오래된 꿈은 자기합리화와 포기로 이어지고, 이는 ‘현실만족’이라는 달콤한 유혹에 안주하도록 만들게 됩니다. 따라서 누구나 성공을 꿈꾸는 것처럼 보이지만, 사실은 적당한 ‘만족’과 ‘타협’이 가져다주는 달콤한 유혹에 빠져 깊은 잠을 자고 있을 뿐이라는 것입니다.
이 책을 통해 저 역시 하루하루가 항상 똑같다고만 느끼진 않았었는지, 현재 이 시간을 살아감에 있어 하루하루의 순간적인 만족감에만 젖어 있지 않았는지 되돌아 봤고 특별하고 즐거운 ‘미래’를 위해서 어떤 노력을 해야 할지 생각해 봤습니다.
“이보게, 찰리. 유혹에 빠지는 사람들은 성공에 눈이 먼 사람들일세. 성공에 눈 뜬 사람들만이 유혹을 즐겁게 극복할 수 있다네!”
그러면 여기까지 첫번째 파트를 마무리하고 두번째 파트로 넘어가 보도록 하겠습니다.
Part 2. 내가 관심 있어하고 잘 하고 싶은 분야 분석
□ 나만의 프로그래밍 이력서
사실 저는 어렸을 적부터 컴퓨터와 그렇게 친숙한 편은 아니었습니다. 처음으로 컴퓨터를 만젔던게 초등학교 4학년때 방과후 수업으로 MS-DOS를 만져봤을 때였으니까요. 지금 추세에 비추어 본다면 그렇게 빠른 편도 아니었죠~ 중ㆍ고등학교 시절엔 정보관련 교과목 시간에 비주얼베이직을 배웠던 게 기억나네요. 저 역시 대부분의 학생들과 마찬가지로 대학에 진학하면서 본격적으로 프로그래밍의 세계로 입문하게 되었습니다. 대학교 1학년때 배운 C 언어 프로그래밍을 통해 처음 프로그래밍을 접하였는데 비록 프로그래밍 실력은 좋지 못했지만 내가 직접 만든 짧은 프로그래밍 소스 코드로 무언가 동작한다는 그 자체만으로도 흥미를 느낄 수 있었던 것 같습니다.
이후에는 Java 언어를 배웠고 Java 언어가 대표적인 객체 지향 프로그래밍 언어다보니 이때부터 객체 지향적인 프로그래밍 방법론에 많이 익숙해 지게 되었습니다. 하지만 기존 C 언어에서 배웠던 절차지향적인 프로그래밍과는 사뭇 다른 방식때문에 이러한 방식에 적응하는데 꽤 시간이 걸리기도 했습니다. 그 밖에도 Standard-ML과 최근에 접해본 Scheme 언어와 같은 함수형 언어등도 배웠었는데 다소 쉽지 않고 익숙하지 않았다는 인상이 남아있습니다.
그러던 언젠가부터 갑자기 웹(WEB)에 관심을 가지게 되었습니다.
사실 저학년때엔 제 전공이 컴퓨터 공학이다 보니 주로 컴퓨터 싸이언스와 관련된 과목들을 주로 배우게 됩니다. 자료구조나 알고리즘, 운영체제와 같은 컴퓨터 공학의 이론적인 분야의 공부도 물론 중요하다고 생각했지만 좀 더 현실적으로 필요시되는 분야에 대한 공부를 해보고 싶었고 제가 만든 어플리케이션을 좀 더 많은 사람들이 사용할 수 있고 필요로 할 수 있는 좀 더 실용적인 프로그래밍을 해보고 싶었습니다. 그렇게 제가 생각해오던 것과 맞아떨어졌던 것이 바로 웹(WEB)이었습니다.
이제 인터넷은 우리 생활에 이제 없어서는 안될 정도로 너무나도 익숙해진 대상이 되었고 제가 느끼기에 실제 제가 살아가는 현 시점에서 웹개발을 통해서 얻어진 결과물을 많은 사람들이 사용할 수 있지 않을까 하는 생각을 가저봤습니다.
저 역시 대부분의 경우와 마찬가지로 포털사이트를 통해 처음 인터넷을 접했는데 시간과 공간의 제약을 뛰어 넘어 포털사이트를 통해 정보들을 얻고 더 넓은 세상과 소통하고 정보를 공유할 수 있다라는 것 자체가 저로 하여금 웹에 대한 호기심과 관심을 이끌어 낼 수 있었던 것 같습니다. 이러한 시작을 개기로 계속해서 웹프로그래밍쪽을 배워나가게 되었는데 이것이 지금까지 웹에 대한 지속적인 관심을 가지고 공부를 해온데 있어 가장 중요한 점이지 않았나 생각해 봅니다. 저에게 있어 특별한 재능이나 많은 노력보다도 가장 큰 추진력을 발휘하도록 해왔던 것은 바로 재미를 느낄 수 있었는가라고 생각합니다.
처음에는 기존 컴퓨터 공학과 커리큘럼에도 없는 웹프로그래밍 과목을 신청해서 수강해보기도 하였고 군복무 중에는 무작정 웹프로그래밍 관련 책(지금 생각해 보면 Perl 스크립트와 CGI를 기반으로한 다소 시대에 뒤처진 내용을 담고 있었던...)을 사서 읽기도 했습니다. 그런데 웹개발이라는 것이 배우면 배울수록 생각보다 참 많은 분야의 지식들이 총동원 되는 일종의 비빔밥을 만드는 것과 같아서 기존의 일반 어플리케이션을 개발하는데는 보통 많아아 한 두가지 종류의 언어로 개발이 이루어 지게 되지만 웹어플리케이션을 개발하기 위해서는 생각보다 많은 것들을 알아야만 한다는 것을 알게 되었습니다.
정말 초기의 웹이 단순한 HTML을 통해 정적인 데이터를 단순히 보여주는것에 지나지 않았지만 요새는 좀더 동적으로 다이나믹한 모습을 보여주기위해 사용자 상호작용에 좀 더 민감한 웹페이지를 만들 수 있게 해주는 DHTML의 개념으로 발전하게 되었습니다. 또한 HTML의 버전이 올라가면서 HTML은 이제 정말 구조적인 마크업으로서의 역할에만 충실하게 되고 대신 페이지의 스타일에 관련된 부분은 CSS라는 녀석의 기능으로 대체되게 됩니다. 게다가 클라이언트 단에서의 데이터의 처리를 위해 Javascript 와 같은 스크립트 언어의 역할도 무시하지 못할 정도로 강화되었고 기존에 단순 스크립트 기능만 하던 Javascript 역시 버전업을 거치면서 이제는 객체지향의 옷을 입고 거의 Java와 같은 객체지향적인 언어적 특징까지 지니게 되었습니다.
이뿐 아니라 W3C(The World Wide Web Consortium)에서 제창한 웹표준이란 개념이 강조되면서 마이크로스프트 사의 인터넷 익스플로러 이외에도 모질라 재단의 파이어 폭스나 애플 컴퓨터의 사파리, 오페라, 구글 크롬 등과 같은 웹브라우저간의 호환성 역시 고려해야 할 대상이 아닐 수 없습니다. 또한 서버 사이드에서 클라이언트의 요청을 처리하기 위해서는 서버전용 스크립트 언어인 ASP(Active Server Page)나 JSP(Java Server Page), PHP(Hypertext Preprocessor) 등을 통해 서버측에서 처리된 정보를 웹페이지 상에서 처리할 수 있도록 해야 합니다. 게다가 닷넷 기반의 동적인 웹어플리케이션을 지원하기 위해 만들어진 ASP.NET(물론 C#과 같은 기반 언어를 두고 있는 ASP.NET 자체를 별도의 언어로 보는 것은 다소 맞지 않지만...)까지 포함하면 서버측과 관련된 언어들 역시 참 많습니다.
그 밖에도 웹프로그래밍은 Oracle, MS-SQL, MySQL 등과 같은 데이터베이스 시스템과의 연동을 필수불가결한 요소로 취급합니다. 마지막으로 최근 몇년사이에 RIA(Rich Internet Application)와 같은 패이지의 새로고침 없이 마치 일반 응용프로그램을 사용하는 것처럼 한 페이지 내에서 동작하는 것등을 강조되고 있습니다. 예를 들어 Google의 사용자 맞춤 홈페이지로 알려진 iGoogle 과 같은 서비스는 마치 일반 응용 어플리케이션을 쓰는 것처럼 드래그 앤 드랍을 통해 자기가 원하는 컨텐츠를 다룰수 있도록 구현되어 있습니다.
이렇게 웹어플리케이션을 개발 하기 위해서는 생각보다 많은 것들을 고려해야만 하고 IT분야의 어떤 분야와 비교해도 기술의 발전속도 역시 비교적 빠르다는 것을 알게 되었습니다. 결과적으로는 이렇게 방대한 분야의 지식에 대해 혼자서 공부하는 것만으로는 한계를 느껴 좀 더 전문적인 지식을 배우고 싶었고 몇달간 전문교육센터에서 수강을 하며 프로젝트까지 경험해 봤던 것이 꽤 많은 도움이 되었다고 생각 합니다.
개인적으로 그때 처음 SQL(Structured Query Language)과 Oracle DBMS를 배웠는데 데이터베이스 쿼리를 통해 데이터를 정렬하고 조작하는 등이 작업등이 처음이었지만 꽤 신기하게 다가왔던 것으로 기억하고 있습니다. 특히 Oracle의 optimizer에 의해 최적화된 정도에 따라 쿼리의 성능 자체가 많이 달라진다는 점도 처음엔 매우 놀라운 사실로 받아들여졌습니다. 이러한 쿼리 자체의 성능에 따라 데이터베이스에서 데이터를 읽어오는 속도의 차이는 무시할 수 없는 요소였기 때문에 게시판과 같은 기본적인 구조의 어플리케이션을 만드는 것에서도 중요한 고려대상 중 하나였습니다.
또한 프레임워크 방식의 개발 방법에 대해서도 일정 부분 배울 수 있었는데 프레임워크란 말 그대로 뼈대, 즉 전체 코딩의 일정 부분이 구현된 원래 클래스를 상속받거나 인터페이스를 구현함으로서 코딩을 하는 것으로 여러 유망한 프레임워크들의 핵심은 사실 디자인 패턴입니다. Java쪽의 웹프래임워크인 Struts 와 Spring, JDBC 관련 프래임워크인 iBatis 등도 실제 코딩시 이용해 볼 수 있었습니다.
또한 실전 프로젝트를 하기 전까지 주로 게시판을 만드는 작업을 해봤는데 보통 조별로 게시판을 제작해서 일주일 단위로 개발하고 발표하는 과정을 통해 기본기를 다질 수 있었다고 생각합니다. 처음엔 다들 부족한 실력에 기본적인 CRUD 기능을 구현하는 것 조차 힘이 들었습니다. 하지만 조금씩 시간이 지나감에 따라 글제목 / 글쓴이 / 글내용에 대한 키워드 검색과 페이징 구현, Ajax 방식의 댓글 처리등을 통해 점차 성능과 디자인측면에서도 개선되어 갔습니다. 보통 코딩이 막힐 때엔 하나의 노트북 화면으로 두 명의 팀원이 머리를 맞대고 페어 프로그래밍(Pair Programming)을 진행하였는데 물론 처음부터 바로 디버깅 등의 작업이 한번에 해결되지는 않았지만 혼자서 하면서 막혔던 부분을 둘이서 조금씩 해결해 나가다보니 자연스럽게 자신감도 붙고 팀웍도 높일 수 있었습니다.
결과적으로 게시판을 만들어보면서 뷰(웹화면)와 컨트롤러, 모델(비지니스로직+퍼시스턴스 영역)의 MVC 모델 2 방식의 기본적인 흐름을 익힐 수 있었고 무엇보다도 다소 지루한 디버깅 작업 후의 잘 동작하는 게시판을 보면서 많은 즐거움을 느낄 수 있었습니다.
최종 프로젝트는 온라인 정육 판매 사이트라는 다소 특이한(?) 주제였는데 좀 더 설명해보자면 기존의 판매 담당 단체(?)에서 사이트를 통해 미리 도축이 되어있는 고기를 부위별로 판매하는 것이 기존의 일반적인 판매 방식인데 기존의 컨셉을 바꿔서 블로그형 판매 중재 사이트를 생각해 보았습니다. 사실 이부분에 대한 생각은 기존의 도토리 속 참나무(일명 '도참'이라고 알려진...http://www.docham.co.kr/ )라는 곳을 모델로 해서 좀 더 다른 생각을 통해서 차별화 해보려고 노력했습니다. 결론적으로 기존의 소비자와 판매자로 단편화된 기존 사이트의 역할 분담에서 나아가 소비자와 중간 대행하는 사이트, 거기에 생산자(농장)를 더한 3자의 구성을 통해 좀 더 기능적으로 강화된 블로그형 정육 판매 사이트, 프로젝트명 우니도니(WooniDoni)가 만들어 지게 되었습니다.
그러면 지금부터 우니도니(WooniDoni)에 대해서 좀 더 자세하게 소개해 보도록 하겠습니다.
먼저 프로젝트의 발단 및 개요는 다음과 같습니다.
작년 8월 정부의 미국산 쇠고기 수입 결정 발표 등으로 인한 먹거리에 대한 소비자의 불신감 증가와 축산 농가 역시 정확한 생산지 정보에 대한 소비자들의 불신으로 인한 판매량 부진으로 인해 문제점이 발생하였고 이에 따라 소비자와 생산자 모두에게 도움이 될 수 있는 사이트를 기획해 보게 되었습니다.
우니도니(WooniDoni)의 운영 방식과 역할 모델은 다음과 같습니다.
우니도니(WooniDoni)의 운영 방식은 기본적으로 소비자(고객)과 생산자(농장)간의 거래에 있어서의 중간자 적인 역할을 담당하게 됩니다. 또한 판매의 주체는 실질적으로 생산에 참여하는 농장 측에 있으며 특별한 유통과정을 거치지 않고 도축 과정을 거치고 나서 바로 직접 가정으로 공급하게 됩니다.
생산자(농장)측에서는....
1. 농장 블로그(Mini Farm)서비스를 통하여 소비자에게 자신의 농장에서 판매중이거나 판매 예정인 상품에 대해서 어디서 어떻게 사육되는지 사진을 통해 홍보할수 있으며 방명록게시판을 통해 소비자와의 소통을 강화하고 지도API를 이용한 농장에 대한 위치 정보를 제공합니다.
2. 사용자에게 생산된 상품에 대한 정보 제공은 물론 해당 상품에 대한 신뢰도 뿐 아니라 농장에 대한 인지도 역시 향상될 것으로 기대됨니다.
소비자(고객)측에서는....
1. 상품의 출처가 명확한 농장에 대한 정보를 해당 농장의 블로그를 통해 직접 제공받을 수 있기 때문에 신뢰감 있는 구매가 가능합니다.
2. 중간의 유통과정을 거치지 않고 산지로부터 직접 도축된 상품에 대해서만 판매가 되므로 어느 정도 가격에 대한 해택과 함께 지도API를 이용하여 내가 주문한 상품에 대한 배송 경로를 쉽게 파악할 수 있습니다.
※ 여기서 상품은 우리가 흔히 알고 있는 특정 부위 한부분을 지칭하는 것이 아니라 소, 돼지 하나 하나의 대상을 뜻하는 것으로 도축 예정인 소와 돼지 자체를 판매 상품으로 결정하였음. 이것은 사이트의 기획 단계에서 제기된 문제점(소비자가 안심하고 먹을 수 있는 먹거리 제공)에 대한 대안으로 판매되는 부위별 고기에 대한 정확한 출처(이 부분의 고기는 xx번 소, 돼지에서 도축되었음을 확인)를 제공하기 위해 고안된 개념임.
그러면 구현된 사이트에 대한 간단한 동영상을 통해 사이트 기능에 대해 한 번 살펴보도록 하겠습니다.
첫번째 동영상은 상품 구매에 관련된 동영상으로 실제 사용자가 로그인을 한 후에 상품판매 메뉴(Shop)에서 들러 해당 상품(우리집 송아지)의 특정부위(등심, 안심, 차돌박이...)를 선택 하고 배송 정보 확인 후 구매가 완료되며 배송처리 과정과 농장블로그를 방문하는 과정이 포함되어 있습니다.
두번째 동영상은 농장블로그 관리에 관련된 동영상으로 농장주 회원이 자신의 블로그 관리페이지를 통해 상품관리, 판매현황, 판매 통계 등을 처리 및 조회 하는 과정을 포함하고 있습니다.
우니도니(WooniDoni) 프로젝트는 기획 및 사이트 모델링에 2 ~ 3주 가량이 소요되었고 1달여간 구현 기간을 거처 마지막 발표 준비 기간 1주일 포함 총 2달간의 시간동안 진행되었습니다. 이렇게 프로젝트를 마무리 지으면서 전반적인 웹개발에 대한 기본적인 과정을 배울 수 있었고 부족하지만 이러한 성과를 거둘 수 있었음에 대해서 지난 프로젝트 팀원들께 감사의 인사를 전합니다.
□ 웹과 관련된 지금의 관심사, 앞으로 더 알고 싶은 분야
1. What is Web 2.0 ?
웹2.0은 2004년 IT관련 컨퍼런스에서 오리일리(O’Reilly) 사와 미디어라이브(MediaLive) 사 간의 아이디어를 협의하는 과정에서 그 개념이 처음 도출되었습니다. 웹2.0이란 말을 창안한 것으로 알려진 O’Reilly사의 데일 도허티(Dale Dougherty) 부사장은 2001년 닷컴 버블 붕괴 이후에도 생존하면서 지속적으로 성장한 구글, 아마존닷컴 등과 같은 성공한 인터넷 기업들이 제공하는 서비스가 과거의 닷컴기업들과 어떠한 차별화된 특징을 가지고 있는지 비교함으로서 웹2.0을 구체화시켰는데 웹 2.0이 기존의 웹과 충돌하는 것이 아니며, 웹은 지금보다 더 지속적으로 중요해질 것이며, 웹은 놀랄만한 규칙성을 갖고 등장하는 새로운 응용 프로그램과 사이트를 갖게 될 것이라고 언급하였습니다.
그런데 사실 웹 2.0이란 개념은 어떠한 특정 기술이나 언어에 한정되어 있는 용어가 아닌 현재 사용되고 쓰여지고 있는 웹의 진화 모델로서 제시되고 있는 인터넷에서 최근 몇년간에 걸쳐 발생한 웹의 환경변화와 그 방향성(트렌드)을 종합한 것입니다.
과거의 웹과 같이 포털사이트 위주의 정보를 제공하는 측에서 정보를 제공하면 정보를 원하는 사용자가 그 정보를 사용하는 일방적이 흐름이 아닌 웹 2.0은 정보의 개방을 통해 인터넷 사용자들 간의 정보공유와 참여를 이끌게 하고, 이를 통해 정보의 가치를 지속적으로 증대시키는 것을 목표로 하는 일련의 움직임, 경향을 의미하는 것입니다.
오리일리에서 정의한 웹2.0의 조건에 대해서 살펴 보자면 다음과 같습니다.
1. 서비스 제공자이다.
패키지 소프트가 아닌 서비스를 제공하고 있을 것
2. 데이터 소스를 제어할 수 있다.
웹2.0이라는 데이터베이스에 데이터를 제공할 수 있을 것-많은 양의 데이터를 취급하여 부가가치 창출
3. 사용자의 무의식적인 참여를 촉구한다.
사용자를 신뢰하고 사용자로부터의 피드백을 개발에 반영하고 있을 것
4. 집단지성(Collective Intelligence)을 이용한다.
사용자 정보 전체를 데이터베이스화 하고 있을 것 - 사용자 스스로가 계속해서 데이터를 만들어내므로 이를 잘 활용할 방법 모색
5. 롱 테일(Long Tail)을 이해한다.
틈새 시장을 대상으로 한 비즈니스 모델을 구축하고 있을 것 - 롱테일이라는 것은 제품군 상위 20%가 전체 80% 매출을 주도한다는 20대 80의 법칙에 반대되는 개념입니다. 이는 웹은 시공간의 제약이 없으므로 머리와 꼬리의 차이가 극단적으로 나뉘어 있다고 할지라도 꼬리 부분은 점점 길어지기 때문에 결국 꼬리의 합이 머리의 합을 능가하게 된다. 롱테일은 머리가 아닌 꼬리 부분에 목표를 설정하여 수익 모델을 만들어 가게 됩니다.
6. 플랫폼을 가리지 않는다.
PC, 휴대전화등 여러 플랫폼에서 서비스를 제공하고 있을 것 - 더이상 브라우저를 통한 인터넷 접속만이 아닌 수많은 곳에서 사용자가 접속할수 있는 방법이 나왔으니 플랫폼은 무의미 하다고 보는 것입니다. 브라우저에서 작동하는 웹 어플리케이션이 웹을 통해 데이터를 주고 받는 이상 OS가 무엇이든 상관 없으며 PC냐 핸드폰이냐 하는 것도 별로 상관없게 된 상황입니다.
7. 풍부한 사용자 경험
Ajax, LAMP 등 오픈 소스 기술을 다양하게 사용함으로써 재활용하기 좋은 형식으로 서비스 제공
※ 중요한 것은 이러한 7가지를 총망라하기보다는 어떤 한가지만이라도 월등하게 특화되어있는 것이 웹2.0에 가깝다고 볼 수 있습니다.
또하 웹2.0의 개념에 대해서 잘 설명되어 있는 책으로 유명한 웹2.0 이노베이션의 저자인 오가와 히로시는 그의 책에서 웹2.0의 특징에 대해서 이렇게 설명하고 있습니다.
웹2.0은 'XML농도가 짙은 웹' 이라고 정의할 수 있습니다. XML은 Extensible Markup Language의 약자로 네트워크화 되어있는 웹에 연결된 시스템들이 서로 데이터를 주고 받기 편하게 만들어진 메타 언어(언어를 만들기 위한 기반 언어)입니다. 웹2.0에서의 웹에서 XML이 중요시 된 이유는 앞에서 나왔던 것 처럼 웹의 구조화를 통해서 데이터베이스를 키우기 위해서는 XML 포맷이 제격이었기 때문입니다. 또한 밑에 나오는 RSS 피드 역시 XML 포맷을 기본으로 하고 있습니다.
시멘틱 웹이란 웹을 자율적인 데이터베이스로서 기능하게 하기 위한 시도입니다. 즉, 데이터베이스로서 완벽한 상태의 웹이라고 알려저 있습니다. 이는 웹에 있는 개별적인 정보, 예를들어 자신의 은행거래 기록과 달력에 붙어있는 사진을 유기적으로 연결시켜 하나의 데이터로 기능하게 할 수 있다는 점입니다.
2. 매쉬업(Mash Up)의 시대
매쉬업은 웹 2.0을 구성하는 여러 가지 기술과 패러다임 중에서도 가장 핵심에 놓여있는 현상 중 하나로 알려저 있습니다. 위키피디어는 매쉬업을 "여러 개의 소스로부터 전달된 데이터를 하나의 통합된 경험으로 결합하는 웹 어플리케이션"으로 정의하고 있습니다. 매쉬업 현상을 온전히 파악하기에는 다소 부족한 정의지만 아무튼 이러한 정의에 따르면 앞서 언급 했던 구글의 개인화된 홈페이지의 경우는 매쉬업의 완벽한 사례라고 볼 수 있습니다. 수많은 웹사이트에서 제공하는 다양한 정보가 개인화된 홈페이지에서 하나의 경험으로 결합되어 편리하고 위력적인 웹 어플리케이션의 기능을 수행하기 때문입니다. 매쉬업에 대해 간단히 정리해 보면 다음과 같습니다.
1. 매쉬업의 개념
매쉬업이란 인터넷상에서 제공되고 있는 다양한 서로 다른 서비스와 기능을 융합하여 새로운 서비스를 만들어 내는 것을 의미합니다. 즉 여러 웹사이트의 컨텐츠를 조합하여 새로운 컨텐츠나 서비스를 창출한다는 것을 뜻하고 있습니다.
예를 들면 A 지역에 화재가 났다고 가정하면, 구글 Earth와 다음의 뉴스서비스를 혼합하여 쉽게 사건을 전달할 수 있습니다. 또한 구글 Earth의 한 지역을 선택하면, 해당 지역의 유익한 정보를 보여주는 서비스를 만들 수 있을 것입니다.
이처럼 다양한 웹사이트에 퍼져있는 단편적인 지식을 융합하여 새로운 서비스를 생산하는 것이 매쉬업이라고 할 수 있습니다.
2. 매쉬업의 연혁
매쉬업의 원래 의미는 가수나 DJ가 2가지 곡을 조합하여 하나의 곡을 만들어내는 작업을 의미하는데요~
이 개념이 Web 2.0의 핵심적인 개념이 된 계기는 폴 레이드매처(Paul Rademacher)라는 사람이 만든 하우징맵(HousingMaps.com - http://www.housingmaps.com)이라는 사이트가 만들어 진 다음 부터였습니다. 컴퓨터 그래픽의 전문가였던 레이드매처는 크래이그리스트(www.craigslist.com)라고 알려진 사이트에 공개되어 있던 샌프란시스고 시 주변 지역의 부동산 정보를 보다 효과적으로 보여주고 싶었고 이를 위해 당시 정식 API가 공개되어 있지 않았음에도 구글의 지도 어플리케이션 코드를 해킹하여 부동산 정보와 조합시키게 된 것입니다. 이후 구글의 지도 서비스와 크레이그리스트가 제공하는 인기 부동산 정보를 조합한 이 사이트가 인터넷에서 뜨거운 붐을 일으키게 되었고 현재는 미국 20여개 주요 도시의 부동산 정보를 보여주는 정도까지 확장되었습니다.
이 후 구글은 레이드매처를 고소하지 않고 오히려 구글에 정식 직원으로 고용하였으며, 이 후 구글맵의 API를 공개 하였습니다. 구글 지도를 활용하여 흥미로운 많은 정보들이 밀접히 연결되어 혼합된 서비스의 확장성과 가능성을 주목했기 때문이었습니다.
또한 하우징맵을 통해 공개 API를 이용한 혼합 서비스에 많은 사람들이 눈을 뜨기 시작하게 됩니다. 이미 공개된 두 곳의 서비스를 섞는 것만으로도 전혀 다른 서비스가 손쉽게 나온다는 사실을 알게 된 사람들이 혼합 서비스의 경제성과 사업적 가능성에 주목하게 된 것입니다.
3. 매쉬업의 장단점
매쉬업의 장점은 혼합 서비스의 장점이라 할 수 있는 새로운 서비스를 만들기 위한 컨텐츠 개발에 대한 시간과 비용이 적게 소모된다는 것을 들 수 있습니다. 기존의 공개된 컨텐츠를 활용하여 새로운 컨텐츠를 생성하기 때문입니다. 또한 새로운 컨텐츠를 구체화시키기 위한 방법만 구상하면 누구든지 전세계 어디에서 새로운 컨텐츠를 창출할 수 있습니다.
하지만 컨텐츠가 1차 서비스(원천소스)에 종속적이라는 치명적인 약점을 가지고 있습니다. 다시 말하자면 원천소스를 가진 1차 자원이 소멸되는 순간 하위 서비스들은 연쇄적으로 중단된다는 것입니다. 또한 원천소스에 대한 API 또는 RSS가 변경될 때마다 해당 서비스도 변환하는 작업을 해야 하기 때문에 매쉬업을 이용한 서비스가 안정적으로 이루어지고, 제공되기 위해서는 원천 소스의 안정적인 제공에 대한 약속과 신뢰가 필요합니다.
4. 매쉬업과 관련된 에피소드 - 야후맵을 만지면서 있었던 에피소드
개인적으로 지난 프로젝트 기간동안 제가 중점적으로 담당했던 부분은 회원 가입/수정/삭제, 로그인과 관련된 기본적인 기능과 주문처리된 상품의 주문 리스트 처리, 해당 상품의 배송 처리에 관련된 모듈이었는데 그 중에서도 배송과정 처리 부분에 지도 API를 활용하여 좀 더 쉽게 사용자가 배송 현황을 손쉽게 파악할 수 있도록 구현하는 것이 핵심이었습니다.
지도 API를 구현하는 부분에 있어 여러 후보군이 거론되었는데 처음 접했고 다른 조에서도 많이 사용한 야후! 거기 지도 API를 이용하기로 결정 하였습니다. 뒤늦게 생각해 보면 굳이 야후! 거기 지도 API 말고 다른 서비스 제공업체의 API를 활용했어도 무방했지만 기본적으로 예제 소스에 대한 설명이 비교적 쉽게 설명되어 있어서 초보자인 제가 다루기에 그나마 편했다라는 점이 가장 크게 작용했던 것 같습니다. 하지만 생각지 못했던 문제점이 있었습니다.(굳이 문제점이라기 보다는 기능상의 아쉬운 점 정도!? 라 생각할 수 있겠습니다.)
기본적으로 야후! 거기 지도 API(http://kr.open.gugi.yahoo.com/) 에서는 '동' 단위까지의 검색만을 지원한다는 점이었습니다. 다시 말하자면 주소 정보에 대한 데이터를 실제 좌표로 변환화는 과정에서 '동'단위 이하의 정보들, 번지수 이하 상세 주소 등은 실제 좌표변환에 반영되지 않는다는 것이었습이다. 따라서 이 부분에 대해서 좀 더 상세한 주소에 대한 위치 검색이 가능할 수 있도록 생각해 보다가 네이버의 주소변환 API 와 야후! 거기의 좌표계 변환 API 를 이용해서 기존 야후지도에 좀 더 정확한 위치를 조회할 수 있도록 처리해 보았습니다.
이 부분에 대한 상세한 포스팅은 매쉬업 폴더에 따로 업데이트 하였습니다.
비록 완전한 매쉬업 서비스를 만들었다고 할 수는 없겠지만 기본이 될 만한 공개 API에 대한 좋은 경험을 쌓을 수 있었고 이것이 제가 처음으로 매쉬업을 접하게 된 개기가 되었습니다. 비록 아직 모르는 부분이 많지만 여러 API를 사용해보면서 매쉬업이란 분야에 흥미도 느끼고 좀 더 알고 싶다는 생각도 가지게 된 것 같습니다. 기회가 주어진다면 이번 MSP 활동 기간을 통해서 좀 더 다양한 분야의 매쉬업 관련 공개 API를 활용하여 좀 더 다양한 어플리케이션을 개발하여 관련 대회에도 참가해 보고 싶습니다.
3. 웹서비스 개발 플랫폼으로서의 닷넷(.NET)
웹 서비스는 간단히 말해 서로 다른 애플리케이션들을 ‘이어주는’ 역할을 하는 것입니다. 즉, 서로 다른 애플리케이션이 서로 교신하고, 데이터를 공유하며, 그리고 서로 작동하게도 할 수 있게 해주는 것입니다. 웹 서비스가 서로 다른 애플리케이션을 이어주는 ‘놀라운’ 능력을 발휘하게 된 것은 모두 XML 덕분인데 인터넷 애플리케이션들은 HTTP와 같은 표준 웹 프로토콜 상에서 XML 메시지를 주고 받으며 서로 호환/공유/교신할 수 있게 되었습니다.
이와 같은 웹 서비스에 대하여 마이크로소프트 역시 현재 XML 웹 서비스 플랫폼으로서 닷넷(.NET)을 지원하고 있는데 사실 웹 서비스를 위한 플랫폼은 닷넷만 있는 것이 아닙니다. 바로 선 마이크로시스템즈(Sun Microsystems)가 개발한 자바 2 플랫폼 엔터프라이즈 에디션(Java 2 Platform Enterprise Edition: J2EE) 역시 웹 서비스 개발을 위한 플랫폼으로, 인터넷 애플리케이션 개발 분야에서 마이크로소프트와 치열한 경쟁을 벌이고 있습니다. J2EE는 기본적으로 Sun의 자바를 이용해 기업용 애플리케이션을 개발할 수 있게 해주는 표준 세트로서 J2EE는 현재 IBM과 BEA, 휴렛-패커드(HP), 그리고 오라클(ORACLE)과 같은 헤비급 애플리케이션 서버 업체들로부터 전폭적인 지원을 받고 있습니다.
또한 앞서 소개한 웹 서비스는 모두 XML이나 SOAP(Simple Object Access Protocol), WSDL(Web Services Description Language), 그리고 UDDI (Universal Description, Discovery, and Integration)와 같은 ‘표준 구성 요소’들을 이용하고 있습니다. 때문에, 이론상 닷넷과 J2EE 기술은 이런 구성 요소들을 통해 서로 호환이 가능하다고 볼 수 있지만 실제로는 그렇지 못하다고 할 수 있습니다. 근본적으로 닷넷 플랫폼과 J2EE가 서로 이렇게 갈라서 있는 이유는 당연한 얘기겠지만 지원하고 있는 기업이 다르기 때문입니다. 닷넷은 마이크로소프트라는 거대 기업 하나가 지원하고 있는 반면, J2EE는 여러 다른 회사들이 공동으로 지원하고 있죠~
또한 J2EE와 닷넷의 가장 중요하고 두드러진 차이점은 사용하는 프로그래밍 언어의 차이라고 볼 수 있습니다.
우선 닷넷을 구성하는 소프트웨어는 닷넷 버전의 비주얼 베이직, C++, C# 등과 같은 여러 언어를 이용해 제작할 수 있습니다. 이들 개발 툴들은 모두 MS의 비주얼 스튜디오 닷넷(Microsoft's Visual Studio.Net) 브랜드에 속해 있습니다. 이런 프로그래밍 언어로 작성된 소스 코드는 (닷넷 소프트웨어로 작동되기 위해) 마이크로소프트 인터미디엇 랭귀지(Microsoft Intermediate Language: 줄여서 MSIL이라 한다.)로 컴파일 되는데 이렇게 컴파일 된 MSIL 코드는 커먼 랭귀지 런타임(Common Language Runtime: CLR)으로 다시 컴파일 되거나, 아니면 직접 각각의 플랫폼에 맞는 네이티브 코드로 컴파일 됩니다. 또한 닷넷은 아무래도 윈도우즈 운영체제에서 주로 사용되는 편입니다.
반면, J2EE가 이용하는 프로그래밍 언어는 오직 자바 뿐입니다. 프로그래머가 작성한 자바 소스 코드는 바이트코드(bytecode)라고 알려진 오브젝트 코드(object code)로 컴파일 됩니다. 자바의 바이트코드는 MSIL 코드와 같은 개념으로 이해될 수 있으며 이렇게 된 후엔, 자바 버추얼 머신(Java Virtual Machine)이 이 바이트코드를 해석하고 런-타임(run-time)시 직접 실행하게 됩니다. 여기서도 바이트코드는 통째로 각각의 플랫폼에 맞는 네이티브 코드로 컴파일이 가능합니다. 따라서 이론상 자바 버추얼 머신이 설치된 플랫폼은 모두 이 바이트코드를 받아들일 수 있는 것입니다. (이론적으로 자바 버추얼 머신은 메인프레임, 유닉스, 윈도우즈 등 대부분의 운영체제에 탑재될 수 있습니다.)
그렇다면 J2EE 플랫폼에 대한 닷넷 플랫폼은 어떠한 경쟁력을 갖추고 있는 것일까요?
1. 통합된 개발환경
마이크로소프트는 개발환경에 많은 투자를 하는 회사입니다. 그 결과로 비주얼스튜디오(Visual Studio)는 발전을 거듭하여 개발자들이 최소한의 노력으로 좋은 결과를 얻을 수 있는 훌륭한 도구로 진화하고 있습니다. 게다가 MSDN 라이브러리로 대표되는 개발 노하우의 축적도 같은 훌륭한 플랫폼을 설계하는 것도 중요하지만 그 플랫폼을 잘 사용하기 위해서는 좋은 개발 환경이 필수적이라 할 수 있습니다. 특히 마이크로소프트의 도구는 모두 같은 환경을 사용할 수 밖에 없기 때문에 동일한 환경에서 작업하는 작업자끼리의 커뮤니케이션도 효과적으로 이루어진다고 볼 수 있습니다.
2. 자유로운 언어선택
일정정도의 프로그래밍 경지에 오르면 개발언어가 별로 중요하지 않을 수도 있습니다. 컴퓨터 언어라는 것이 거의 같은 맥락 위에서 움직이는 도구이므로 그 근본은 같은 것이기 때문인데 그럼에도 불구하고 어떤 개발자던 선호하는 언어가 있기 마련입니다. 그런데 닷넷은 서로 다른 언어로 작성된 어셈블리(모듈)을 아무런 제약없이 서로 참조 할 수 있기 때문에 앞에서도 언급했지만 언어 선택의 문제에 있어서 개발자에게 어느 정도의 자율성을 부여하는 편입니다. 현재 지원되는 언어만도 C++, C#, J#, Basic, Delphi 등이 있고 앞으로도 많은 언어들이 닷넷을 지원할 것이라고 합니다.
3. 마이크로소프트의 독점적 지위
무엇보다도 마이크로소프트 사가 PC 운영체제 시장에 있어서 독점적인 지위에 있다는 사실을 부정하는 사람은 아마 없을 것입니다. 실제 개발이 이루어지는 운영체제에서의 지원이 필수적임을 생각해 볼 때 이 부분에 대한 메리트는 무시할 수 없을 것입니다.
그렇다면 단순히 J2EE과 닷넷 중 어느 한쪽이 웹서비스 분야에서 유리하다고 말할 수 있을까요!?
시장의 의견은 J2EE과 닷넷 두 가지 플랫폼은 서로 공존할 가능성이 크다고 보고 있는 듯 합니다. 앞서도 언급했지만 닷넷은 마이크로소프트라는 강력한 후원자가 뒷받치고 있고, J2EE 뒤에는 많은 업계 대표적인 기술 제공 업체들이 버티고 있습니다. J2EE과 닷넷은 서로 경쟁하는 동시에, 공존하며 이 두 플랫폼은 상호 경쟁하면서 각자의 취약점을 개선해 나갈 것이기 때문에 업계 전체로 봐서는 커다란 이득이 될 것입니다.
또한 앞으로는 J2EE나 닷넷 어느 하나의 플랫폼에만 의존하지 않고 좀 더 개방적으로 발전해 갈 것이라 예상하고 있습니다. 마이크로소프트는 전에도 윈도우즈 이외의 플랫폼을 위해 자사의 애플리케이션을 개방한 바 있었고 이런 논리는 J2EE에도 그대로 적용 될 것입니다. 개발자들은 한가지 플랫폼만 위해 코드를 짜지 않을 것이며 독립 소프트웨어 개발사(Independent Software Vendor: ISV)들은 자사 소프트웨어의 경쟁력을 키우기 위해 한 가지 이상의 플랫폼을 지원하는 소프트웨어를 계속 개발할 것이고 이렇게 되면 시장은 더욱 다양해 지게 될 것입니다.
4. RIA(Rich Internet Application) 시장에서 Microsoft 사의 경쟁력으로 떠오른 실버라이트(Silverlight)
RIA는 앞서 언급한 바와 같이 Rich Internet Application의 약자로 글자 그대로 말하면 풍성한(?) 웹 어플리케이션이라는 뜻인데 실은 기존의 HTTP 프로토콜의 태생적 한계(요청과 응답에 대해 무상태성-STATELESS)를 극복하고 마치 운영체제 위에서 동작하는 일반 응용프래그램과 같이 동작하는 웹 어플리케이션을 개발하는 것이라 볼 수 있습니다.
제가 처음 실버라이트를 접하게 된 것은 SBS에서 중계한 김연아 선수가 출전했던 지난 2009 세계피겨선수권대회 관련 동영상을 보기 위해 실버라이트를 설치를 했을 때였습니다. 첫음 설치될 때의 느낌은 기존의 Active X 방식의 다운로딩을 통해 배포되는 방식에 비해 좀 더 가볍다(light-weight)고 해야할까요~ 좀 더 깔끔하고 간편하게 설치된 느낌이었고 생각보다 기존의 미디어 플래이어에 비해 화질도 괜찮았고 버퍼링도 거의 없는 편이어서 꽤 인상적이었던 것으로 기억합니다.
이러한 실버라이트가 제공하는 미디어 기술은 HD 급의 동영상 지원과 DVD 스타일의 인터랙티브와 오버레이 기능을 지원하고 있습니다. 또한 웹에서 AJAX 프레임워크와 통합되어 유연한 개발 환경을 지원하며, 윈도우 라이브 플랫폼을 이용한 스트리밍 서비스가 제공되어 고품격 동영상을 웹에서 사용자에게 전달하는 것이 가능한 것이 강점이라고 할 수 있습니다.
그런데 이런 실버라이트가 실버라이트2.0 버전부터 닷넷 프레임워크를 탑재했다는 것을 주목할 필요가 있을 것 같습니다. 다시 말해 실버라이트와 닷넷의 결합은 서버사이드에서만 사용하던 기술로 클라이언트 개발을 가능해졌다는 의미이며 또한 윈도우뿐 아니라 맥 OS X 같은 환경에서도 개발을 진행할 수 있다는 것을 뜻하는 것입니다.
이러한 실버라이트의 급부상으로 인하여 기존 RIA 시장의 선두 주자라 할 수 있는 어도비 사의 Flex, AIR계열과의 좋은 경쟁을 통해 인터넷을 사용하는 사용자에게 좀 더 성능 좋은 어플리케이션을 제공할 수 있으리라 기대해봅니다.
Part 1과 Part 2에 걸친 분석 내용을 정리해 보면...
저는 먼저 새롭고 다양한 분야의 정보에 대해서 우선 호기심을 가지려고 하는 편이고 이를 통해 흥미를 얻고 즐거움을 느끼게 되면 나름대로의 어떠한 목표 의식을 가지고 좀 더 깊이 있는 지식을 얻고자 하는 열정을 가지게 됩니다. 또한 이러한 흥미와 열정을 가지게 된 무언가에 대해서 제 실력이 부족하다고 느끼게 되면 이상하리만치 강한 오기가 생기고 더 잘하고 싶은 욕구가 들어 더욱 집중력을 얻게 됩니다. 이러한 제가 잘 하고 싶어하는 분야의 지식에 대한 깊은 열정과 계속된 노력을 뒷받침 하는 것은 제가 관심 있어 하고 잘 하고 싶은 분야에 대한 강한 호기심과 흥미를 가지고 즐거움을 느끼게 되는 것이며 부족한 지식에 대한 강한 오기가 지금까지 저를 이끌어 온 성장 동력이라고 생각합니다.
또한 단편적이고 암기지향적인 사고에서 벗어나 좀 더 창의적이고 기존의 고정 관념을 탈피한 사고 방식을 추구하며 잘 모르는 무언가에 대해서 수동적으로 기다리기보다 적극적으로 알아가려 노력하는 자세를 통해 더 높은 문제 해결 능력을 키우고 싶고 이러한 생각은 일뿐만 아니라 대인관계에 있어서도 좀 더 적극성을 가지고 많은 사람들과의 교류를 통하여 더욱 긍정적인 에너지를 얻고자 노력하고 있습니다.
이를 바탕으로 나만의 공식을 도출해 보았습니다.
저는 다양한 분야에 대한 호기심 + 하고 싶은 목표에 대한 깊은 열정 + 성취를 위한 욕심과 적극적인 노력 + 부족함에 대한 오기 + 창의적 사고 방식 지향 + 적극적인 참여와 공유를 추구하는 사람입니다.
이것으로 몇 주에 걸처 진행해왔던 나만의 공식 만들기에 관련된 포스팅을 마무리 할까 합니다. 비록 이번에 작성하게 된 나만의 공식 만들기 포스팅만으로 저의 모든 진면목을 다 보여 드릴 순 없겠지만 이번 기회를 통해 저 역시 나름대로 저 자신의 가치관과 목표와 꿈에 대해서 다시 한번 되짚어 볼 수 있었던 좋은 기회였다고 생각합니다. 또한 앞으로 MSP 활동을 통해서 이러한 저만의 공식 만들기가 더욱 더 명확하고 긍정적인 방향으로 진행될 수 있으리라 기대하고 있습니다.
이번 MSP 활동을 통해서 많은 MSP 학생들과 다양한 분야에서의 팀단위의 프로젝트를 통해 더 많은 생각들과 가치들을 공유해보고 싶고 마이크로소프트의 뛰어나신 전문가 분들의 기술적인 멘토링을 통하여 저 자신이 좀 더 긍정적인 변화의 흐름에 빠져들 수 있는 완벽한 기회를 잡을 수 있기를 강력히 희망합니다. ^^
또한 학생 파트너로서 저 뿐만 아니라 다른 많은 학생들과도 MSP 활동을 통해 얻게 될 많은 정보들을 서로 공유하고 발전시켜 나갈 수 있는 기회가 주어졌으면 좋겠습니다.
마지막으로 마이크로소프트 스튜던트파트너(Microsoft Student Partner)가 되어 제가 잘 하고 싶은 분야, 제가 정말로 하고 싶은 일에 대해 저의 열정과 노력과 그리고 도전 의식을 담아 저의 잠재 능력과 가치를 최대한으로 이끌어 내고 싶습니다.
감사합니다.
'MSP(Microsoft Student Partner)' 카테고리의 다른 글
| Microsoft Student Parters(MSP)에 최종 합격했습니다. (0) | 2009/06/30 |
|---|---|
| 마이크로소프트 스튜던트 파트너(Microsoft Student Partner) 지원서 질문 일부... (0) | 2009/06/07 |
| MSP 3기 지원 - 나만의 공식 만들기 (1) | 2009/05/10 |


댓글을 달아 주세요
우와 ㅎㄷㄷ..
MSP 3기 합격하셨다는 카페에 글 보고왔는데...;
잠깐 블로그만 봐도 완전 능력자시네요 ㅠ_ㅠ;;
전 기냥 야매로 된듯한 이 기분 ㅠㅠ);;;
암튼 3기에서 나중에 뵈요~ 하핫;; ㅎㅎ