메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

IT/모바일

서커 펀치 프로덕션의 개발 비법, 프로그래밍 규칙의 일대기

한빛미디어

|

2024-05-22

|

by 크리스 짐머만

7,086

이 이야기는 제가 겪은 좌절에서 비롯됐습니다.

 

저는 마이크로소프트에서 10년 정도 프로그래밍 팀을 이끌다 1997년에 서커 펀치Sucker Punch라는 게임 회사를 공동 창립했습니다. 두 회사 모두 최고 수준의 프로그래밍 팀을 꾸리고 발전해나가는 능력을 지녔기에 성공을 거뒀습니다. 서커 펀치는 이러한 능력 덕분에 25년 동안 성공적인 게임을 출시할 수 있었습니다. 

 

최고의 라쿤 도둑 ‘슬라이 쿠퍼’와 그 친구들의 스릴 넘치는 삶을 경험할 수 있는 <슬라이 쿠퍼Sly Cooper> 시리즈, 게이머에게 초능력과 함께 그것을 선 또는 악을 위해 사용할 수 있는 선택권을 주는 <인퍼머스inFAMOUS> 시리즈 , 그리고 우리의 최고 역작, 1274년 대마도를 침략한 몽골에 맞서 싸우는 고독한 사무라이가 될 수 있는 <고스트 오브 쓰시마 Ghost of Tsushima>까지 모두 서커 펀치의 작품입니다.

 

좌측 상단부터 인퍼머스, 슬로우 쿠퍼, 고스트 오브 쓰시마 (서커 펀치 프로덕션)

 

젊고 영특한 프로그래머를 뽑아 전문 개발자로 키워내는 과정은 마이크로소프트와 서커 펀치의 채용 전략에서 큰 부분을 차지했습니다. 이 방법은 늘 성공적이었으나 한편으로는 저에게 좌절감을 안겨줬습니다. 같은 문제를 계속 겪었기 때문이죠. 

 

우리는 대학을 갓 졸업한 신입 프로그래머를 채용하곤 했습니다.

 

신입에게는 아주 간단한 문제가 주어졌고, 저는 신입이 작성한 코드를 검토했습니다. 이 과정에서 신입의 코드가 원래 의도였던 간단하고 분명한 문제를 푸는 대신, 이 문제를 하위 케이스로 다루는 훨씬 거대한 문제를 해결하려 한다는 사실을 알게 됐습니다.

 

하지만 거대한 문제를 해결할 필요가 없었습니다. 적어도 당장은 그랬습니다. 물론 거대한 문제를 위한 솔루션은 본디 문제의 목적이었던, 원래 해결해야 하는 단순한 문제를 푸는 평범한 솔루션과 같았습니다. 차이가 있다면 더 이해하기 어렵고, 더 사용하기 어려우며, 훨씬 많은 버그를 감출 수 있다는 것이었죠.

 

그런데 코드 리뷰 과정에서 “거대한 문제를 풀 필요가 없고, 현재 당신이 이해하고 있는 문제만 해결해야 한다”고 백날 말해도 소용이 없었습니다. 신입들은 같은 짓을 반복했습니다. 결국 저는 단호하게 행동했습니다. 

 

 

“새로운 규칙을 발표하겠습니다. 어떤 문제에 대한 세 가지 사례를 확보하지 않는 이상 일반화 솔루션을 작성하면 안 됩니다.

 

놀랍고도 기쁘게도 제 행동은 효과가 있었습니다. 

 

일반적인 철학을 구체적인 기준이 있는 규칙으로 바꿨더니 메시지가 효과적으로 전달됐습니다. 물론 신입 프로그래머 대부분이 여전히 한 번쯤은 미진한 일반화 코드를 만들기도 하지만, 규칙 덕분에 같은 실수를 반복하지 않게 됐습니다. 이 규칙은 신입 프로그래머가 코드를 일반화할 시기를 가늠하는 역할도 했습니다. 

 

