티스토리 뷰

프로그래밍

Ctrl + Space

June 2010. 7. 4. 01:19

세상이 아름다워 보이던 신입사원 시절, 회사 인트라넷에 경진대회 공지가 하나 떴습니다. 뭐, 회사의 새로운 비전을 선포하려고 한다. 그리고 이를 기념하기 위해서 다양한 행사를 준비했다. 그 중 하나로 이 경진대회를 개최하니 다들 많이 참여해주길 바란다. 이런 공지였죠. 경진대회는 개인전과 단체전으로 나누어져 있었는데 단체전 경진대회 중 하나가 매시업 프로그래밍 경진대회 였습니다.

매시업 프로그래밍이라는 것은 다른 서비스들, 그러니까 네이버라든지 구글이라든지 다음이라든지 이런 서비스들에서 제공해주는 정보들을 조합하여 새로운 프로그램을 만들어내는 프로그램을 말합니다. 당시에는 매시업 프로그래밍이라는 것이 굉장히 유행이었기 때문에 전국적으로도 많은 대회가 있었습니다. 저도 회사에 들어오기 전에 혼자서 MP3 파일을 집어 넣으면 태그를 분석하여 Last.fm에서 정보를 받아온 뒤 블로그에서 관련 글을 검색해주고 플리커에서 사진을 받아와서 뮤직비디오를 만들어주는 프로그램을 만들어서 제출했다가 광탈했던 기억이 있었습니다. 하지만 그 과정에서 배운 것들이 많았기 때문에 좋은 팀원들과 같이 나간다면 뭔가 좋은 결과가 나오지 않을까 기대를 많이 했습니다. 그래서 팀원 모집을 시작했습니다.

사실 팀원 모집은 생각보다 쉬웠습니다. 제가 신입사원 이었기에 제 주위에도 다 신입사원들만 있었고, 다들 뭔가 해내고자 하는 마음이 가득한 상태였습니다. 거기에 알코올만 조금 주입시켜주면 다들 실리콘밸리라도 갈 기세가 되었죠. 그래서 저는 실리콘밸리에 가기 전에 이 작은 회사의 경진대회 부터 우승하고 가는 것이 어떻겠냐고 설득하는 것만으로도 쉽게 팀원들을 모집할 수 있었습니다. 그래서 저는 술자리에서 옆자리와 앞자리에 있는 친구들으로 구성된 4인 조합을 만들 수 있었는데, 대충 모집한 것 치고는 다들 꽤 실력이 좋다고 소문난 친구들이었기 때문에 신입사원으로만 구성된 팀이라는 핸디캡은 무시해도 좋겠다는 생각을 했어요.

초반은 무척 순조로웠습니다. 일단 무엇을 만들것인가 아이디어를 도출하는 과정이 가장 중요했는데, 이 과정도 다들 적극적이었기에 생각보다 잘 풀렸습니다. 브레인스토밍을 열심히 하다 보니 중반을 지나자 뭔가 아이디어를 내기 보다는 내가 더 웃기다고 자랑하기 위한 애드립들이 난무하기는 했지만 제가 정신을 잘 차리고 있었던 덕분에 간신히 '이런 프로그램을 만들자'라는 결론을 내릴 수 있었죠.

저희가 만들기로 한 프로그램은 '데이트 코스 자동완성' 프로그램이었습니다. 이 프로그램은 어떤 시장성이나 성장가능성을 고려한 프로그램이 아닌 모두의 필요성에 의해 만들어진 정말 진심으로 만들고 싶어서 만들 수 있는 프로그램이었어요. 저희 뿐만이 아니라 저희와 같은 일을 하는 모든 사람들에게 이 프로그램은 굉장히 유용할 것이라고 확신을 했습니다. 만약에 대회 결선에 진출한다면 이런 식으로 프레젠테이션을 할 생각이었습니다.

"(조명을 낮추고 엄숙한 표정을 짓는다) 자, 저희 솔직해지죠. 여기 있는 분들 중 컴퓨터랑 대화하는 것 보다 이성과 대화하는 것이 편하신 분이 몇이나 있습니까? (3초 쉬고) 지금 당장 주말에 2시간 이상의 데이트 코스를 술술 만들어낼 수 있는 분 손 들어보세요. (아무도 손을 들지 않는다) 저희는 이 어려움에 주목했습니다. (장엄한 음악 시작) IT 업계 종사자들을 위한 혁신적인 데이트 코치 프로그램. 컨트롤 스페이스를 소개합니다 (조명 완전히 암전하고 소개 동영상 시작)"

