리모티하게 일하기 2

약 한달 전 Remotty하게 일하기라는 제목으로, Remotty 그룹의 일하는 방식에 대해 포스팅을 했었다.
포스트에서 소개한 방법대로 약 한달 가량 remote 방식으로 협업을 해보니, 불편한 점이 한두가지가 아니었다.

나름 효율적으로 협업을 하기 위해, 각각의 활동에 최적화(?)된 도구를 선정하고 그것을 사용하기로 했었는데
가장 큰 문제는 사용해야 할 도구가 너무 많아 커뮤니케이션이 분산된다는 것이었다.

페이스북, 트렐로, 구글 드라이브, 에버노트…
모두 다 좋은 도구다. 잘만 활용한다면 좋은 커뮤니케이션 도구로 사용할 수 있다.
하지만 개발자들간의 협업에 있어서 소스코드가 제일 중요할 수 밖에 없고,
그 커뮤니케이션의 중심에 github가 있는 것은 당연지사.

결국 github로 돌아오게 되더라.
이슈 관리도, 일정 관리도, 대화도, 각종 문서 정리도, 대화도…
모든 커뮤니케이션을 github안에서 해결할 수 있는 방법을 찾게 되었다.

그래서 결론을 얘기하면, 현재는 아래와 같은 방식으로 협업을 하고 있다.

  • 태스크 관리
    트렐로 github 이슈 + Waffle

  • 문서 공유
    에버노트 or 구글 드라이브 github 위키

  • 단체 코딩
    MadEye

  • 소스 관리
    github

  • 잡다구리한 이야기들 + 각종 대화 & 논의 + 그 외 모든 의사소통
    페이스북 포스트 or 메신저 HipChat

  • 기타 파일 공유
    드롭박스 HipChat으로 전달. 파일 관리는 따로 안함.
    정말 지속적으로 관리할 필요가 있는 파일이 있다면 github에 올려도 될 것 같음

  • 오프라인 모임

    • 공식 모임
      월 1회
      지난 한달간 진행상황 점검 & 향후 한달 계획 수립
      각종 의사결정 및 이슈 정리
    • 비공식 모임
      매주 토요일
      그냥 모여서 다 같이 코딩

여기 이전 포스트에 소개되지 않았던 새로운 도구가 등장한다.
바로 WaffleHipChat이다. 이 두가지를 한번 소개해본다.

Waffle

쉽게 말해서 github의 이슈들을 dashboard 형태로 보여주는 도구이다.
그것이 전부이다.
github 이슈는 단순히 목록 형태로 쭉 펼쳐져서 보이기 때문에,
원하는 것들을 필터링 해서 보거나 한눈에 dashboard 형태로 보기가 어렵다.
그러한 불편함을 해소해주는 도구가 바로 Waffle이다.
눈에 보기 쉽게 Column을 만들고 그 안에 github에 등록된 이슈들이 list 형태로 뿌려진다.
얼핏 보기엔 trello와 비슷해 보인다.
github의 이슈들이 trello의 card 형태로 나타나고, drag&drop으로 쉽게 상태를 변경할 수 있다.
Waffle에서 생성한 Column은 github 이슈의 라벨로 나타난다.
Waffle에서도 이슈를 등록할 수 있고, 당연히 github 이슈에도 등록이 된다.
백날 얘기해봤자 머리속의 상상만으로는 잘 이해가 안된다. 아래 사진을 보면 딱 이해가 될 것이다.

waffle

HipChat

기본적으로 메신저는 실시간성이다.
온라인상의 누군가에게 메시지를 보내고 그것을 본 누군가는 응답을 한다. 이것이 메신저의 기본 개념.
하지만 단체 채팅의 경우는 상황이 좀 다르다.
대화가 오고 갈때 온라인상에 없었던 사용자는 그 대화에 참여할 수 없게 되고 그때 오고 갔던 대화의 내용들은 놓치게 된다.
물론 스크롤을 쭉~ 올려서 찾아서 읽으면 된다.
당연히 그렇게 필요한 사람이 내가 놓친 내용을 꼼꼼히 스스로 찾아 읽으면 되지만, 잘 되지 않는다.
그리고 지난 대화들을 찾아서 본다 하더라도 이미 마무리 된 대화를 또다시 개진하려면 좀 뒷북치는 느낌이다. ;;
물론 하면 되지만, 대부분의 메신저 도구들은 실시간성에 UI가 맞추어져 있다.

그렇다. 우리에게 필요한 것은 바로 비동기 채팅이다.
비동기 채팅이란, 한마디로 “로그를 읽는다”라는 개념이다. 대화의 기록을 보고 자신의 생각을 그냥 얘기하면 된다.
IRC가 바로 이러한 비동기 채팅에 적합한 도구이다. 하지만 왠지 irc는 말만 들어도 겁이 난다.(왜일까… ㅡ,.ㅡ;;)
이러한 용도로 최적화 된 툴이 바로 HipChat이다.

HipChat은 개발자들에게 좀 특화된 메신저 도구여서, 대화창에 각종 코드도 쓸 수 있다.
“/code”라고 prefix를 붙히면, 뒤에 따라오는 코드는 포맷팅이 되어 읽기 쉽게 나타난다.

뿐만 아니라 github와도 연동을 시킬 수 있어서, github에서 일어나는 모든 event를 hipchat에서 받을 수 있다.
hipchat의 api가 공개되어 있어서, github외에 다른 이벤트들도 hipchat에 전달하도록 구현할 수 있다.
여러 환경에서 활용 가능하도록, 각 언어별로 library를 제공하고 있다.(참고: HipChat Libraries & Plugins)
ruby 코드로 2줄이면 hipchat에 message를 날릴 수 있다.

1
2
client = HipChat::Client.new(api_token)
client['my room'].send('username', 'I talk')

HipChat이 제공하는 또다른 killer 기능이 있다. 바로 notify 기능이다.
대화를 할때 ‘@’ 표시와 함께 대상자에 대한 mention을 표기할 수 있는데, @로 mention을 날리면 상대방에게 notify가 간다.
상대방이 온라인이 아니더라도 mention을 받게 되면 notify가 오게 되고, 그때 대화에 동참하면 된다.
그리고 notify는 메일로도 전송되기 때문에, 내가 없는 자리에서 나와 관련된 중요한 대화가 오고 갔는지를 알 수 있다.
내가 없는 자리에서 오고 갔던 대화 히스토리에 나에게 mention 표시가 되어 있는 전/후의 내용을 좀 더 주의 깊게 보면 된다.
mention은 @all 이런 식으로 사용할 수도 있다. 당연히 모든 멤버에게 mention을 날린다는 의미다.
대화 중, 특정 누군가에게 또는 모두에게 공유해야 할 내용이 있을 때, @로 mention을 날리면 된다.

비동기 채팅에 notify 기능이 합쳐지고, 코드에 대한 마크업 기능까지…
remote로 일하는 개발 그룹에 꼭 필요한 도구이다!

하지만 단점이 있다.
5명 이상인 경우엔 유료라는 것. (매월 1명당 2$씩)
한달에 2$면 커피한잔 가격도 안된다.
효과적인 커뮤니케이션을 위해 한달에 커피 한잔 정도는 절약하는건 어떨까? ^^

장재휴

Comments