예제가 아직 세 개가 안 된다고요? 일반화하지 마세요. 

세 개 이상이라고요? 일반화할 수 있는지 한번 봅시다.

 

이 규칙이 효과가 있었던 것은, 기억하기 쉽고 일반화를 적용해야 하는 상황을 쉽게 판단할 수 있었기 때문입니다. 지금 풀고 있는 문제의 정의된 범위를 벗어나기 시작했다는 사실을 깨달은 신입 프로그래머는 한 걸음 물러나서 그 문제와 관련된 구체적인 사례가 몇 개인지 세어보고, 그에 따라 코드를 일반화할지 여부를 제대로 판단할 수 있게 됐습니다. 더욱 향상된 코드를 작성하게 된 거죠.

 

얼마 후 우리는 서커 펀치의 철학에서 중요한 다른 부분을 기억하기 좋은 문구, 정확히는 격언으로 요약할 수 있음을 알게 됐습니다. 격언은 본질적인 진리를 담고 가진 격언 중에는 널리 알려진 것이 꽤 많습니다. 새와 관련된 격언만 해도 최소 두 가지는 떠오를 것입니다. 제가 알고 있는 몇 가지는 다음과 같습니다.

 

● 알이 깨기 전에 병아리 수를 세지 마라.

● 손안의 새 한 마리가 숲속의 새 두 마리보다 낫다.

● 일찍 일어나는 새가 벌레를 잡는다.

● 달걀을 한 바구니에 담지 마라.

 

격언은 효과가 있기 때문에 오래 살아남습니다. 요즘 말로 격언은 ‘바이럴viral’하죠. 수천 년간 격언은 사람들에게 지혜를 ‘전염’시켰습니다. 따라서 격언이 서커 펀치의 코딩 철학을 새 팀원에게 전염시키는 효과적인 방법이라는 것은 어찌 보면 당연합니다.

 

하나뿐이었던 규칙은 조금씩 늘어나더니 어느덧 규칙 모음이 됐습니다. 『프로그래밍의 규칙』은 바로 그러한 규칙을 정리한 책입니다. 이 규칙은 서커 펀치의 엔지니어링 문화에서 가장 중요한 부분을 대표합니다. 

 

규칙은 우리를 성공으로 이끌었습니다. 서커 펀치에서 팀의 신참 프로그래머가 효과적으로 일하기 위해 반드시 숙지해야 하는 지식이자, 고참 프로그래머도 가끔 되새겨야 하는 내용입니다.

 

책에서는 규칙을 하나씩 설명하고, 규칙 이면에 있는 생각을 알려주는 다양한 예제를 함께 제시합니다. 각 장 하나를 마칠 때마다 해당 규칙이 장려하는 코딩 관습과 규칙이 적용되는 상황을 명확하게 이해할 수 있을 것입니다. 이 책을 통해 서커 펀치만의 규칙이 전염될 수 있을지 두고 보시죠.


위 콘텐츠는 『프로그래밍의 규칙』의 내용을 재구성하여 작성하였습니다.

 

전 세계적으로 천만 장 가까이 판매된 메가 히트 게임, <고스트 오브 쓰시마>와 <슬라이 쿠퍼> 시리즈로 유명한 서커 펀치 프로덕션에는 프로그래밍 규칙이 있습니다. 이 규칙은 서커 펀치의 엔지니어링 문화에서 가장 중요한 부분을 대표하죠. 

 

그들을 성공으로 이끈 이 규칙들은 신참 프로그래머가 효과적으로 일하기 위해 반드시 숙지해야 할 지식이자 고참 프로그래머도 다시금 되새겨야 하는 내용입니다. 

 

창립 이후 25년간 단단히 쌓아 올린 서커 펀치의 프로그래밍 규칙을 『프로그래밍의 규칙』에서 더욱 자세히 확인해 보세요.

댓글 입력
자료실

최근 본 상품0