민트샵을 시작하며…

사실 훨씬 전부터 정리가 되어야 했던 글인데, 이제서야 정리를 해 봅니다.
민트기술에서는 두어달 전부터 쇼핑몰 프로젝트를 시작했습니다. 사실 많이 공유하지는 못했지만, 민트샵을 시작하기까지도 많은 우여곡절이 있었습니다. 올 초부터 자체 프로젝트를 다각도로 시도하였고, 가시적인 성공은 거두지 못했지만, 나름 여러 시행 착오를 거치는 중이었습니다. 그에 반해 좋은 조건도 갖추어 졌습니다. 외부 웹개발자를 영입하여, 웹 서버쪽 개발 능력이 갖추어졌습니다. 그래서, 유틸리티성 앱개발만 가능했던 것에서, 서비스 개발도 가능해 졌습니다.
그래서, 제가 개인적으로 오래동안 숙원해 오던 쇼핑몰 프로젝트를 시작하게 되었습니다. 이 과정에서 다같이 공감하게 되는 과정이 없었던 점이 많이 아쉬운 점으로 남아 있습니다. 그래서, 이참에 공감이 될지는 모르겠지만, 쇼핑몰 프로젝트를 시작하는 생각을 공유하려고 합니다.
일단 온라인 쇼핑몰이 오랫동안 개인적으로 의미한 것은, 내가 나름 꽤 많이 사용하는 서비스, 하지만 사용성이 너무 많이 떨어지는 서비스, 나 개인적으로 꽤 많이 만들어 온 서비스, 하지만 만들기만 했을 뿐 그 어떠한 의견도 받아들여지지 않았기 때문에, 나또한 내가 엉터리라고 생각한대로 만들수 밖에 없었던 서비스 였습니다. 내가 많이 사용하지만, 그리고 서비스의 사용성은 형편없이 떨어지지만, 다른 대안이 없기 때문에 (시장지배력, 혹은 법적인 조치) 벗어날 수 없는 또 다른 예로 대표적인 것인 인터넷 뱅킹이 있었고, 아이폰이 나오기 전까진 모바일 디바이스도 그랬었습니다. 둘은 내가 해결할 방법이 없지만, 그나마 쇼핑몰은 내가 할 수 있지 않을까 하는 생각을 가져 볼 수 있는 부분이기도 합니다. 해외의 우수한 온라인 쇼핑 서비스를 이용하며 그 편리함과 우수함에 부러움을 감출 수 없었습니다. 나도 이런 것을 만들고 싶다. 물론 국내에도 이런 서비스의 시도가 없었던 것은 아니지만, 여러가지 이유로 나의 이러한 소망을 접기엔 아직 부족한 것이 많았습니다.
그리고, 또 한가지. 인터넷 세상이 많이 바뀌고 있다는 점입니다. 대략 2000년을 기점으로 본격적인 온라인의 시대로 이동하였다면, 2010년을 기점으로 본격적인 모바일의 시대로 이동하고 있다는 점입니다. 즉 온라인 시대로 넘어오면서 없던 온라인 쇼핑의 카테고리를 새롭게 만들면서 그 기틀을 잡았다면, 이제는 모바일 쇼핑의 기틀을 잡을 시점이라는 점입니다. 온라인 쇼핑은 개인적으로는 만족스러울 수 없지만, 어느정도 새로운 틀이 들어갈 수 없는 견고한 상태입니다. 그에 반해 모바일 쇼핑은 아직 틀이 마련되지 못했습니다. 그래서 바로 이 시점이 모바일 쇼핑을 중심으로 새로운 틀을 짤 수 있는 기회라는 생각을 했습니다.
모바일이라는 것은 단지 핸드폰 단말기를 말하는 것은 아닌 것 같습니다. 제가 이해하는 것은 오히려 멀티디바이스에 더 가깝습니다. 일찍이 Tim O’Reilly 는 주변에 있는 얼리어댑터, 해커와 같은 집단을 Alpha Geek 이라 부르고 그들이 하는 행동 패턴이 곧 다가올 미래에 일반인들이 사용할 것이라고 했습니다. 마찬가지로 내 주변의 매우 편향되어 보이는 집단이지만, 이들이 편리하다고 생각하는 것이 머지않은 미래에 곧 모두가 편리하다고 생각할 것이라 생각합니다. 이들의 행동 패턴은, 자하철에 서 있을 때에는 핸드폰 단말기를 들여다 보고, 쇼파에 앉아서는 태블릿을 사용하고, 까페에 앉을 때에는 노트북을 열고, 책상 앞에 앉아서는 데스크탑을 사용 합니다. 이것이 모바일 세상이고 이런 멀티 디바이스 사이를 자연스럽게 연결해 주는 것이 바로 모바일 세상이 가져다 준 축복이라 생각합니다.
이러한 생각을 담은 쇼핑 서비스는 국내에 아직 없는 것 같습니다. 해외도 아직 없는 것 같습니다. 하지만 앞으로도 계속 없을 것 같지는 않습니다. 매일 매일 관련하여 쇼핑과 관련한 좋은 시도를 발견하고 있고, 아직 내 눈에는 보이지 않았지만, 기막힌 서비스들이 많이 준비되어 있다는 생각이 듭니다.
우리도 여기에 참여하고 싶습니다. 우리가 새롭게 올 모바일 쇼핑의 세상에서 주역이 되면 너무 좋겠지만, 그렇지 않아도 좋습니다. 새롭게 그려질 그림의 한 획이라도 그려넣었으면 좋겠다는 생각이 먼저입니다. 좋지 않은 사용성을 가진 방식이 시장지배력을 바탕으로 굳히기에 들어가기 전에, 많은 사람에게 좋은 모바일 쇼핑 서비스를 경험하게 하고 싶은 마음입니다.
예전 90년대, 내가 원하는 물건을 찾아 온 시장을 발품팔며 돌아다니던 시절의 기억이 있습니다. 소비자에게 정보가 거의 없는 제품일수록 온갖 사기꾼들이 기생하며 살던 적이 있었습니다. 인터넷 쇼핑은 이러한 상거래의 모습을 완전히 뒤집어 놓았습니다. 저는 아직은 모르지만, 모바일 상거래가 이만큼, 혹은 이보다 더 큰 변화를 가져다 줄 거라는 생각을 가지고 있습니다. 아직 답을 찾지 못했을 뿐이죠. 그 답을 찾아 나가는 과정을 해 보고 싶습니다.
기회가 허락한다면 말이죠.
http://mintshop.com

