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

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

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

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

무려 Github copilot 팀에서 근무하고 계시는 Klair Baek 님이 잠깐 연설하시는 시간이 있었는데 생각했던 것보다 훨~씬 유익했다. 듣느라 필기를 거의 안 해서 내용이 전부 기억나는 것은 아니지만,
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 에게 시키고 나는 디버깅만 하는 형태로 개발을 해봐야겠다. 기본에 충실해야 디버깅을 잘 할 수 있는 법. 기본기도 열심히 다지자.
열심히 할 생각으로 간 게 아니라서 그냥 버즈2 이어폰 하나 덜렁 들고 갔는데 썩 좋은 생각은 아니었던 것 같다. 양 옆에 많은 개발자들이 중얼거리고 있어서 수음이 더 좋은 마이크를 들고 갔으면 어땠을까 싶다. 잘 알아듣지도 못하고 개발 언어가 영어로 만들어지다보니 한국어랑 영어를 섞어서 말하면 더욱 문장이 개판이 되기 일쑤였다. 너무 화가 나서 집어던지고 싶었던 순간이 한두번이 아니었다. 다음에 참가하시는 분들은 집에서 한 번 마이크 테스트는 해보고 가시길 추천드린다.
vibe 코딩보다는 타자 코딩이 훨씬 좋다. 음성은 솔직히 아직은 오바였던 걸로.. 음성 인식이 생각보다 잘 안 되는데 특히 개발 언어를 말하면 말을 잘 못 알아먹는다. 말로 시키다가는 제 명에 못살겠다 싶었다ㅎㅎ; 텍스트로 얘한테 시키는게 훨 좋다.(서버 켜달라는 말만 몇 번을 했는지 모르겠다. 개발은 잘만 해놓고 “서버랑 프론트 서버 켜줘” 라는 간단한 요구사항은 아무리 외쳐도 못 알아듣던 코파일럿..)
다만, 컴퓨터에 입력하는 방법만 달라질 뿐 AI 에이전트를 이용해서 서비스를 빠르게 만들 수 있다는 사실이 중요하다고 느꼈다. 확실히 정확한 요구사항이 수립되어 있으면 AI 는 어떤 사람보다 빠르게 미션을 수행했다. 기획서를 상세하게 작성하는 기획자는 MVP 정도는 금방 만들 수도 있다고 한다.
앞서서 디버깅이 중요하다고 한 차례 얘기했는데, 어쨌든 대회에 나왔으니 좋은 성적을 거두려면 본인이 디버깅을 잘 할 수 있는 언어와 환경을 고르는 것이 좋다. 본인이 원하는 환경을 빠르게 만들 수 있도록 미리 맥락(을 담은 텍스트 파일)을 만들어 주입하는 것도 방법. 이 정도 준비하면 1등은 누워서 떡먹기가 아닐까?ㅎㅎ
바이브코딩에서 개발을 빨리하려고 input에 테스트 케이스를 넣는 과정을 함수로 만들어서 버튼에 핸들러를 달아 간편하게 만드신 분이 계셨는데, 이것도 팁이라면 팁. 에이전트를 잘 쓰는 방법이라기 보단 대회에서 마우스를 쓸 수 있게 되면서 생긴 대회용 꿀팁이다.
재밌는 경험했고, 생각보다 많은 인사이트를 얻을 수 있었다. (+ 닌텐도 스위치 2도 얻음)
맥락(요구사항)을 집어넣고 코딩 맡기기 + 디버깅하는 방법으로 개발을 해볼 것. 연습하면 할수록 생산속도가 많이 올라가는 것 같다. 당분간은 AI 를 활용해서 생산성을 극대화할 수 있도록 계속해서 테스트를 해봐야겠다.

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