January 22, 2022

해야만 하는 일이 있다

어떤 일들은 반드시 일을 시작하기 전, 처음에 해야만 한다. 그런 일들은 만 명중 만 모두 동의하는 것이기도 하고, 또 모두가 동의하지 않아 우선순위에서 밀리는 것들이 있기 마련이다. 어느새 일을 시작한 날이 오래되어 많은 사람들과 일하면서 느낀 것이 있는데, 사람들이 생각하기에 중요한 일은 다 중요한 일이 아니고 대강 이렇게 두 가지가 있다고 믿는 것 같다. 중요하고 필수적인 것, 그리고 중요하지만 필수적이지는 않은 것. 그렇기 때문에 전자의 경우 처음에 진행하는 것에 아무런 이견을 달지 않지만, 다른 일은 반대하는 사람들이 생긴다. 여기서 포인트는 전자나 후자 모두 그것이 중요하다는 것에는 한결같이 동의한다는 것이다. 다만 각각이 생각하는 우선 순위가 다른 것. 회사일로 따지면 보통 중요한 것 중, 그중에서도 중요하다고 여기는 것들은 결과물을 낼 수 있는 프로그래밍 코드나 컴파일된 바이너리가 조금 더 그런 경향이 있는 것 같고, 그 이외의 것들, 예를 들어 배포 시스템이 중요하지만 우선순위가 낮다고 생각하는 것 같다.

잠깐 다른 이야기를 하면, 나는 게임을 상당히 좋아하는 편이다. 운이 좋게도 어렸을 때 하루종일 많은 게임을 하더라도 집에서 딱히 혼내거나 하진 않아서 남들보다 더 많은 게임을 편하게 했다. 거기다 형제가 있어 게임 위 자연스러운 경쟁 관계를 가지게 되었다. 그런 환경에서 살았기 때문에, 지금은 무슨 게임을 하더라도 대부분의 사람들보다 빠르게 게임에 적응할 수 있게 되고 더 높은 실력을 낼 수 있게 되었다. 특히 사람과의 경쟁이 있는 게임은 특히 더 그러는 편인데, 이런 히스토리를 모르는 사람들은 이제, 게임에 재능이 있는거 아니냐, 집에서 아무것도 안하고 게임만 하는 것이 아니냐 하는 이야기도 종종 듣는다.

게임을 잘 하기 위해서 제일 필요한 것은 무엇인가? 게임마다 그 목표는 다르지만 결국 달성해야 하는 것은 확실하다. 목적을 달성한다는 것이 바로 그것이다. 여러 장르의 게임이 있고 목적이 다 다르므로, 잘 한다의 기준이 다르니 여기서는 기준을 조금 좁혀서, 사람과 경쟁하는 것으로만 좁혀서 생각해 보자. 격투 게임이라면 내 캐릭터의 성능을 바르게 파악하는 것, 그래서 기술을 파악하고 상대보다 덜 맞고 더 때리는 것이 승리의 조건이다. 전략 시뮬레이션, 스타크래프트로 예를 들면 최적화된 빌드 오더를 실수없이 수행한다거나, 돌발 상황에서 유리함으로 이끄는 판단력 등이 필요하다. 그러나 이런 것들은 보통 나와 경쟁 상대가 이미 잘 하는 상황에서, 상대보다 더 필요한 능력이다. 서로 처음 시작했을 때, 완전한 제로에서 시작했다면 상대보다 더 필요한 것은 바로 능숙한 조작 능력이다.

hadoken

격투 게임에서는 버튼을 눌러 거기에 대응하는 기본기를 내는 것 이외에도, 방향키를 복잡하게 조작하여 특별한 기술을 낼 수 있다. 그리고 이런 기술들은 기본기보다 성능과 판정 모두 뛰어나서, 필요할 때 이런 기술을 쉽게 낼 수 있으면 대개 승리할 수 있다. 기본기로 닿지 않는 거리에서 상대를 견제하는 수단은 장풍이라고 불리는 파동권류 기술밖에 없고, 이를 통해 먼 거리의 상대 움직임에 제약을 줄 수 있는 것이다. 즉, 승리하기 위해서는 적절한 상황에 기술을 낼 수 있어야 한다. 적절한 상황에 기술을 낼 수 있어야 한다는 것, 이것은 일반적으로 적절한 상황을 읽는 판단력을 이야기한다. 그러나 여기 이 글에서는 기술을 낼 수 있어야 한다에 대한 이야기를 하려고 한다.

기술의 조작은 쉬운 것부터 어려운 것까지 있으며, 보통 성능 좋은 것들은 복잡한 경향이 있는 편이다. 초보자들의 경우 이런 기술을 쓸 때의 과정이 대략 기술을 써야겠군->방향키를 이렇게 돌리고->버튼을 눌러야겠다가 된다. 그래서 판단이 바로 기술로 이어지지 않는다. 거기에 추가로 그 발동 성공률에도 차이가 있다. 판단이 결과로 이어지지 않을 수도 있는 것이다. 일반적으로 잘 하는 사람들이란 기술을 써야겠군이라는 판단과 기술의 발동이 동시에 이루어진다. 그리고 그 발동이 실패하지도 않는다. 55프레임을 모아야 나가는 소닉붐이 거의 55~56프레임 사이로 정확하게 발동한다. 즉 과정 자체가 아예 다르다.