저희 프로그램의 비전은 이랬습니다. 날짜와 위치 정도만 입력하면 코스를 자동으로 만들어주는 프로그램. 뭘 할지 모르는 사람을 위해서 연속성 있고 개연성 있는 패턴도 만들어주자. 이성과 대화하는 것이 어려운 사람을 위해서 최신 트랜드와 화제거리들도 미리 제공해줘서 예습할 수 있게 해주자. 이 정도만 완성되어도 우리는 정말 엄청난 프로그램을 만들 수 있을 것이라 생각했어요. 막 이거만 있으면 모든 두려움이 사라질 것 같았고 이건 경진대회가 문제가 아니라 내가 필요해서, 그리고 이 사회가 필요로 하는 프로그램이 아닐까 생각했습니다. 최종 발표회에서 우레와 같은 박수를 받을 수 있을 것이란 상상에 무척이나 행복해졌습니다.

저희는 프로그램 이름을 ^Space라고 지었어요. ^은 키보드의 Ctrl키를 표시하는 기호이고 바꿔서 말하면 Ctrl + Space를 같이 누르라는 의미로 직역할 수 있습니다. 소리내서 읽으면 컨트롤 - 스페이스가 되고요. 공간을 컨트롤한다 - 데이트 하는 공간에 대해서 내가 주도권을 가진다 - 이성에게 멋진 모습을 보여준다는 의미를 가지고 있는 이름이 되지요. 그리고 개발자들에게 Ctrl + Space는 굉장히 각별한 의미를 가지고 있는데, 모든 개발툴들이 적당한 글자를 입력하고 Ctrl + Space 키를 누르면 이후에 입력할 수 있는 선택지를 자동완성 시켜줍니다. 그래서 개발자들은 수도없이 Ctrl + Space를 누르면서 자신의 코드를 자동완성 시킵니다. 그런데 개발자들을 위한 데이트 코스 자동완성 프로그램의 이름이 Ctrl + Space이다? 세상에 이렇게 개연성 있는 네이밍이 있을 수 있을까요? 저는 이 이름을 제안한 것이 저라는 사실에 엄청난 자부심을 느꼈습니다.

원래 개발자에게 가장 어려운 순간이 뭔가의 이름을 짓는 순간인데 이름을 잘 지었으니 저희는 거침없이 전진할 수 있었습니다. 공간에 대한 프로그램이므로 기본적으로 지도 API를 사용해서 지도를 화면에 표시해줄 생각이었습니다. 그리고 업체정보 API를 이용하여 원하는 장소 근처의 업체들을 추천해줄 수 있을 것이라 생각했습니다. 여기에 디자인 패턴의 개념을 응용한 데이트 패턴이라는 새로운 개념을 제시했습니다. 물론 저희는 '데이트 패턴'이라는 아이디어를 처음 제시한 사람에게 경외의 박수를 보냈어요. 저는 그게 제가 아니었다는 사실에 무척 속상했지만 대승적인 차원에서 같이 박수를 쳤줬습니다. 어쨌든 팀의 승리가 중요하잖아요.

데이트 패턴이라는 것을 설명하기 위해서 디자인 패턴이라는 개념을 먼저 설명하자면, 디자인 패턴이란 건축학이나 소프트웨어 공학에서 나오는 개념으로 자주 사용되는 구조적인 형태를 일반화 시켜서 패턴으로 만들어서 정리해둔 것을 의미합니다. 모든지 완전히 새로운 창조를 시도하는 것은 많이 힘든 일이니 기존에 많이 사용된 패턴 중 적당한 것들을 골라서 재사용하고자 하는 개념입니다.

데이트 패턴은 여기에서 출발한 아이디어 입니다. 데이트에 미숙한 우리들을 위해서 데이트에 능숙한 선배들이 만들어낸 패턴들을 그대로 재사용하면 우리도 남들처럼 좋은 시간을 보낼 수 있지 않을까 하는 기대감에서 비롯되었죠. 예를 들면 저희는 '첫 데이트 패턴' '소개팅 후 첫 애프터 패턴' '안전추구형 보수적 데이트 패턴' '싸운 뒤 화해 패턴' '피곤한 직장인 커플 패턴' '저예산 데이트 패턴'등을 미리 정의해놓고 사용자가 날짜와 장소를 입력하면 패턴에 맞춰서 동선과 업체들을 추천해주는 기능을 제공해줄 수 있었어요.