redmine tool – 3rd Iteration

redmine tool – 2nd Iteration 에 이은 세번째. 이틀만에 돌아온 시간입니다.
오늘은 본 프로젝트의 시작에 앞서, 이 프로젝트 진행에 관해서 논했습니다.

  • 해야 하는 다른 프로젝트가 생겼습니다. 그래서, 다르 프로젝트 진행과 본 프로젝트 진행을 어떻게 해야 할지 고민했습니다.
  • 결론은, 일단, 이 redmine tool 프로젝트가 왠만큼 완성될 때까지 지속한다 였습니다.
  • 그래서, 선을 그엇습니다.
  • 3월 세째주, 3월 16일까지 redmine tool 을 어느정도 진행한다로 목표를 삼았습니다.
  • 저희 예측으로는, 그때쯤이면 릴리즈 가능한 모양새가 나올 것 같습니다.
  • 그리고, 그 다음부터는 다른 프로젝트를 진행한다.

일단 여기까지 토론하는데, 시간이 꽤 걸렸습니다. 그래서 오늘은 개발에 시간이 조금 모자랐습니다.
본격, redmine tool 개선에 관해서 논의를 했습니다. 일단, 지난번에 다 채우지 못한 기능을 채우는데 촛점을 맞추기로 했습니다. 오늘은 하지 못하지만, 좋은 제안도 나왔습니다.

  • 새로운 이슈를 생성하는 창 만들기
  • 이슈간 선/후 관계, 부모/자식 관계를 비주얼하게 보여주는 창. 사실 레드마인에서는 복잡한 관계를 형성할 수 있게 해 주지만, 이것을 한눈에 알아볼 수 없기 때문에 쉽게 사용할 수 없는 단점이 있습니다.

