천하제일 입코딩 대회 (with GitHub Copilot) 참가 후기 (feat. 2등)

오다혜·2025년 6월 30일

여운이 가시기 전에 대회 참가 후기를 짧게 적어보려고 한다.

신청 계기

어김없이 인스타의 세계에서 신나는 서핑을 즐기다가 우연히 대회 광고글을 보게 되었다. ‘천하제일 입코딩 대회’ 라니, 최근 AI 에 빠져 살던 나에게 딱 알맞은 대회라고 생각했다.

대회는 6월 28일이었는데 무려 한 달이나 전에 신청했다. 내가 신청할 때는 자리가 널널했는데 나중에는 신청 대기자랑 문의자가 굉장히 많았다고 들었다. 아마도.. 상품이 공개됐기 때문이 아닐까. 대감집(MS)가 주최하는 행사여서인지 몰라도 상품이 두둑했다.

그치만 이 휘황찬란한 보상 때문에 신청한 건 진짜 아니다. 입코딩 챔피언이 될 생각은 솔직히 손톱만큼도 없었고 그냥 다른 사람들이 얼마나 AI 를 잘 쓰는지 구경하고 싶은 마음 하나로 신청했다. ‘드디어 개발자가 AI 에게 대체되는 날이 오는 걸까?’, ‘잘하는 사람들이 입으로 코딩하면 나는 이제 해고되는 걸까?’ 이런 알 수 없는 불안감을 항상 갖고 있었기 때문에 내 두 눈으로 직접 사람들의 실력을 확인하고 싶었다.

키노트

무려 Github copilot 팀에서 근무하고 계시는 Klair Baek 님이 잠깐 연설하시는 시간이 있었는데 생각했던 것보다 훨~씬 유익했다. 듣느라 필기를 거의 안 해서 내용이 전부 기억나는 것은 아니지만,

  1. 시니어 레벨에서는 본인 스타일이 확고해서 오히려 AI 를 받아들이기 어려워 하고, 주니어는 무분별하게 AI 의 추천을 승인하는 경우가 많다.
    • 따라서 최대한 시니어가 주니어의 코드 리뷰를 해주는 환경을 만들려고 한다.
  2. 유튜브에서 하는 말 듣지 마라. 자동화해서 몇 천 만원 번다느니.. 코파일럿 팀에서 일하고 있는 본인도 그 방식으로 5천만원 못 번다고 함.
  3. AI 가 개발자를 대체하는 날은 아직 한참 멀었다. 걱정하지 마라.
    • 진짜 잘하는 개발자들은 매일 전쟁터에 나가듯 일하고 있다. 링크드인이나 유튜브 등 소셜미디어에 나오는 내용을 분별력 있게 받아들여라.
  4. 다만, 주니어 개발자들은 기본기(fundamental)를 갈고 닦아야 하는데 중요하게 생각하지 않는 사람들이 많은 것 같다. 알고리즘, structure 등 기본에 충실해라
  5. (추가) 한국인들이 너무 겸손하다. 본인이 어떤 역량을 가지고 있는지 PR 할 수 있어야 한다.

copilot 개발자가 AI 를 생각하는 견해를 직접 들으니 좀 안심이 됐다. 나를 대체하기는 아직 멀었구나..^^ 알고리즘이나 풀고 영어 공부를 더 해야겠다고 생각했다.

대회

본격적으로 대회가 시작됐다. 전체 구현 시간은 대략 3시간 정도였던 거 같다.

구현 조건을 담은 md 파일이 제공되었고, 결과물을 이슈로 등록하면 github action 이 자동으로 돌면서 테스트 코드가 도는 형태로 채점이 진행됐다. 테스트코드는 미공개였다.

앞 뒤로 30분은 키보드를 쓸 수 있고 나머지는 무조건 마우스랑 말로만 코딩을 해야 했다.(처음엔 마우스도 안 된다고 했지만 마이크 버튼을 눌러야 해서 마우스는 허용해주셨다.)

키보드 쓰는 시간에는 개발을 하는 건 아니고 MCP 서버를 세팅하거나 마이크 연결, 언어 설정 같은 것만 하라고 하셨다.

내 저장소(바로가기)를 보면 바로 알겠지만, 코드가 진짜 개판이다. AI 가 짠 코드에 키보드를 댈 수 없으니 그냥 무조건 accept 를 때려 버려서 가독성은 완전 하늘나라로 가버렸다. 줄줄이 소세지 같은 js 파일과 덕지덕지 html 파일. 서버도 라우터 나왔다가 swagger 문서 나왔다가 순서도 뒤죽박죽이다.

그치만 나름대로 생각이 있었던 게, react 로 구성하면 버그가 더 많이 생길 거 같았다. 한국어가 제대로 인식이 안 되는 상황이라 긴 문장 형태로 구체적인 요구를 할 수가 없었고 이 상황에선 컴포넌트를 나누기도 어려울 거 같아서 그냥 html 하나의 파일에 대충 다 때려박았다. 결과적으로 코드는 별로긴 했지만 대회의 요구사항은 완성도였기 때문에 목적은 달성했다고 생각한다.

깨달은 점

프로젝트 문서화를 잘하자

나는 3시간을 꼬박 구현하는 데에 다 썼는데에 반해, 3위를 한 찬영님은 초반에 틀은 거의 다 만드셨다고 했다. 초반 틀을 빠르게 만들 수 있었던 팁 중 하나는 에이전트에게 맥락을 주입하는 것이었다고 하셨다. 이번 대회에서는 명세서와 요구사항이 굉장히 꼼꼼하게 되어 있었기 때문에 문서들을 주입한 후에 만들어달라고 하면 결과물이 그럴 듯하게 나왔다.