데이트 패턴이라는 혁신적인 개념을 제시한 친구에게 질 수 없다는 생각에, 아이디어의 은행이 있다면 여기에 있지 않을까 싶을 정도로 저희는 경쟁적으로 아이디어를 내놓았습니다. 날짜를 입력하면 날씨를 알 수 있습니다. 날씨API가 있거든요. 그러면 날씨가 안 좋다면 실내 위주의 동선을, 날씨가 좋다면 실외 위주의 코스를 짤 수 있지 않을까요? 이미지 검색 API를 이용해서 옷 차림을 추천해주는 것은 어떨까요? 프린트 할 수 있는 대화 토픽 카드를 만들어줘서 대화 흐름이 막히면 슬쩍 보라고 할 수 있지 않을까요? '...음 그래서 한일 통화 스와프가 요새 화제인데 말이죠' 하는 식으로요.

대강의 아이디어가 모이고, 저희는 상세한 프로그램의 디자인에 들어갔습니다. 구체적으로 기능들을 어떻게 만들까에 대한 회의였죠. 아이디어가 혁신적이면 이걸 만드는 과정도 무척 재미있어지는데 그 시작이 상세 설계였어요. 기세를 몰아서 상세 설계 과정을 진행하고자 마커를 들고 화이트보드 앞으로 간 저는 순간 이렇게 말할 수 밖에 없었습니다.

"저...그런데 데이트를 하면 보통 뭘 하죠?"

님들의 침묵이 회의실을 휩쓸었습니다. 조금 전만 해도 아이디어를 경쟁적으로 인출해내던 사람들이 맞나 싶을 정도로요. 진행자라는 포지션을 차지하고 있던 저는 마치 저는 할 말이 있었지만 하지 않는 듯 "저기, 누가 말 좀 해보시죠?"라고 재촉했지만 전부 솔로였던 저희는 아무 말도 할 수 없었습니다. 순간 회의실을 활기를 잃었고 저희의 당면과제는 프로그램의 설계가 아닌 업무 도메인에 대한 이해가 되어버렸습니다. 프레젠테이션 때 "솔로 개발자 네 명이 그 누구보다도 절실한 요구에 의해 만들어낸 프로그램"이라는 문구를 추가하자는 아이디어 같은게 나오기는 했는데, 상황에 전혀 도움이 되는 말은 아니었죠. 뭐랄까. 가상 세계를 설계하는 듯한 기분이 들었습니다.

아무래도 진전이 없었던 저희는 일단 회의를 중단하고 다음에 다시 모여서 이야기해보기로 했습니다. 그래서 저는 동기들에게 우리가 이런 상황인데 좋은 생각이 있으면 좀 말해줘라 라고 메일을 돌렸습니다. 하지만 한 통의 답장도 받지 못했습니다. 하, 개발자놈들 진짜 너무하네. 라고 생각하며 저희는 아무 소득없이 다음 회의를 시작해야 했습니다.

여전히 진행되지 않는 회의를 진행하기 위해서 아이디어를 은행에서 인출하는 것이 아니라 사채에서 끌어오듯이 간신히 진행했으나 상세 설계는 여전히 잘 이루어지지 않았습니다. 이러다 아무것도 못하겠네 라는 분위기가 엄습해서 회의실이 침울해졌을 때, 저희 중 한 명이 갑자기 안절부절 못하더니 조심스럽게 이야기를 꺼냈습니다. "어...그런데 나 사실 여자친구가 생겼는데 먼저 가면 안 될까?" "네?" 아마 2010년 중 가장 제 눈이 커졌던 것 같아요. 물론 저희는 대승적인 차원에서 보내주기로 했고 - 데이트 코스 패턴 3개 이상 알아오라는 숙제를 주고 -  남은 세 명이 회의를 마저 진행하기로 했습니다. 하지만 다들 의욕이 엄청나게 떨어졌다는 감상을 서로 공유하고는 그냥 술이나 마셨습니다.

그렇게 떨어진 의욕은 다시 돌아오지 않았고, 개발을 하기로 했던 그 날까지도 뭘 어떻게 만들지에 대해서 확실한 답을 내놓지 못한 저희는 '프로젝트 실패!'를 외치고는 마음의 짐을 벗어 던질 수 있었습니다. 그리고 순간 시간이 많아진 주말에 마찬가지로 할 일이 없었던 동기들을 모아서 - 여자친구가 생긴 동기를 제외하고 - 술이나 마시기로 했죠. 데이트 코스 추천해달라고 할 때는 답장 한 장 없던 친구들이 술 마시자고 하니까 우루루 달려오더라고요. 이건 해피앤딩이라고 봐야 할까요? 

댓글