일단 위 안은 좋기는 하지만, 만들기 간단하지 않기 때문에, 잠시 접어 두고 아래와 같은 기능 개선에 촛점을 맞추기로 했습니다.

  • webpage 링크
    • 현 이슈 웹페이지
    • 새 이슈 만들기 웹페이지
    • 하위 이슈 만들기 웹페이지
    • 위키 목록 웹페이지
  • 이슈 컨트롤
    • assignee 바꾸기
    • 시작/종료시간 바꾸기
    • 목표버전 바꾸기
    • 추정시간 변경
    • 우선순위 변경
  • 필터
    • 내 이슈 보기
    • 다른 사람 이슈 보기
    • 목표버전별로 보기
  • 이슈목록 5개 해제
  • 시간 추적
    • 타이머 동작/끝
  • 동작 성공 여부 확인
  • 캐시된 내용 다시 불러 오기
  • 마지막 프로젝트/이슈 기억하기
이 중 몇몇은 생각과 달리 API 지원이 없어서 만들 수 없었습니다.
  • 위키 목록 웹페이지
    • 위키의 첫 페이지로 가는 것으로 수정
  • assignee 바꾸기
    • 해당 프로젝트의 등록사용자 목록 불러오기 불가 (1.4 부터 지원)
  • 다른 사람 이슈 보기
    • 해당 프로젝트의 등록사용자 목록 불러오기 불가 (1.4 부터 지원)
그리고 개발 중에 기발한 아이디어도 나왔습니다. 그것은 메뉴바의 타이틀 자체를 이슈 번호로 표시하는 것입니다. 그리고, 이슈 진행 시간도 바로 표시해 주는 것입니다. 아마도 하다보면 계속 좋은 아이디어가 많이 나올 것 같습니다.

이번에는 3시간반 정도 개발할 수 있었습니다.

두번째 보다 훨씬 메뉴가 복잡해 졌습니다. 그래도 기능이 꽤 많이 들어간 듯 합니다.

현재 상태를 볼 수 있을 뿐 아니라, 즉각 변경도 가능합니다.

우선순위도 지정 가능합니다.

목표 버젼도 변경 가능합니다. 위 화면은 약간 버그가 있는 듯 합니다.

시작일과 마감일을 메뉴에서 볼 수 있고, 선택하면, 변경 가능한 창이 나타납니다.

이슈 목록 필터 입니다. 나에게 지정된 이슈와 모든 이슈를 고를 수 있습니다. 여기서 고르면, Issues 목록이 바뀌게 됩니다.

목표 버젼별로도 이슈를 선택할 수 있습니다. 지정된 목표 버젼의 이슈만 선택할 수됩니다.

약간 이제는 우리가 쓸 수도 있겠다는 생각이 들기 시작합니다. 어쩌면 3일투자 (대략 반나절씩) 치고는 꽤 쓸만한 물건인 것 같습니다. 그리고 앞으로 4번 더 한다면 충분히 공개 가능한 버젼이 나올 듯 합니다.
오늘의 애자일 방법론에 대한 회고 입니다.

  • 어느 정도 자리가 잡힌 듯 합니다.
  • git 의 merge 는 역시 어렵습니다. merge 후, 지난 변경이 돌아간 경우가 몇번 있었습니다. 다같이 동시에 비슷한 부분을 작업을 많이 하다보니, 이 부분의 어려움은 어쩔 수 없는 것 같습니다.
다음주를 기대합니다.

redmine tool – 2nd Iteration

redmine tool – 1st Iteration 에 이은 두번째. 일주일 만에 돌아온 시간입니다.
이번 모임에서, 지난주에 이어서 계속 진행하기로 하였습니다. 지난주 5시간의 투자로 우리는

  • Redmine 의 JSON 인터페이스를 통해서, Mac OS X 앱을 만들어서 이용할 수 있다는 사실을 확인하고
  • 메뉴바 애플리케이션(Status Item) 을 만들어서 손쉽게 접근 가능하면 좋겠다는 희망을 가졌고,
  • 간단하게 나마, 기능 구현을 완성하였습니다.
    • 로그인 성공여부 확인하기
    • 프로젝트 목록 가져오기
    • 해당 프로젝트에 속한 이슈 목록 가져오기
    • 해당 이슈 목록의 웹페이지로 이동하기

