또 다시 도전한 해커톤
지난 12월, 우연히 Festa에서 ‘삐약톤’이라는 해커톤 모집 공고를 보게 되었습니다. 당시 부스트캠프 멤버십 과정을 막 마친 시점이었고, 여유로운 시간을 보내고 있던 터라 오랜만에 해커톤에 나가볼까 고민했습니다. 이전에 세 번 정도 해커톤에 참여했던 경험이 있는데, 짧은 시간 동안 몰입하며 열정을 불태우는 그 특별한 재미가 다시 떠올랐습니다. 더불어, 졸업생 신분으로 참가할 수 있는 몇 안 되는 대회라는 점도 큰 매력으로 다가와 삐약톤에 참여하기로 결심했습니다!

팀원 모으기
참가를 결심한 뒤 곧바로 팀원을 모집하기 시작했습니다. 해커톤은 시간이 생명이기에 최소 인원인 4명으로 팀을 꾸리기로 했습니다. 4명이라면 의견을 빠르게 모으고 의사결정도 효율적으로 진행할 수 있을 것이라 판단했습니다. 또한 팀 구성에 직군에 제한이 없었는데 제가 figma를 빠르게 다룰 수 있어서 디자이너 없이 진행하기로 했습니다. (이 결정은 나중에 큰 실수가 되며…)
부스트캠프에서 함께 프로젝트를 진행하며 친해진 동료에게 먼저 제안했고, 다행히 프론트엔드 팀원 한 명이 흔쾌히 참여를 결정했습니다. 이후 그 팀원이 백엔드 팀원 두 명을 섭외해 주어 프론트엔드 2명, 백엔드 2명으로 총 4명의 팀을 완성할 수 있었습니다.
연기된 일정으로 갖게 된 준비 시간
원래 해커톤 일정은 12월 14일(토) ~ 15일(일)이었지만, 행사 내부 사정과 참가팀 미달로 인해 한 달 뒤인 1월 11일(토) ~ 12일(일)로 연기되었습니다.

1월 달에는 부스트캠프에서 진행하는 CS 리팩토링 과정에 참여할 예정이었기에 주말 밤샘이 부담되었지만, 한 팀원이 "이 시간을 기회로 삼아 한 달 동안 서로 합을 맞춰보자"는 좋은 제안을 했고, 가벼운 todo 프로젝트를 통해 협업 연습을 하기로 했습니다.
부스트캠프에서 백엔드 분들과 합을 맞춰보는 경험을 하지 못했기 때문에, 이번 기회에 BE 분들과 호흡을 맞춰보는 것도 의미 있다고 생각했습니다. 덕분에 한 달 동안 서로 합을 맞추면서 장난도 많이 치고 친해져서 편안한 분위기가 조성되었습니다. 또한, 이번 해커톤에서 제가 리더를 맡게 되었습니다. 아무래도 해커톤 경험이 가장 많다 보니 자연스럽게 리더 역할을 맡게 된 것 같습니다.
해커톤 당일: 오프닝
드디어 해커톤 당일, 오전 10시 30분부터 체크인이 시작되었습니다. 웰컴 키트로 받은 풍성한 간식 덕분에 시작부터 기분이 좋았습니다.ㅎㅎ 하지만 강의실 형태의 공간에서 진행된 탓에 책상과 의자가 붙어 있어 팀원들과 마주 보고 회의하기에 다소 불편하겠다는 생각이 들었습니다. 그래도 준비된 공간에서 최선을 다해 하루를 보내기로 마음먹었습니다.

연사 세션
이어진 연사 세션에서는 두 가지 주제로 강연이 진행되었습니다.

