코드배틀(Code Battle)#

코드배틀(Code Battle)은 필자가 운영 중인 웹사이트로, 내 코드와 상대 코드가 턴(TURN) 단위로 1:1 대결을 벌이는 게임입니다. 게임은 여러 개의 라운드(ROUND)로 구성되고, 라운드는 여러 개의 턴으로 구성됩니다. 각 턴에서 “나의 선택”과 “상대의 선택”이 승/패와 점수를 만들고, 그 결과가 누적되어 라운드 승/패와 게임 승/패가 결정됩니다.

코드배틀 사이트 (https://codebattle.online/)

코드배틀은 무엇인가(What)#

코드배틀의 핵심은 “정답을 맞히는 코딩”이라기보다, 전략을 코드로 구현해 상대를 이기는 구조입니다. 단순히 문제를 풀고 끝나는 것이 아니라, 상대의 패턴을 분석하고, 다음 턴을 예측하고, 그 예측을 코드로 반영해 대결의 흐름을 만든다는 점이 특징입니다.

사이트에는 다음과 같은 게임들이 준비되어 있습니다.

  • Rock Scissors Paper: 가위/바위/보를 매 턴 선택하고, 이길 때 선택에 따라 점수가 달라지는 구조
  • Five in a Row(오목): 15x15 교차점에서 돌 좌표를 턴마다 반환하며 대결
  • Bulls and Cows: 3자리 숫자를 맞히는 추리 게임(동시 정답이면 더 큰 수가 승리)
  • Sutda: 2장의 화투(또는 카드) 조합과 베팅으로 승부
  • SK Planet 행사 전용 게임들: 2021~2023년 행사 세션 운영을 위해 제작된 여러 변형 게임들

왜 해야 하나(Why)#

코드배틀을 “재미”만으로 정의하면, 코드배틀의 절반만 본 것이라고 생각합니다. 필자가 경험한 코드배틀의 장점은 아래에 더 가깝습니다.

  • 전략 능력이 올라갑니다: 턴 단위로 의사결정이 반복되기 때문에, “이길 확률이 높은 전략”을 설계하고 수정하는 경험을 하게 됩니다.
  • 코딩 실력이 실전적으로 다듬어집니다: 생각한 전략을 그대로 코드로 옮겨야 하고, 디버깅을 통해 실행 흐름을 맞춰야 합니다.
  • 머신러닝/데이터 분석과도 연결됩니다: 상대의 선택 로그를 수집해 패턴을 찾아내고, 이를 기반으로 전략을 고도화할 수 있습니다.
  • 개발자 행사에서 분위기를 만들기 좋습니다: 대진표를 짜고 토너먼트 형태로 진행하면 “응원”이 붙고, 사람들의 몰입도가 올라갑니다.

어떻게 하는가(How)#

코드배틀은 기본적으로 아래 흐름으로 진행됩니다.

  • 게임을 선택하고 게임 화면으로 이동합니다. 설치도 가입도 필요 없습니다.
  • 규칙 카드를 확인한 뒤, 코드 영역에 미리 올라와 있는 기본 코드를 고쳐 나의 전략 코드를 작성합니다. 게임 화면 아래에는 전략 해설이 있어, 단계별 전략 코드와 그 코드가 내장 AI 상대로 실제로 낸 성적을 함께 볼 수 있습니다.
  • 상대를 고르고 게임 시작을 누르면 턴 / 라운드 / 게임 결과가 기록되고, printLog()로 남긴 로그가 화면 하단의 로그 영역에 출력됩니다.
  • 처음에는 상대를 RANDOM으로 두고 디버깅과 검증을 한 뒤, RANDOM을 이기면 LEVEL 1, LEVEL 2, LEVEL 3 순으로 올라가는 흐름이 좋습니다.
  • 코딩 에이전트에게 맡겨도 됩니다. 게임마다 에이전트용 스펙 문서가 고정 주소에 있습니다(예: 오목 스펙). 에이전트에게 그 주소를 주고 “이 스펙만 읽고 이길 코드를 써 줘"라고 하면 됩니다. 스펙은 사람이 보는 화면과 같은 출처에서 만들어지므로 규칙과 코드 계약이 어긋나지 않습니다.
  • 코드 아레나에서는 내 코드를 출전시켜 둘 수 있습니다. 출전 코드는 공개되고, 다른 회원이 도전한 결과가 공개 전적으로 쌓입니다. 지금은 가위바위보와 오목에서 열려 있습니다(오목 아레나).
  • 온라인 1:1 실시간 대전은 Google 계정으로 로그인한 회원끼리 할 수 있습니다.

개발 계기: “행사의 하이라이트였던 코드배틀을 웹으로”#

필자가 네오위즈에 재직하던 시절, 연말에 내부 개발자 행사가 있었고 그 행사의 하이라이트가 코드배틀 세션이었습니다. 행사 전에 참가 신청을 받고, 예선을 통해 8강을 확정한 뒤 대진표를 짜고, 행사 당일에는 8강전 → 4강전 → 결승전을 진행했습니다.

당시에 필자는 꽤 강자였는데, 그 덕분에 동료들에게 좋은 평판을 얻는 데에도 적지 않은 영향을 줬다고 생각합니다. 무엇보다 인상 깊었던 건 행사장 분위기였습니다. 각 참여자는 저마다 소속이 있고 응원하는 사람이 있다 보니, 분위기가 마치 경마장처럼 뜨거워졌습니다.

그런데 이렇게 좋은 분위기의 코드배틀 세션이 2011년을 마지막으로 사라졌습니다. 2006년부터 이어지다가, 2011년을 끝으로 역사 속으로 사라진 셈입니다. 당시 기술 회사들이 오픈 컨퍼런스를 많이 열기 시작했고, 네오위즈도 내부 행사를 대신해 오픈 컨퍼런스로 방향을 잡으면서, 코드배틀을 오픈 컨퍼런스의 한 세션으로 운영하기엔 부담이 있다고 판단했던 것 같습니다.

코드배틀이 사라지고 몇 년이 지난 뒤, 문득 “이걸 아예 웹사이트로 만들어 두면 어떨까?”라는 생각이 들었습니다. 그래서 2017년에 코드배틀 사이트를 오픈했습니다.

활용 사례 1: 개발자 채용 코딩 테스트 도구#

필자는 과거에 개발자 채용 과정에서 코딩 테스트 도구로 코드배틀을 사용해 본 적이 있습니다. 당시 보편적인 코딩 테스트는 알고리즘 문제 풀이였는데, 필자에게는 그것이 너무 천편일률적으로 느껴졌고, 어딘가 IQ 테스트 같은 느낌도 있었습니다. 또한 대면 인터뷰에서 대화를 할 때, 문제 풀이만으로는 이야깃거리가 풍부하지 않다고 생각했습니다.

그래서 코드배틀을 시도해 봤는데, 코드배틀의 컨셉을 이해한 사람에게는 분명 장점이 드러났습니다. 다만 문제가 하나 있었는데, 꽤 많은 비율의 사람들이 컨셉 자체를 이해하지 못했다는 점입니다.

그럼에도 필자는 긍정적인 면이 더 크다고 판단해 한동안 계속 사용했습니다. 이후 이직을 하면서 더 이상 활용하지 않게 되었는데, 이직 전 회사에서는 의사결정권자였지만 이직 후 회사에서는 의사결정권자가 아니었고, 의견을 내긴 했지만 받아들여지지는 않았습니다.

활용 사례 2: SK플래닛 내부 개발자 행사(2021~2023)#

2021년에 SK플래닛 지인이 갑자기 예전 네오위즈 코드배틀 행사에 대해 문의를 해왔습니다. SK플래닛에서 내부 개발자 행사를 기획하는데, 코드배틀 세션을 넣고 싶다는 이야기였습니다. 당시 SK플래닛 CTO였던 분도 네오위즈 시절 인연이 있던 분이었고, 그때의 분위기를 다시 만들고 싶어 했습니다.

필자는 단박에 “콜”을 했고, 나름의 행사 기획서를 작성해 전달했습니다. 그리고 실제 행사에서 코드배틀 사이트를 사용했고, 그렇게 3년간(2021~2023) 행사를 이어갔습니다. 피드백을 봤을 때도 전반적으로 꽤 긍정적이어서 계속 이어지는 흐름이었지만, 회사의 상황이 바뀌면서 행사 자체가 없어지게 되었습니다.

2021년
코드배틀 - SK플래닛 개발자 행사 화면(2021)
2022년
코드배틀 - SK플래닛 개발자 행사 화면(2022)
2023년
코드배틀 - SK플래닛 개발자 행사 화면(2023)

2026년: 행사 도구에서 전략 대전 플랫폼으로#

2026년 1월 리뉴얼 때만 해도 방향은 “개발자 행사에서 확실히 잘 돌아가는 도구"였습니다. 그 뒤 반년 동안 방향을 한 번 더 고쳐 잡았습니다. 지금 코드배틀을 한 줄로 말하면 이렇습니다.

전략을 코드로 짜서 대결한다. 직접 짜도 되고, 코딩 에이전트에게 스펙을 먹여도 된다.

계기는 둘입니다. 첫째, 개발자가 코드를 직접 타이핑하는 일이 급격히 줄고 코딩 에이전트(파일을 읽고 쓰고 실행까지 하는 AI 도구)가 일상이 됐습니다. 코드배틀의 경쟁 단위는 처음부터 코드가 아니라 전략이었으므로, 구현을 에이전트가 대신하는 시대는 오히려 진입 장벽을 없애 줍니다. 전략을 말로 설명할 수 있으면 누구나 참가자입니다. 둘째, AI로 하는 일 대부분은 결과가 좋은지 판정할 기준이 없는데, 게임에는 승패가 있습니다. 같은 도구를 쓰는데도 승패가 갈린다는 것, 그것이 이 서비스가 보여 주는 것입니다.

2026년 7월부터 9월까지 이 방향으로 바꾼 것들입니다.

  • 사용자 코드 실행을 브라우저 안으로 옮겼습니다. 코드는 서버가 아니라 각자의 브라우저 Worker(별도 스레드)에서 콜백당 2초 제한으로 돌고, 네트워크는 차단됩니다. 동시 접속에 약하던 구조가 사라졌습니다.
  • Google 로그인과 회원 기반을 넣었습니다. 전략 코드를 계정에 저장하고, 게임당 이름 붙인 버전을 여러 개 둘 수 있습니다.
  • 코드 아레나를 열었습니다. 내 코드를 출전시키면 다른 회원이 도전하고, 서버는 사용자 코드를 실행하지 않은 채 기록된 수만 규칙 엔진으로 다시 계산해 결과를 검증합니다.
  • 게임 화면마다 전략 해설을 붙였습니다. 해설이 주장하는 성적은 모두 실제로 측정했고, 저장소의 테스트가 배포 때마다 다시 확인합니다.
  • 에이전트용 스펙을 만들었습니다. 게임별 스펙이 markdown으로 제공되고, /llms.txt가 네 스펙을 나열합니다. 스펙만 읽은 에이전트가 실격 없는 코드를 한 번에 내는 것을 네 게임 모두에서 확인했습니다.
  • 그 밖에 정적 파일 압축, 게임별 공유 카드, 검색엔진이 색인하는 기본 언어의 한국어 전환처럼 유입을 받을 준비를 끝냈습니다.

앞으로의 방향#

  • 마케팅을 시작하려 합니다. 2026년 9월에 계획과 운영 준비를 마쳤고, 이 글들을 내보내는 것이 첫 실행입니다. 목적은 매출이 아니라 노출, 매력 검증, 그리고 마케팅이라는 행위를 직접 해 보는 훈련입니다. 첫 캠페인은 코딩 에이전트에게 오목 스펙만 주고 받은 코드를, 사람이 화면에서 배우는 최선의 전략과 붙여 본 실험입니다. 과정과 결과는 스펙 문서 하나만 읽은 코딩 에이전트는 오목을 얼마나 잘 두는가에 정리했습니다.
  • 개발자 행사 활용은 여전히 유효한 쓰임새라 안내 화면(행사 안내)과 문의 동선을 두었지만, 지금은 적극적으로 알리지 않습니다. 개인 사용자의 반응을 먼저 봅니다.
  • 유료 기능은 없으며, 당분간 무료로 운영합니다.

개발 히스토리(History)#

개발 히스토리는 하위 문서로 분리해 정리했습니다.