우선순위란 어떤 일을 먼저 처리할지 순서를 정하는 것이다. 프로젝트를 진행하면서 수행해야 하는 수많은 작업들을 몇 개의 그룹으로 나누고, 먼저 처리해야 하는 그룹부터 실행해 나간다. 그럼으로써, 작업 효율을 높일 수 있고, 리스크에 유연하게 대응할 수 있게 된다.
지금까지 여러 개의 프로젝트를 진행해 봤지만, 늘 해야 할 작업 목록은 할 수 있는 범위를 넘어서 있었다. 따라서, 그냥 닥치는 대로 해결하겠다고 덤벼들어서는 정상적인 프로젝트 진행이 어렵다. 무엇을 먼저 해야 할지, 무엇이 나중에 해도 될지, 무엇이 안 해도 상관없는 것인지 구분해야 프로젝트를 앞으로 나아가게 할 수 있다.
우선순위 관리라고 하면, 중요한 것과 중요하지 않은 것, 급한 것과 급하지 않은 것으로 나눈 4개의 그룹을 활용하는 것이 가장 기본적인 형태라고 할 수 있다. 이 외에도 널리 사용되는 여러 가지 우선순위 관리 기법들이 있을 것이다. 그런데, 꼭 그런 관리 기법에 맞춰서 운영을 해야 하는 것은 아니다.
게임을 만들 때, 나는 보통 다음과 같은 그룹으로 우선순위를 나눈다. 첫 번째는 게임을 출시할 때 없어서는 안 되는 항목이다. 이 첫 번째 그룹에 속하는 작업 항목 중 어느 하나라도 완성이 되지 않으면 게임을 출시하지 않는다. 두 번째는 중요하지만, 게임을 출시한 후에 업데이트로 추가해도 되는 항목들이다. 여유가 있으면 출시 전에 작업이 되기도 하지만, 게임 출시 일자에 전혀 영향을 주지 않는다. 세 번째는 그다지 중요하지 않아서 해도 그만 안 해도 그만인 항목들이다. 이 항목들은 앞 두 그룹의 작업에 영향을 미치지 않으면서 여유가 생기면 하고, 그렇지 않으면 그냥 묵혀둔다. 네 번째는, 절대로 작업하지 않을 항목들이다. 네 번째 그룹에 포함된 작업은 여유가 있어도 하지 않는다. 서비스에 좋지 않은 영향을 미칠 항목들이기 때문이다.
각 그룹 안에서도 작업마다 우선순위가 정해지겠지만, 기본적으로 큰 틀은 이런 식으로 잡아 놓는다. 이런 기준을 정해 놓는 것은 작업자들이 우선순위의 기준을 이해하기 쉽도록 하기 위해서였다. '중요한 것 / 중요하지 않은 것', '급한 것 / 급하지 않은 것'이 너무 모호하게 느껴졌기 때문이다.
우선순위 관리도 프로젝트에 따라 좋은 방법이 다 따로 있을 것이다. 알려진 기법을 참고하는 것은 좋지만, 자신의 프로젝트에 적합한 형태가 있다면 그 형태를 활용하는 것이 좋다고 생각한다.
내가 게임을 제작할 때 설정하는 네 그룹 중 마지막 그룹은 '절대로 하지 않을 작업' 그룹이다. 해야 할 모든 작업이 다 완료되어서 여유 시간이 충분하다고 해도, 절대로 하지 말아야 하는 작업들을 담아 놓은 그룹이다.
프로젝트를 진행하다 보면, 여기저기서 많은 아이디어와 요청사항들이 날아온다. 모든 아이디어와 요청사항은 성실히 검토하고, 할 것과 안 할 것을 구분한다. 그리고 할 것은 목록에 남고, 안 할 것은 목록에서 사라진다. 그런데, 그냥 이렇게 목록에서 사라진 채로 있게 되면, 시간이 좀 더 흐른 후에 그 항목이 다시 검토 대상에 올라올 수 있다. 그리고, 이미 검토했던 것을 다시 검토하게 된다. 더 나쁘게는, 과거에 그 항목을 배제한 이유가 생각나지 않아 문제가 있음에도 할 일 목록에 올라가게 될 수도 있다.
프로젝트를 수행하는 기간이 길다면, 한 번 하지 않을 일로 분류한 항목들도 목록으로 가지고 있는 것이 좋다. 상황이 바뀌어서 다시 검토해야 할 필요성이 있더라도, 과거에 하지 않을 것으로 분류했던 사실을 알고 있는 것이 더 좋을 것이다.
사실 이 그룹을 목록으로 만든 실질적인 이유가 하나 더 있다. 분명히 제품에 포함시키지 않기로 합의했는데 다시 말을 꺼내는 경우를 여러 번 겪었기 때문이다. 프로젝트를 진행하면서 같은 얘기를 같은 사람에게 여러 번 해야 하는 경험들이 있었다. 새로운 근거를 제시하는 것도 아니고, 그저 이전에 했던 얘기를 잊어먹은 것처럼 다시 들고 오는 사람들이 있다. 그래서, 공유되는 우선순위 목록에 '하지 않을 일들' 목록을 포함시켜, 이미 안 하기로 한 작업들이 있음을 선언하고자 한 의도가 있었다.
원칙을 세우는 것은 중요하다. 원칙을 지키는 것도 중요하다. 하지만, 때로는 융통성이 필요할 때도 있다. 앞으로 일어날 상황을 완벽히 예측하는 것은 불가능하기 때문에, 어떤 상황에서도 최선이 될 원칙을 만든다는 것은 불가능하다. 그저 충분히 괜찮은 원칙을 만들어놓고, 상황에 따라 유동적으로 적용하는 것이 최선일 것이다.
우선순위 목록을 작성했으면, 우선순위가 높은 작업부터 진행하는 것이 원칙이다. 하지만, 프로젝트에 참여하는 사람마다 바쁜 시기가 다르고, 부여된 업무량도 다르다. 게임 제작 프로젝트의 경우, 기획자가 바쁜 시기와 아티스트가 바쁜 시기, 프로그래머가 바쁜 시기가 완전히 일치하지는 않는다. 그래서 어떤 사람은 눈코 뜰 새 없이 바쁜데, 어떤 사람은 작업이 여유로운 상황이 자주 발생한다. 그럴 때 우선순위는 낮지만, 작업자가 여유 있는 항목의 경우 우선순위를 높여서 먼저 처리할 수도 있을 것이다.
혹은 갑자기 시연 일정이 잡힌다던가 하여 진행 중인 작업의 우선순위조차 변경해야 할 때가 있다. 원래의 계획대로 계속 진행하면 편하겠지만, 새로운 요청사항이나 해결해야 할 문제가 계속 발생하는 것이 프로젝트의 운명이기도 하다. 따라서, 우선순위는 언제나 바뀔 수 있다고 생각하고 있는 것이 좋으며, 바뀐 상황에 맞게 적절히 바꿔가면서 운영할 수 있어야 하겠다.
프로젝트에 요구사항을 추가하는 사람들은 자신의 요구사항이 '중요하다'라고 말한다. 그리고, '중요하니까 우선순위를 높여달라'고도 종종 말한다. 거짓말은 아닐 것이다. 자신들의 요구사항이 중요하다고 생각하기 때문에 프로젝트 중간에 높은 우선순위로 추가하고 싶을 것이다. 그런데, 중요한 일은 그것 하나만이 아니다. 중요한 작업들은 이미 충분히 많고, 그것들은 보통 동시에 진행될 수 없다. 그래서, 중요한 일들 사이에서도 우선순위가 필요하다.
따라서, 새로운 요구사항을 높은 우선순위로 추가하고 싶다면, 단순히 그것이 '중요하다'는 것만으로는 충분하지 않다. 그것이 이미 목록에 올라가 있는 다른 중요한 작업들보다 '더 중요하다'는 것을 프로젝트 진행자들에게 납득시켜야 한다. 그리고 새로운 요구사항을 높은 우선순위로 진행시키기 위해 다른 작업의 우선순위가 낮아지고 일정이 늦어지는 것에 대해서 책임지고 정리할 수 있어야 한다.
우선순위란 그런 것이다. 늘 전체를 봐야 하고, 순위를 바꾸고 싶다면 책임을 질 수 있어야 한다. 바둑에서는 돌을 어떤 위치에 놓는 가뿐만 아니라, 어느 순서로 놓는 가도 굉장히 중요하다. 순서를 제대로 하지 않으면 대국을 망칠 수도 있다. 프로젝트를 진행하면서 수행하는 작업들의 순서도 프로젝트의 운명에 큰 영향을 미친다. 특히, 빡빡한 일정으로 진행되는 프로젝트는 더욱 그러하다. 따라서, 우선순위를 관리하는 사람이나, 우선순위에 변화를 주고 싶어 하는 사람 모두, 프로젝트의 성패에 대해 큰 책임감을 가지고 임해야 할 것이다.
1. 프로젝트에 적합한 기준을 찾자
유명한 기법이 프로젝트에 적합하다면 그것을 사용하면 된다.
프로젝트에 적합한 기준을 따로 설정할 수 있으면 따로 설정하는 것도 좋다.
우선순위를 나누는 기준이 프로젝트 진행자들에게 쉽게 이해될 수 있는 것이 좋다.
2. 하지 않을 일 목록을 만들어 두자
우선순위 목록의 마지막에는 '하지 않을 일' 목록을 추가해 두자.
안 하기로 한 것에 대해 동일한 의견이 반복되어 제시되거나, 이미 했던 검토를 잊고 다시 하게 되는 실수를 줄여준다.
3. 융통성을 발휘하자
미래에 벌어질 일을 미리 예측할 수는 없기 때문에, 프로젝트 진행상의 여러 원칙은 유연하게 활용할 수 있어야 한다.
작업자의 작업 상황에 따라, 우선순위가 낮았던 작업을 높은 우선순위로 변경하여 진행할 수도 있다.
이미 진행 중인 작업의 우선순위조차도 바뀔 수 있다는 생각을 가지고 운영하는 것이 좋겠다.