첫 번째 강연의 주제는 GPT 세상에서 프론트엔드 커리어의 방향이었습니다. 프론트엔드 지망생으로서 특히 관심을 갖고 들을 수 있었습니다. 연사님은 "앞으로 판단력 있는 개발자가 되어야 하며, 이를 위해 기초가 중요하다"고 강조하셨습니다. 문제 해결 역량을 키우기 위해서는 빠르게 다작하며 경험을 쌓는 것이 중요하다는 조언도 기억에 남았습니다. 강연을 들으며 앞으로는 단순히 기술을 공부하는 것에서 그치지 않고, React 프레임워크 딥다이브, CS 지식 강화, JavaScript 심화 학습 등 깊이 있는 학습을 꾸준히 해야겠다는 다짐을 하게 되었습니다.
두 번째 강연은 개발 커뮤니티, 나만의 무기로 만들기라는 주제였습니다. 연사님은 개발 커뮤니티에서 타인을 경쟁자가 아니라 함께 성장하는 동료로 보는 점이 큰 장점이라고 말씀하시며, 이를 잘 활용해 자신만의 차별화를 만들어가라고 조언하셨습니다. 저 역시 처음 개발을 시작했을 때 이런 문화에 매료되어 개발을 더욱 좋아하게 되었던 순간이 떠올랐습니다. 연사님은 블로그 글 작성이나 네트워킹 참여 등을 통해 커뮤니티에 기여할 수 있다고 말씀하셨고, 단순한 기술 정리 글이 아닌 개인적인 탐구 과정과 배운 점을 담은 글을 작성해야 커뮤니티에서 차별화된 경험을 쌓을 수 있다고 조언하셨습니다.
두 연사님의 공통된 메시지는 "생각하고 판단할 줄 아는 개발자가 되어라"는 것이었고, 이를 위해 끊임없이 배우고 탐구하는 자세가 필요하다는 점이었습니다. 호기심을 바탕으로 새로운 공부거리를 찾고, 스스로 의문을 던지며 학습해가는 주도적인 태도를 잃지 말아야겠다고 생각했습니다.
두 연사님의 말씀이 너무 도움이 많이 되어 이런 세션을 마련해준 GDG 측에 깊은 감사를 느꼈습니다… ❤️
드디어 해커톤 시작: 주제와 심사기준
연사 세션이 끝난 뒤, 해커톤의 주제가 발표되었습니다. 이번 대회의 주제는 삐약이(초보)들의 문제를 해결하자였습니다. 주제를 보며 저희가 공감할 수 있는 문제를 해결할 수 있을 것 같아 해커톤이 더욱 기대되었습니다.

심사 기준은 주제 적합성, 가설 설득력, 실행력이었습니다. 주제 적합성과 가설 설득력은 9점이지만 실행력이 6점인 것으로 보아 기능 개발의 완성도보단 기획이 얼마나 적합하고 설득력있는지가 중요해 보였습니다.

함께 만들어 나가는 아이디어
점심으로 받은 크라잉버거를 먹으며 아이디어를 나누기 시작했습니다. 한 팀원이 연사 세션에서 들었던 커뮤니티를 무기로 만들기라는 주제를 떠올리며, 네트워킹이 중요하지만 네트워킹 이후 사람들의 정보를 기억하기 어렵다는 문제를 떠올렸습니다. 이를 해결하기 위해 네트워킹을 쉽고 재미있게 도와주는 서비스를 만들자는 제안을 했고, 팀원 모두 공감하며 바로 이 아이디어를 중심으로 기획을 시작했습니다.
실제로 한 달 전에 부스트캠프 멤버가 주최한 네트워킹 행사를 떠올리며 아이디어를 구체화해 나갔습니다. 당시 각자 빈칸을 채우는 방식으로 명함을 작성해 교환했는데, 이름과 연락처뿐 아니라 자신을 나타낼 수 있는 문구를 추가하는 것이 상대방을 기억하는 데 큰 도움이 되었습니다. 이를 바탕으로, 저희 서비스에서도 행사별로 자신을 나타낼 수 있는 정보를 추가할 수 있는 기능을 포함하기로 했습니다. 예를 들어, 삐약톤에서는 "어떤 프로젝트를 했는지, 어떤 직군이었는지"를 기입하는 식입니다.
또한, 네트워킹 당시 사람 한 명 한 명을 찾아가 명함을 교환하며 새로운 사람을 알아가는 재미가 기억났습니다. 단순히 네트워킹을 돕는 데서 그치지 않고, 마치 도감을 수집하듯 명함을 모으는 재미를 추가하면 더 흥미로울 것 같아 팀원들에게 이 아아디어도 개발하자고 제안했는데, 모두 긍정적으로 반응해 기능을 추가하게 되었습니다.
새벽에는 한 팀원이 새로운 아이디어를 제안하기도 했습니다. H3 오픈소스와 소켓을 활용해 아직 커뮤니케이션하지 못한 사람이 주변에 몇 명이나 있는지 알려주는 기능이었는데, 흥미롭고 독특한 접근이라 모두 좋다고 생각해 추가하기로 했습니다.
아이디어는 팀원 각자의 의견과 경험을 바탕으로 계속 보완하며 저희 팀만의 재미있고 완성도 높은 해결 방법을 만들어낼 수 있어서 재미있었습니다.
예상치 못한 디자인 작업의 부담
생각보다 아이디어가 빨리 정해져서 다행이라고 생각했지만 이후 와이어프레임을 그리고 디자인을 완성하는 작업이 오래 걸렸습니다. 디자인에 큰 치중을 두지 않아도 될줄 알았는데 해커톤 현장에서 대부분의 팀에 디자이너가 있다는 것을 알게 되어 더 신경 쓰게 되었고, 결국 밤 11시가 되어서야 디자인이 마무리되었습니다.