지난주에 진행한 것은 위와 같습니다. 아직은 우리도 스스로 쓰기엔 부족함이 많습니다. 하지만, 5시간 투자한 것 치고는 꽤 쓸만한 것이 나왔다는 것에 만족하고 있습니다. 오늘 또 5시간을 더 투자하면 어떤 결과가 될지 기대가 되었습니다.
시작에 앞서, 오늘은 무엇을 할까 고민을 하였습니다. 무엇을 더하면 우리가 쓸만한 놈이 될까? 고민을 해 보았습니다. 토론 끝에 두가지 쟁점이 있었습니다. 우리가 지금 해야 할 것은

  • 여러가지 기능을 추가하는 것인가?
  • UI 적인 기둥을 만들어 보는 것인가?

위 두가지 방향성 중, 토의 끝에, 지금 먼저 해 보고 싶은 것은 UI 적인 기둥을 만드는 것이라 생각했습니다. 왜냐면, 기능적인면은 UI 기둥을 만들면, 쉽게 추가가 가능할 것 같다는 생각이 들었기 때문입니다.
그래서, 어떤 사용 시나리오가 좋을까 고민을 하도록 했습니다. 여기서도 두가지 갈래가 나왔습니다.

  • 윈도우를 기반으로 하고, 맨 왼쪽에 프로젝트 목록을 선택하고, 중간에 이슈 목록을 보여주고, 그리고 맨 오른쪽에 해당 이슈의 상세 내용을 보여주는 것입니다.
  • 메뉴바 내의 메뉴에 표기하는 것입니다. 메뉴에서 현재 프로젝트를 선택하고, 현재 이슈를 선택하고 나면, 메뉴 상단에 현재 선택된 이슈의 내용을 간략하게 보여주고, 거기서 바로 이슈의 상태를 변경하는 것입니다.

위 두가지를 가지고 토론을 했습니다.
위도우 기반으로 했을 때에는,

  • 그 장점으로,
    • 향후, 복잡한 기능성을 대폭 담을 수 있고,
    • 어짜피 결국에는 이런 방식을 해야 하기 때문에, 처음부터 이렇게 시각하는 것이 좋지 않을까
    • 여러 프로젝트에 흩어진 여러 이슈들 간을 편리하게 이동할 수 있다.
  • 단점으로는,
    • 어짜피 모든 기능은 웹에서 이미 다 제공하고 있는데, 굳이 동일한 기능을 똑같이 반복해서 만들 필요가 있을까?
    • 개발중 복잡한 화면 속에서 또다시 이 창을 찾기란 매우 힘들지도 모른다.
    • 5시간 내에 어느정도 틀을 만들어 낼 수 있을까?
메뉴바를 기반으로 했을 때에는,
  • 그 장점으로는,
    • 지난번 만든 것에서, 조금 만 더 손보면 되기 때문에, 쉽게 만들어 낼 수 있겠다.
    • Mac OS X 의 Space 기능으로 화면 전환을 해도, 늘 메뉴에 붙어 있기 때문에, 항상 쉽게 접근해서 쓸 수 있을 것이다.
    • 작업의 특성상, 하나의 이슈에 고정되어 있기 때문에, 그 경우 오히려 편리하다.
  • 단점으로는,
    • 한번에 하나 이상의 이슈는 다룰 수 없는 한계가 있고,
    • 사용성이 직관적이지 않아 불편하고,
    • 많은 기능을 담기에는 한계가 있을 것이다.

위 쟁점을 토론한 결과, 일단은 메뉴바로 기반으로 해 보자는 결론을 냈습니다. 보다 쉽게 구현할 수 있다는 점이 크게 어필한 것 같습니다
메뉴바 기반의 UX 를 생각하고, 그림을 그려 봤습니다. 화이트 보드 상에서 간략하게, 구현이 됐을 때, 사용하는 상황을 대충 그려 보았습니다.

