내가 근무하고 있는 회사의 지원으로 네이버 데뷰 2015에 참가할 수 있었다. 매우 유익하고 즐거운 행사였다! 이런 행사에 참가할 수 있다니, 정말 서울에 와서 일하길 잘했다는 생각이 들었다. 몇가지 흥미로웠던 세션을 정리해 둔다.

세션 4. How Riot Works

발표자: 유석문(Riot Games)

슬라이드: http://www.slideshare.net/deview/142-how-riot-works

리그오브레전드 개발사인 라이엇게임스의 개발 문화를 소개하는 세션이었다.

요즘 유행하는 자유롭고 개방적이고 “쩌는” 사내 문화를 자랑하는 세션이 아닐까 예상했다. 그런 내용은 거의 없었고 주된 내용은 어떻게 개발자가 계속 성장해 나가는 조직이 가능한가에 관한 것이었다. 그리고 그 방법으로는 애자일 개발 방법론을 내세웠다. 꼭 개발 부서에 국한되는 내용은 아니고 우리 회사에서도 배울 점이 많다 생각돼 다른 직원들도 다같이 들었으면 좋았을 것 같다. 간단히 요약해본다.

조직의 종류

조직은 주로 (바람직하지 못한) 두 가지 형태가 있다.

먼저, ‘혼돈의 조직’이다. 혼돈의 조직은

  • 모두가 바쁘다.
  • 완료되는 일은 없다.
  • 헤매는 시간이 많다.
  • 질문에 답하느라 일하는 시간이 부족하다.

이런 조직은 다들 열심히 일하지만 몇 달을 일해도 결과물을 내놓지 못한다.

다른 조직 형태는 ‘관리의 조직’이다. 관리의 조직은 혼돈의 조직의 문제점을 해결하기 위해 중앙집중적인 관리를 도입한 것이다. 여기에는

  • 효율적인 업무 프로세스가 짜여 있다.
  • 관리자가 업무 방식을 관리하고 지시한다.
  • 관리자가 업무 방식을 분석하고 개선한다.
  • 관리자가 모든 것을 독재하는 조직이다.

관리의 조직은 혼돈의 조직보다는 어떻게 일이 돌아가는 것 같지만 많은 문제가 있다.

  • 재미가 없다!
  • 느리다!
  • 오해가 난무한다! (여러 단계의 지시와 보고를 거치는 과정에서)

애자일 방법론과 애자일 조직

‘애자일(agile)’은 ‘민첩하다’, ‘재빠르다’라는 뜻을 가진 말이며 ‘애자일 개발 프로세스’는 클라이언트의 핵심 요구사항 일부를 빠르게 개발하고 다시 빠르게 피드백받는 짧은 개발 주기를 반복하여 시행착오를 줄이는 개발 방법이다. 연사에 따르면 애자일이란,

  • 사용자가 가장 원하는 기능을
  • 제공하여
  • 피드백을 받아
  • 서비스를 점짐적으로 발전시킨다.

기존의 일반적인 개발 방법은 폭포수 프로세스를 따른다. 이 방법은 요구 분석(기획) -> 디자인 -> 코드(프로그래밍) -> 테스트 과정을 차례차례 해나가는 방법이다.

이 방법의 문제점은 기획이 다 되기 전까지, 디자인이 다 되기 전까지는 실제 제품 제작이 시작되지 못한다는 것이다. 만일 정해진 기간동안 실제 작업이 절반밖에 이루어지지 못했다면, 실제로는 제품이 절반 정도 만들어진 것이 아니라, 기획과 디자인만 완성됐고 실 결과물은 전혀 만들어지지 않은 상태가 돼버릴 수도 있다.

그리고 제품이 완성되었을 때 알고보니 고객이 원하는 기능은 다른 것이었다는 걸 사용자가 써 본뒤에야 알게되는 경우도 있을 수 있다. 다시 긴 기획, 디자인, 코드, 테스트 과정을 거쳐야 해 사용자의 피드백을 받는 것이 어려워질 수 있다.