개발 과정 속 마주친 어려움
본격적인 개발은 밤 11시부터 시작되었습니다. 다행히 제가 디자인을 마무리하는 동안 프론트엔드 팀원이 프로젝트 세팅을 미리 완료해 준 덕분에 작업을 바로 시작할 수 있었습니다.
이후에는 역할을 분담해 개발을 시작했습니다. 다른 FE 팀원은 꼼꼼한 편이고, QR을 만들어 본 적이 있어서 로그인 페이지, 기본 프로필 등록 페이지, QR 페이지를 맡았고, 저는 비교적 작업 속도가 빠른 편이라 UI가 복잡하고 API 연동이 많은 행사 리스트 페이지, 행사 세부 페이지, 행사별 프로필 등록 페이지, 프로필 보기 페이지를 담당했습니다.
순조롭게 개발이 진행되었다면 좋았겠지만, 하루라는 짧은 시간 동안 여러 난관에 부딪히며 어려움을 겪었습니다. 😵💫
새로운 아이디어의 도입과 시행착오
팀원이 제안했던 주변에 명함을 교환하지 못한 사람을 알려주는 새로운 아이디어는 기획적으로 너무 좋다고 생각했습니다. 그러나 기술적으로 구현하기 까다로워 팀원분이 지금 당장 만들기 어려울 수 있다며 제한 시간 안에 구현이 가능한지 좀 더 알아봐야한다 했습니다. 그래서 한 시간 정도 알아보고 알려달라고 했는데 결과적으로 시간 안에 구현이 어렵다는 결론이 나왔고, 결국 해당 기능은 배제하게 되었습니다. 😢
로컬에서는 안되고 배포 환경에서는 되는 문제
개발 도중 프론트 쪽 작업량이 너무 많아서 백엔드 팀원분이 감사하게도 일부 프론트엔드 코드 작성을 도와주셨습니다. 그런데 그 코드에 withCredentials
가 누락되어 쿠키 전달이 되지 않는 문제가 발생했습니다. 분명 주신 코드를 읽었는데도 새벽에 정신이 없어서 문제를 제대로 파악하지 못해 결국 이 문제로 두 시간을 허비하고 말았습니다. 도움을 주신 팀원의 호의를 제대로 활용하지 못한 것 같아 아쉬웠습니다. 😭
완성을 위해
마지막 날, 부스를 운영하며 완성된 서비스를 선보이고 싶다는 목표와 팀원들과 "꼭 서비스를 배포하자"고 약속을 했던터라 끝까지 완성하기 위해 노력했습니다. 다만, 이 과정에서 작업에 몰두하느라 아침 9시부터는 필요한 말만 하며 팀원들과의 대화가 최소화되어 아쉬움으로 남았습니다. 앞으로는 작업의 완성도뿐 아니라 소통의 균형을 유지하며 모두가 만족스러운 결과를 낼 수 있는 팀원이 되어야겠다고 생각했습니다.
완벽한 것보다 완성된 것이 낫다
개발 과정에서 팀원이 서비스의 안정성을 높이기 위해 예외 처리에 많은 시간을 투자했습니다. 특히, 다음 날 다른 참가자들이 서비스를 직접 사용해볼 수 있었기 때문에 저 또한 안정성도 중요한 요소였다고 생각했습니다. 하지만, 해커톤의 제한된 시간 안에서는 주요 기능 구현이 무엇보다 중요하다는 점을 잊지 않고 우선 모든 서비스를 구현하는 것에 초점을 두어야 했습니다.
당시, 적절한 시점에 개입하지 못해 결국 핵심 기능을 본격적으로 작업하기 시작한 시점은 이미 아침 10시가 되었고, 그때 서버 API에 문제가 있다는 사실도 뒤늦게 알게 되었습니다. 시간이 너무 촉박한 상황이었기에 결국 가장 중요했던 기능을 완성하지 못한 채 마무리해야 했습니다. 이 경험을 통해 시간이 제한된 환경에서는 주요 기능을 완성한 뒤 안정성과 디테일을 보완하는 방향으로 우선순위를 설정하는 것이 중요하다는 사실을 알게 되었습니다.
심사
심사는 세 타임으로 나누어 진행되었고, 한 타임당 6~7팀이 심사위원 앞에서 서비스를 발표했습니다. 심사를 받지 않는 팀들은 부스를 운영하며 다른 팀들의 프로젝트를 구경하거나 본인의 서비스를 소개했습니다. 저희 팀은 마지막 순서였기 때문에 첫 두 타임 동안 번갈아가며 부스를 운영하기로 했습니다.