화이트 보드에 그린 모습

메뉴 상단에 몇줄의 메뉴를 통해서 “현재 선택된 이슈”에 대한 간략한 정보 ( 이슈 번호, 이슈 제목, 이슈 상태, 진척도 ) 등을 표시하고, 상태와 진척도는 오른쪽 서브메뉴를 통해서 즉각적으로 수정할 수 있도록 한다. 그리고, 그 아래에 Add Comment 메뉴를 통해서, 커멘트도 바로 기록할 수 있도록 한다. 그리고, 그 하단에는 프로젝트 선택의 서브메뉴에서 “현재의 프로젝트”를 선택하고, 이슈 선택의 서브 메뉴에서 “현재의 이슈”를 선택하도록 한다.
썩 직관성 있는 사용방법은 아니지만, 일단 만들어 보기로 했습니다.
지난번에서 추가해야 할 주요 작업으로는

  • 추가 프로토콜 지원
    • 프로젝트 내용 업데이트, 프로젝트 상태 목록 등
  • Comment 입력 UI 만들기
  • 메뉴바 현재 이슈 내용 표시하기
생각보다 쉽게 진행되는 듯 했다. 하지만, 중간에 생각치 못한 난관이 있었습니다.
  • 프로젝트 업데이트 프로토콜이 생각되로 잘 진행되지 않았습니다.
    • 이는 Content-Type 을 application/json 으로 보내주지 않았기 때문이었습니다.
  • 내친김에 이미지 업로드 기능도 넣고 싶었습니다.
    • 현재 Redmine 1.3 버젼에서는 API 가 지원되지 않는 듯 했습니다.
그리고, 5시간 후, 결과를 만들어 낼 수 있었습니다.

프로젝트 목록 보여주기. 이중 하나를 선택하면, 현재 선택된 프로젝트가 된다.

 
이슈 선택하기. 현재 선택된 프로젝트내의 이슈목록을 보여준다. 이중 하나의 이슈를 선택하면, "현재 선택된 이슈"가 된다.

현재 선택된 이슈는 항상 메뉴 최상단에 그 정보가 보여진다. 위 화면은 진척도를 보여주고, 서브메뉴를 통해서 진척도를 변경할 수 있다.

또한, 현재 이슈의 상태를 볼 수 있고, 그 상태를 바로 변경할 수 있다.

Add Comment 메뉴를 선택하면, 새로운 창이 뜨고, 이 창에서 새로운 Comment 를 입력할 수 있다.

또 다른 5시간을 투자해서, 꽤 쓸만한 기능이 많아 진 것 같습니다. 하지만, 아직은 스스로 매일 매일 쓰고 싶은 상태까지는 아닌 듯 합니다. 항상 두가지가 교차하는 것 같습니다. 5시간으로 꽤 많은 일을 할 수 있다는 것과, 일주이에 한번으로는 여전히 많이 부족하다는 점입니다. (이번주부터는 일주일에 두번 하기로 하였습니다.)
오늘의 애자일 방법론에 대한 회고입니다.

  • 오늘은 대화가 조금 부족했습니다. 대화가 부족하다 보니, 긴장감도 조금 떨어지고, 병목 현상이 많았습니다. 서로가 각자의 맡은 부분을 하다보니, 마지막에 가서야 현재의 상황을 알 수 있었습니다. 이것은 우리가 원래 원하던 그림이 아니었습니다. 다같이 서로 이야기 하면서 진행하는 것인데, 하다보니 대화가 없어지고 각자 하는 스타일로 돌아가 버렸습니다.
  • 위에서 말한 병목현상. 한 사람이 무엇을 먼저 해 주기를 기다립니다. 그리고, 그 사람이 끝나기를 기다리는데, 시간이 꽤 걸립니다. 그리고, 이번에는 그 다음걸 할려고 하는데, 미쳐 생각치 못한 것들이 또 나옵니다. 즉각적으로 대화를 문제를 풀지 못했기 때문인 듯 합니다.
하지만, 몇 사이클이 지나면, 분명 우리 스스로에게는 꽤 쓸만한 물건이 될 것은 같습니다.