나도 백엔드에 손 놓은 지 거의 3년이 다 되어가서 명세서를 봐도 구현하는 데는 한참 걸릴 거 같았는데, 명세서 주면서 그대로 만들어달라고 하니 잘 만들어줬다. 스웨거 문서며 openApi 며 시키는 대로 뚝딱 만들어줬다. 이게 모두 요구사항이 명확해서 나올 수 있었던 그림이었다.

AI 에게 일을 시킬 때는 무조건 구체적으로 시키는 것이 중요하다. 요구사항을 꼼꼼하게 문서화해놓고 AI 에게 그 자료를 학습시키게 되면, 개인 비서/개인 QA봇을 만들 수도 있음을 알게 되었다.

디버깅

구현은 AI 가 해준 걸 100% accept 했기 때문에 무엇보다 중요한 건 디버깅 이었다. 그 말인 즉슨, AI 가 짠 코드가 뭘 의미하는지는 이해를 해야된다는 것. 실제로 이 대회를 하면서 키노트 때 '기본이 중요하다' 라는 말을 왜 하셨는지 뼈저리게 느꼈다.

나는 node(express) 도 이미 경험해본 바가 있고, html/css/js 는 질리도록 하고 있어서 이번 대회 정도의 요구 사항은 AI 가 없어도 충분히 만들 수 있었다. 그래서 중간 중간 동작이 안 할 때마다 버그를 찾는 데에 그리 오래 걸리지 않았다.

github action 에서 테스트가 실패했을 때에도 하나씩 요구사항을 읽고 테스트하기엔 시간이 오래 걸릴 거 같아서 action 에 나온 에러 메시지를 보고 AI 에게 말을 해주었다. '이런 이런 문제가 발생한다는 데 찾아줘~' 이 또한 디버깅에 일환이 아닐까.

AI 는 내가 못하는 걸 하게 하는 도구라기 보단 내가 할 수 있지만 시간이 오래 걸리는 것을 단축시키는 도구라는 것을 느끼게 되었다. 앞으로 일을 할 때에도 시간이 오래 걸리는 것은 AI 에게 시키고 나는 디버깅만 하는 형태로 개발을 해봐야겠다. 기본에 충실해야 디버깅을 잘 할 수 있는 법. 기본기도 열심히 다지자.

후기 + 대회 TIP

열심히 할 생각으로 간 게 아니라서 그냥 버즈2 이어폰 하나 덜렁 들고 갔는데 썩 좋은 생각은 아니었던 것 같다. 양 옆에 많은 개발자들이 중얼거리고 있어서 수음이 더 좋은 마이크를 들고 갔으면 어땠을까 싶다. 잘 알아듣지도 못하고 개발 언어가 영어로 만들어지다보니 한국어랑 영어를 섞어서 말하면 더욱 문장이 개판이 되기 일쑤였다. 너무 화가 나서 집어던지고 싶었던 순간이 한두번이 아니었다. 다음에 참가하시는 분들은 집에서 한 번 마이크 테스트는 해보고 가시길 추천드린다.

vibe 코딩보다는 타자 코딩이 훨씬 좋다. 음성은 솔직히 아직은 오바였던 걸로.. 음성 인식이 생각보다 잘 안 되는데 특히 개발 언어를 말하면 말을 잘 못 알아먹는다. 말로 시키다가는 제 명에 못살겠다 싶었다ㅎㅎ; 텍스트로 얘한테 시키는게 훨 좋다.(서버 켜달라는 말만 몇 번을 했는지 모르겠다. 개발은 잘만 해놓고 “서버랑 프론트 서버 켜줘” 라는 간단한 요구사항은 아무리 외쳐도 못 알아듣던 코파일럿..)

다만, 컴퓨터에 입력하는 방법만 달라질 뿐 AI 에이전트를 이용해서 서비스를 빠르게 만들 수 있다는 사실이 중요하다고 느꼈다. 확실히 정확한 요구사항이 수립되어 있으면 AI 는 어떤 사람보다 빠르게 미션을 수행했다. 기획서를 상세하게 작성하는 기획자는 MVP 정도는 금방 만들 수도 있다고 한다.

앞서서 디버깅이 중요하다고 한 차례 얘기했는데, 어쨌든 대회에 나왔으니 좋은 성적을 거두려면 본인이 디버깅을 잘 할 수 있는 언어와 환경을 고르는 것이 좋다. 본인이 원하는 환경을 빠르게 만들 수 있도록 미리 맥락(을 담은 텍스트 파일)을 만들어 주입하는 것도 방법. 이 정도 준비하면 1등은 누워서 떡먹기가 아닐까?ㅎㅎ

바이브코딩에서 개발을 빨리하려고 input에 테스트 케이스를 넣는 과정을 함수로 만들어서 버튼에 핸들러를 달아 간편하게 만드신 분이 계셨는데, 이것도 팁이라면 팁. 에이전트를 잘 쓰는 방법이라기 보단 대회에서 마우스를 쓸 수 있게 되면서 생긴 대회용 꿀팁이다.

마무리

재밌는 경험했고, 생각보다 많은 인사이트를 얻을 수 있었다. (+ 닌텐도 스위치 2도 얻음)

맥락(요구사항)을 집어넣고 코딩 맡기기 + 디버깅하는 방법으로 개발을 해볼 것. 연습하면 할수록 생산속도가 많이 올라가는 것 같다. 당분간은 AI 를 활용해서 생산성을 극대화할 수 있도록 계속해서 테스트를 해봐야겠다.

AI 를 잘쓰는 개발자가 되어 뒤처지지 말아야지.

profile
프론트엔드에 백엔드 한 스푼 🥄

0개의 댓글