첫 번째 타임에는 다른 팀의 부스를 구경했습니다. 많은 팀이 이미 서비스를 배포한 상태였고, 서비스 소개 영상이나 발표 슬라이드로 서비스를 멋있게 소개하는 팀이 많았습니다. 특히, 창의적이고 재미있는 아이디어들이 많아 직접 사용해보며 하루 만에 이런 서비스를 만들었다는 점에 놀라움을 느꼈습니다.
두 번째 타임에는 제가 부스 운영을 맡아 서비스 소개를 담당했습니다. 발표 자료도 따로 준비하지 못했고, 서비스도 완성하지 못한 상태였기에 어떻게 설명해야 할지 고민이 많았습니다. 그래서 최대한 서비스를 기획한 배경에서 공감을 이끌어내는 방식으로 접근하기로 했습니다. 부스 운영 자체가 네트워킹과 비슷한 상황이었기 때문에 이를 네트워킹에 빗대어 저희 서비스의 필요성을 설명했습니다. 구현된 기능 중 완성한 기능은 배포된 서비스에서 직접 보여드렸고, 완성하지 못한 부분은 Figma를 활용해 서비스 흐름을 이해할 수 있도록 설명하려고 노력했습니다.
부스를 운영하며 다양한 사람들에게 서비스를 설명하면서, 어떻게 하면 빠르게 이해를 이끌어낼 수 있는지, 어떤 기능에 더 관심을 가지는지를 파악할 수 있었습니다. 이 과정은 심사 발표를 준비하고 연습할 수 있는 좋은 기회가 되었고, 덕분에 심사 자리에서도 참가자들에게 설명했던 방식 그대로 자연스럽게 발표를 진행할 수 있었습니다.
뜻밖의 수상
총 21팀 중 3팀이 최우수상, 우수상, 인기상을 받는데 저희 팀이 놀랍게도 우수상을 받게 되었습니다..!

다른 팀처럼 발표 자료도 멋있게 못 만들고 완성을 못했기 때문에 당연히 수상을 못할 줄 알아서 우수상에서 저희 팀 이름인 “요즘잘자쿨냥이”이 호명되었을 때 정말 깜짝 놀랐습니다. 팀원 모두 예상을 못했던지라 처음에 정적이 흘렀던 것이 기억납니다. ㅋㅋ
심사위원들은 저희 서비스의 기획적 완성도와 네트워킹 시 겪는 문제를 구체적으로 해결하려는 시도를 높이 평가해 주셨습니다. 특히, 이 해커톤이 네트워킹의 목적도 포함하고 있었기에 서비스의 주제가 행사와 잘 맞아떨어졌다는 점에서 긍정적인 반응을 얻을 수 있었습니다.
실제로 수상을 하고 나서도 팀원 모두 실제 평가가 궁금해 운영진분께 심사위원분들의 피드백을 받아왔었습니다. 실제로도 배포해서 GDG Campus Korea 행사에서 사용할 날이 오기를 기대하겠다는 말씀 등 너무 좋은 피드백을 주셔서 저희 팀원 모두 진한 감동을 받았었습니다…