반면에 애자일 개발 방법은 기획, 디자인, 테스트, 코드할 내용을 작은 부분들로 나눠 빠르게 개발하고 빠르게 피드백, 수정 보완할 수 있게 한다. 개발 주기가 짧아짐으로써 각 개발 과정의 병목 현상이 줄어들고 사용자의 피드백을 빠르게 적용할 수 있다.

애자일을 적용하려면 다음과 같은 요소가 꼭 필요하다.

  • 높은 품질의 코드를 개발할 수 있는 개발 조직 (필수적이다. 이게 없으면 안 된다.)
  • 사용자 우선순위로 정렬된 기능 목록
  • 짧은 개발 주기
  • 잦은 피드백
  • 애자일 조직

애자일 방법을 사용하려면 ‘혼돈의 조직’, ‘관리의 조직’이 아니라 ‘애자일 조직’이 필요하다고 한다. 연사는 라이엇게임스의 조직 문화를 예로 들어 애자일 조직을 설명했다.

  • 고객의 경험이 최고의 가치: 라이엇게임스는 개발자가 게이머다. 제품을 개발하는 사람은 사용자의 입장에서 공감할 수 있어야 한다.
  • 권한 위임1: 해당 문제는 담당자가 가장 잘 알고 있다. 그에게 충분한 권한이 있어야 불필요한 보고와 회의 과정을 줄이고 의사결정을 빠르게 할 수 있다. 이를 위해서는 신뢰가 필요하다.
  • 권한 위임2: 직위가 아닌 역할과 책임을 준다. 직위가 있으면 사람들의 목표가 직위 그 자체가 된다. 라이엇게임스에는 직위가 없고 각자 적성에 맞는 역할을 주고 그에 따르는 책임을 갖도록 한다.
  • 정보의 공유: 누구에게나 무엇이든 물어볼 수 있다. 대표에게도 직통으로 메일을 보내 물어볼 수 있다. 모든 회의는 공개되어 있으며 누구나 참석할 수(참석하지 않을 수) 있다.
  • 지속적 발전: 실수는 실패가 아니라 배움의 기회다. 실패한 것을 즐겁게 설명하며 서로 배우는 문화. 문제가 되는 부분을 어떻게 발전시킬지 스스로 결정할 수 있게 한다. 관습에 저항한다.(더 나은 방법이 있으면 적용을 시도함)
  • 가족이 아니라 스포츠 팀

애자일에 대한 오해

애자일 방법론이 한국에 도입될 때는 오해를 낳으면서 잘못 적용되고 있다고 한다. 애자일이 단순히 빠르게 개발하는 방법이라는 오해가 있는데, 애자일이 기존 방법보다 개발기간을 단축시키는 것은 아니다. 그보다는, 빠르고 지속적인 피드백을 통해 삽질을 줄이는 방법이다.

소감

개발자의 지속적인 성장을 강조하는 점은 라이엇게임스와 우리 회사가 크게 다를 것 없다고 느꼈다. 이것은 내가 우리 회사에서 내가 가장 자랑스러워하는 점이다. 연사의 발표를 보면서 우리 회사의 방향이 잘못되지 않았다는 생각이 들었다.

또, 회사 구성원 사이에 사내정치, 장벽, 의사소통의 어려움 같은 게 없다는 것도 우리 회사가 라이엇게임스의 장점과 비슷한 점으로 생각된다.

폭포수 방법이 무조건 잘못된 것은 아니다. 프로그래밍 교과서에 나오는 정석적인 개발 방법이며, 여전히 많은 대기업들이 이 방법을 채택하고 있다. 하지만 작은 스타트업 회사에서는 좀 더 민첩한 개발 프로세스를 적용하는게 합리적일 것 같다. 애자일 이야기가 나온지는 꽤 된 것 같은데 이렇게 한 세션을 할애해서 얘기하는 걸 보면 아직도 도입이 잘 되지 않은 모양이다.