스타크래프트로 치면 유닛에 명령을 내리기 위해 마우스로 바닥이든 명령이든 뭔가를 클릭하는 것이 아니라, 적절한 단축키를 상황에 맞추어 낸다. 거기다 유닛, 명령 뿐 아니라 화면 지정 단축키까지도 사용한다. 판단의 과정이 명령을 내려야겠군->유닛의 위치를 찾아서->공격 명령을 내려야겠다 가 아니라 선택된 유닛이 여기로 공격을 가야겠다로 다른 것이다. 아직도 스타크래프트의 자원에는 미네랄과 가스만 있다고 생각하는 사람들이 많지만 이 게임에는 사실 시간이라는 자원도 있으며, 조작의 능숙함이 이 시간이라는 자원을 더 얻을 수 있게 만들어준다.

게임을 잘 하기 위해 더 잘 때리고 더 잘 싸우는 다소 막연한 능력을 얻으려 노력하는 것보다(그리고 그런 것들은 보통 얻기도 힘든 능력이다), 달성하기 쉽고 연습한 만큼 빠르게 늘 수 있는 조작을 더 익숙하게 만드는 것이 더 중요하다는 뜻이다. 조작 능력이 익숙할수록 판단의 과정을 더 줄여줄 수 있고, 다른 중요한 것에 더 집중할 수 있다. 그래서 조작은 우리가 생각하는 중요도보다 훨씬 더 중요하다. 반드시 익숙해지도록 훈련이 필요한 능력이다. 그리고 대부분의 사람은 움직일 수 있고 원하는 것을 할 수 있으면 조작에서 더이상 달성할 것이 없다고 생각하고 그것을 크게 중요하다고 여기지 않는다.

연차가 많아지고 다닌 회사가 많아지면서, 그리고 작은 회사와 큰 회사, 그리고 국내에서 가장 큰 IT회사 등등… 여러 회사에서 일하며 느낀 것은 가장 위에서 말한 그런 것이다. 누구나 중요하다고 생각하면서도 신기하게 우선 순위는 높다고 생각하지 않고, 다른 일들을 먼저 처리하는 것. 지나고 보면 더 급했다고 생각한 것들은 정말로 아무것도 아니었는데 말이다.

기존의 미니 보드 odroid-u3에 구축된 쿠버네티스 시스템이 있었는데, 이번에 드디어 라즈베리 파이로 시스템을 다시 구축하였다. 그래서 기존 클러스터에 있던 job과 시스템을 마이그레이션 하는 중인데, 오늘 다소 장황한 이 글을 작성하는 이유는 여기에 구축된 시스템 때문이었다. 글을 많이 쓰고 있지는 않았지만 그래도 여기 블로그와 옆 위키에는 글을 작성하면 자동으로 빌드되어 배포가 되도록 구성해 놓은 적이 있다. 글을 작성하고 master 브랜치에 push하는 것으로 트리거가 발생하고, 이것이 job을 실행하도록 하여 블로그와 위키에 글을 자동 발행되도록 만든 배포 시스템인데, 이것을 만든 것이 2019년 말 쯤이었다. 그리고 이 시스템이 있었기 때문에 나는 판단의 과정, 여기서는 발행의 과정을 줄일 수 있었다. 작성한 글을 발행해야지->작성한 글을 여기서 받아놓고->hugo로 빌드하고->결과를 이쪽에 복사하고->deployment를 업데이트해야겠다라는 복잡한 과정이, master에 올려야지로 간단하게 줄어들었다. 필요한 것은 글을 발행하는 것이었고 그 과정은 줄었다. 그리고 그것이 2년 반 동안 문제없이 수행되었고, 여러가지 번거로운 과정이 있는지도 몰랐을 정도로 그 기간동안 충분하게 이득을 누렸다. 엄청나게 잘 구축할 필요도 없었던, 단순히 빌드 과정이 자동화된 정도로만 해 놓아도 그런 이득이 발생한 것이다. 그런 면에서 생각해 보면, 필요한 만큼만 시스템이 구축되어도 충분하게 이득이라는 것. 여기서 필요한 만큼이란 단계를 하나로 줄이고 자동화한 것이며, 이것만 어떻게든 달성되어도 어마어마하게 잘 구축된 시스템과 동일한 이득을 누린다는 것이다.

그래서 하고 싶은 말은, 프로젝트 시작 전 모두가 중요하다고 생각하면서도 그렇게 생각하지 않는 작업들이 있다면, 그리고 그것이 앞으로 진행될 개발에 자명한, 자명하지 않더라도 큰 이득을 줄 수 있겠다 판단하면, 사람들이 반대하더라도 필요한 그것을 구축하는 것이 좋다. 그리고 최대한 프로젝트 초반에 빨리 구축될수록 좋다. 그런 것이 만약 배포라면 판단의 과정, 발행의 과정처럼 그리고 개발 사이클의 과정을 줄일 수 있다. 그리고 내 생각에… 이런 시스템들은 대개 잘 구축되지 않아도 된다. 물론 잘 되면 좋지만 중요한 것은 달성해야 하는 목표, 필요한 단계를 줄여주는 것, 그것만 달성하면 되는 것이다. 잘 되었든 아니든간에 어차피 누릴 수 있는 이득은 동일하기 때문이다.