(참고로 상금으로 받은 30만 원으로 금돼지식당에서 맛있는 돼지고기를 먹으며 회식도 했습니다. ㅎㅎ)
회고: 더 나은 리더였더라면
이번 해커톤에서 가장 크게 느낀 점은 정말 바빴다는 것이었습니다. 해야 할 일이 너무 많았고, 쉬지 않고 일했음에도 결국 서비스를 완성하지 못했습니다. 무엇이 문제였을까요?
저는 이번 해커톤에서 디자이너, 프론트엔드 개발자, 그리고 리더의 역할을 맡았습니다. 하지만 각 역할의 균형을 잡는 것이 쉽지 않았습니다. 스스로 너무 많은 작업을 처리하려다 보니, 리더로서의 핵심 역할인 팀원들의 진행 상황을 관리하고 문제를 해결하며, 팀을 올바른 방향으로 이끄는 일에 충분히 집중하지 못했습니다.

물론 팀원들의 의견을 수렴하고, 짧은 시간 안에 아이디어를 정리해 기획을 완성하는 등 리더로서 조율하려는 노력을 기울였지만, 디자인과 프론트엔드 작업에 많은 시간을 쏟다 보니 정작 팀원들에게 구체적인 조언을 제공하거나 문제 해결의 방향성을 제시하는 역할은 제대로 수행하지 못했습니다. 특히, 문제가 발생했을 때 상황을 확인하는 데 그치고, 팀원들이 스스로 해결하도록 맡긴 부분이 아쉬움으로 남습니다.
이번 경험을 통해 배운 점은 리더가 모든 일을 직접 처리하려고 해서는 안 된다는 것입니다. 리더는 팀원을 믿고 맡기며, 팀 전체가 궁극적인 목표를 향해 올바르게 나아갈 수 있도록 상황을 조율하고 방향을 제시하는 역할에 집중해야 한다는 점을 깨달았습니다.
첫 번째로 얻은 교훈은 역할 분담의 중요성입니다. 제가 디자인에 많은 시간을 쏟지 않고 디자이너를 섭외했더라면, 개발과 팀 전체 상황을 더 잘 관리하며 팀원들을 적절히 지원할 수 있었을 것입니다. 두 번째로는 사소한 것에 집착하기보다 큰 그림을 보고, 팀이 직면한 문제를 효과적으로 해결할 수 있도록 돕는 것이 리더로서의 핵심 역할이라는 점이었습니다.
앞으로 나아갈 방향
해커톤 이후, 저희 모두 서비스의 완성하지 못했던 기능을 개선하고 리팩토링하여 실제로 운영해보고 싶다는 생각을 가지게 되었습니다. 우선 2월까지 기존 기획대로 기능을 모두 완성하고, 이후 서비스를 발전시켜 나가기로 했습니다. 해커톤 당시에는 시간이 부족해 기술적으로 깊이 있는 작업을 하지 못했기 때문에, 연사 세션에서 강조되었던 것처럼 더 깊이 있는 공부를 하며 개발 역량을 키우겠다는 다짐도 함께 했습니다. 그리고 이제는 전체적인 일의 진행 상황을 모두가 트래킹할 수 있도록 github project나 jira와 같은 프로젝트 관리 툴도 충분히 활용할 것입니다. 완성될 저희 서비스를 기대해 주세요. ㅎㅎ
또한, 앞으로는 제가 맡은 역할에 충실하기로 했습니다. 리더로서 팀 전체를 더 잘 이끌어갈 수 있기 위해 노력할 것이며, 팀원으로서는 신뢰를 줄 수 있는 동료, 그리고 팀의 목표를 이루기 위해 함께 성장하는 사람이 되고자 합니다.
