카카오와 구름이 주최하는 해커톤, 구름톤 13기에 프론트엔드 개발자로 참여하며 겪은 3박 4일간의 이야기를 담아보려고 한다.
3박 4일간 진행되는 일정이지만 실질적으로 개발 작업을 할 수 있는 시간은 약 24시간 정도이다.
우리 팀의 프론트엔드 파트는 짧은 개발 시간 동안 133개의 커밋과 36개의 PR으로 서비스를 완성했다.
구름톤 지원 과정부터 해커톤을 위한 준비 과정은 지난 글에서 볼 수 있다.
떠나요 제주로
구름톤 일정은 화요일 아침부터 시작이라 컨디션 관리를 위해 월요일에 미리 제주에 도착했다.
시청 근처 게스트 하우스에서 지냈는데 주변에 식당이 많아서 시청 근처를 추천한다.
참고로 안내 공지에서는 라마다 시티 제주 호텔, 제주 부띠끄 헤르츠 호텔, 호텔 샬롬을 추천했다.
대부분 월요일에 미리 오셨고, 현업에 종사하고 계신 분들은 회사 때문에 화요일 아침에 오시기도 했다. 가능하다면 월요일에 미리 도착하는 걸 추천한다!
1일 차: 구름톤 시작!
드디어 사진으로만 보던 구름스퀘어에 도착했다! 10시 정각에 열린다는 후기를 봐서 걱정했지만, 30분 정도 일찍 도착했는데도 바로 안으로 들어갈 수 있었다.
플레이어 등록 후 이름표와 굿즈가 담긴 쇼핑백, 맨투맨을 받았다. 쇼핑백에 들어있는 쪽지에 첫날 아이스브레이킹을 진행할 팀 테이블 번호가 적혀있었다.
우리 조에는 프론트 3명, 백엔드 1명, 디자이너 1명이 모여서 조 이름을 ‘프삼백디’로 지었다. (ㅎㅎ)
아이스브레이킹 때 후기에서 본 마시멜로 탑쌓기 대신 손병호 게임, TTS 음악 퀴즈, 인물 퀴즈 등을 진행했다. 참고로 정답을 외칠 때 조 이름을 말해야 해서 짧고 쉽게 정하는 게 유리하다..!
이후 해커톤 강의가 진행됐는데 좋은 결과보다는 과정이 중요하니 즐거움을 느꼈으면 좋겠다고 해주셨다. 내 목표도 즐겁게 해커톤을 진행하는 거였기 때문에 좀 더 와닿았던 것 같다.
소문으로만 듣던(..!) 거인의 어깨에 올라타자 강의를 직접 들을 수 있어서 좋았다. 어떤 걸 해야 하고 어떤 걸 하면 안 되는지 알려주셔서 해커톤 첫 참여자로서 정말 유익했던 강의였다.
점심 식사로는 도시락이 제공됐고 이후 3분 셀프 PR 시간이 이어졌다. 각자 노션에 작성한 자기소개를 바탕으로 PR을 했는데 다들 발표를 너무 잘하셨다.
같이 합격한 팀원분이 본인 셀프 PR 시간에 같이 온 팀원이 있는데 잘하니까 데려가라고 나를 깜짝 피알 해주셔서 감사했다.
이후 세션은 크램플린 IDE 실습과 GDS 강의 및 실습으로 나뉘었는데 프론트엔드 개발자는 GDS 강의를 들어야 했다.
보일러 플레이트를 만들 때 예상했던 대로 이번 기수부터는 GDS를 프로젝트에 활용할 수 있었고 가산점까지 주어졌기 때문에 프론트엔드 개발자는 필수로 GDS 수업을 배정받은 것 같다. 나는 평소에 디자인 시스템에 관심이 많고 원래도 GDS 강의를 선택하려고 했어서 괜찮았지만 크램플린 IDE 강의를 듣고 싶어 아쉬워하시는 분들도 계셨다.
GDS를 만들며 DX 문제를 해결하기 위해, 회사와 엔드유저, 크리에이터 모두 만족할 수 있는 디자인 시스템을 만들기 위해 어떤 노력과 고민을 했는지 들을 수 있어 배울 점이 많았다.
강의가 끝나고 GDS Github 패키지 레지스트리에 접근할 수 있는 액세스 토큰을 제공해주셔서 (현재는 만료됨) 실습을 해볼 수 있었는데, 신기하고 재미있었다.
시간표상 일정 마지막에 키워드가 공개되는 걸로 되어있지만, 사실 키워드는 그 전에 미리 공개해 주셨다. 구름톤 13기의 마지막 키워드는 ‘공유 경제’였다. 공유 경제라는 키워드가 독창성 있는 아이디어를 생각하기엔 다소 어려운 주제라는 생각이 들어 고민이 많았다.
모든 참가자가 아이디어 발표를 해야 해서 저녁을 먹고 숙소로 돌아와 발표 자료를 만들었다.
2일 차: 팀 빌딩과 비어파티
2일 차 역시 구름스퀘어에 모여 일정이 시작되었다. 다 같이 버스를 타고 플레이스캠프로 이동할 예정이었기 때문에 캐리어를 챙겨왔다.
제출한 발표 자료를 바탕으로 2분간 아이디어 발표가 진행됐다. 가장 늦게 자료를 제출한 참가자부터 순서대로 발표를 시작했다. 다른 참가자들의 발표 내용을 필기하며 들었는데, 다양한 아이디어와 함께 직군별 특색을 살펴볼 수 있었다.
나는 최대한 간단하고 깔끔하게 아이디어를 정리했고, 남는 시간에는 다양한 프로젝트 경험과 준비해 온 보일러 플레이트를 어필하며 마지막 PR을 마쳤다.
발표 후 쉬는 시간이 주어지고 팀 빌딩이 바로 시작됐다. 쉬는 시간에 화장실에서 한 디자이너님을 마주쳤는데, 내가 자기소개 때 TailwindCSS
를 선호한다고 해서 같이 하고 싶은 팀원 1순위로 생각하고 있었다며 함께 하자고 제안해 주셨다. 구름톤 참가 전 걱정했던 팀 빌딩에서 빠르게 첫 팀원을 구할 수 있어 다행이었다.
팀 빌딩 시간이 시작되고 먼저 제안해 주신 디자이너님과 함께 나머지 팀원을 모으기 시작했다. 팀원 구성은 ‘기획자 1명 디자이너 1명 백엔드 1명 프론트엔드 2명’으로 이루어지는데, 디자이너님과 아이스브레이킹 때 같은 조였던 분에게 같이 하자고 제안했더니 흔쾌히 수락해 주셔서 프론트엔드 팀원을 모두 채울 수 있었다.
NextJS 기반 보일러 플레이트를 준비했다는 PR을 기억해 주셨고 내가 준비해 온 기술 스택에 맞춰주시겠다고 해서 감사했다.
이미 부분적으로 팀을 구성한 참가자들이 여럿 있어서 함께 하자는 제안을 받았다가 인원 문제로 아쉽게 무산되는 경우가 있었다. 그래서 우리는 혼자 팀을 구하고 계신 분들 위주로 백엔드 개발자와 기획자를 차례대로 영입했고 생각보다 빠르게 팀이 완성되었다.
팀 구성 후 바로 자리를 잡은 다음, 어떤 주제로 프로젝트를 진행할지 이야기를 나눴다. 드디어 본격적인 해커톤이 시작되는 순간이었다!
함께 점심 식사를 하고 (이번에도 점심은 도시락) 단체 사진을 촬영한 다음 해커톤 진행 장소인 플레이스캠프로 이동했다.
도착해서 숙소에 짐을 풀고 약간의 쉬는 시간을 가졌다. 이 시간에 팀원들과 주변을 산책하며 유채꽃밭과 성산일출봉도 구경하고 현지인 추천 빵집도 들러봤다.
그동안 제주에 온 실감이 나지 않았는데, 성산일출봉과 유채꽃, 말들을 보니 비로소 제주인 게 실감 나기 시작했다.
카카오 현직자 특강 전에 시간이 조금 남아서 프로젝트 세팅을 진행했다. 프론트엔드 팀원과 함께 기술 스택의 세부적인 버전과 패키지 매니저 등을 논의했다.
GDS를 사용하면 가산점이 있지만, 토큰이 약 일주일 후에 만료되고 디자이너님이 TailwindCSS 기반의 스타일 가이드를 준비해 오셔서 GDS보다는 커스텀이 용이한 shadcn/ui
를 사용하기로 했다.
새로 나온 TailwindCSS v4
버전을 사용하기로 했는데, shadcn/ui
에서 이 버전을 사용하려면 React19가 필요했다. 그 밖에도 관련된 버전 수정이 많아질 것 같아 준비한 보일러 플레이트를 사용하지 않고 create next app
으로 처음부터 새로 만들기로 결정했다.
최종적으로는 Next15
버전으로 프로젝트를 세팅했고 패키지 매니저는 yarn
을 사용했다. .nvmrc
파일도 추가해 노드 버전을 명시함으로써 모든 팀원이 같은 환경에서 작업할 수 있게 했다.
아쉽게 만들어온 보일러플레이트를 사용할 수는 없었지만, 준비가 무의미하지는 않았다. 보일러 플레이트를 만들며 작성했던 커밋 내역을 참고하며 빠르게 설정을 옮길 수 있었다.
커밋 컨벤션, 기본적인 폴더 구조 등도 정리해 뒀기 때문에 관련된 논의할 시간도 크게 단축할 수 있었다.
카카오 현직자 특강은 두고두고 꺼내먹는 기획서 작성과 발표하기 Tip과 클라우드 환경에서 Web Service 구성 두 가지로 진행되었다.
첫 번째 특강에서는 앞으로 발표를 진행하거나 기획서, 발표 자료 등을 만들 때 활용할 수 있는 실용적인 팁들을 알려주셔서 유익했다.
두 번째 특강에서는 도커와 쿠버네티스 등 들어는 봤지만 익숙하지 않은 기술들에 대한 설명을 해주셔서 관련 용어와 개념들을 새롭게 알아갈 수 있었다.
드디어 대망의 비어파티 시간이 찾아왔다! 사실 나는 맥주를 못 마셔서 비어 없는 비어파티를 즐겼다.
음식은 개인적으로 소고기와 새우가 제일 맛있었다! (에피타이저로 제공된 나쵸도 최고…) 맥주 외의 음료는 제공되지 않아 편의점에서 콜라라도 사 올걸 하는 아쉬움이 들었다.
팀별로 나눠준 명함 카드에 그려진 그림에 따라 비어파티 자리가 배정됐다. 덕분에 다른 팀의 다양한 직군의 참가자들과 이야기를 나누며 맛있는 음식을 즐길 수 있었다.
이후 직군별로 모여 멘토님과 네트워킹하는 시간이 이어졌다. 구름에서 GDS 개발을 맡고 계신 멘토님과 이야기를 나눴는데 우리 테이블은 모두 취업 준비생이라 어떤 식으로 취업 준비를 하고 있는지, 요즘 어떤 기술 스택을 사용하고 있는지 등을 물어봐 주셨다. 다른 취업 준비생들의 상황도 알 수 있어 좋았고 참여자, 각자의 이야기를 듣고 멘토님이 해주신 조언도 유익했다.
서로 명함을 주고받으며 비어파티가 마무리되었고, 다들 기획을 마저 진행하기 위해 각자의 팀원들을 찾아 자리를 떠났다.
팀원들과 모여 기획에 대한 이야기를 나누었다. 처음에는 제주의 빈 공간을 원데이 클래스 등으로 활용할 수 있게 대여해주는 서비스를 기획했다.
어느 정도 기획이 마무리되고 나서 에디 멘토님께 피드백을 받았다. 무리 없는 아이디어지만 이전 기수에서도 여러 번 나왔을 만큼 뻔한 주제라고 말씀해 주셨다. 뻔하다고 해서 꼭 피해야 하는 건 아니지만 비슷한 서비스가 있는지, 타겟이 너무 넓지 않은지 등을 고려해서 차별화 포인트를 찾아보라고 조언해 주셨다.
멘토님과 함께 브레인스토밍을 진행하며 생각나는 주제를 던져보다가 제주도민인 팀원에게서 ‘고사리’라는 키워드가 나왔다. 제주도에 고사리가 널려 있다는 사실을 이번에 처음 알게 됐는데, 멘토님께서도 현지인이 아니면 생각하기 어려운 키워드라며 긍정적으로 평가해 주셨다.
결국 우리는 고사리 채집 장소를 실시간으로 공유할 수 있는 ‘고사리 지도’ 서비스를 만들기로 결정했다.
사실 ‘공유 경제’라는 키워드를 어떻게 녹일지 고민이었는데, 고사리 채집 후 직거래를 할 수 있는 ‘직거래 장터’ 기능을 추가해 자연스럽게 키워드를 녹여냈다.
새벽 1시까지 고사리 지도에 대한 기획을 구체화한 후, 개발자들은 다음 날을 위해 휴식을 취하러 숙소로 이동했고 기획자와 디자이너는 남아서 작업을 진행했다.
숙소가 캐리어 보관소라는 후기를 많이 봐서 걱정했는데 3일 차를 위해 푹 잘 수 있어서 다행이었다.
3일 차: 본격적인 개발 시작
우리 팀은 오전 9시 30분에 모이기로 했다. 조금 일찍 일어나서 간단하게 아침(소금빵)을 먹고 내려가 보니 이미 나와계신 분들도 계셨다. 노트북을 켜고 피그마를 확인했는데 디자인 시안이 꽤 많이 나와 있어서 놀랐다.
추가된 기획을 확인하고 궁금한 점을 물어보며 의견을 조율한 다음, 작업을 시작했다. 새벽까지 열심히 작업해 주신 덕분에 빠르게 할 일을 나누고 개발을 시작할 수 있었다.
내가 맡은 첫 번째 작업은 온보딩 페이지였다. 해커톤을 준비하며 @use-funnel
라이브러리를 연습한 덕분에 수월하게 구현할 수 있었다.
애니메이션이 있으면 좋을 것 같다는 피드백에 간단한 효과를 추가해 완성도를 높였다.
다음으로는 커뮤니티 페이지를 작업했다. 짧은 기간 안에 모든 기능을 구현할 수는 없어서, 이 부분은 서비스에 어떤 기능이 있는지 보여주기 위한 퍼블리싱 작업만 진행하기로 했다.
원래는 페이지가 이동해야 하는 콘텐츠인데 퍼블리싱만 되어있으면 클릭해도 반응이 없어 버그처럼 느껴질 수 있어서 클릭했을 때 토스트 메시지를 띄우자고 제안했다. 다들 좋다고 해주셔서 바로 해당 기능을 추가했다.
온보딩 페이지 문구가 제주 사투리로 되어있어 토스트 문구도 제주 사투리로 ’🌿 준비하고 있으난 좀만 기다립서양~’ 이라고 띄워 일관성을 유지했다.
이어서 채집왕 페이지와 위치제보 상세 페이지까지 퍼블리싱 작업을 완료하고, 메인 페이지의 더미 데이터를 실제 데이터베이스 데이터로 교체하는 API 연동 작업까지 진행했다.
그 외 자잘한 디자인 수정이나 문구, 이미지 수정 등을 통해 완성도를 높여갔다.
배포는 어려워
가산점을 받기 위해 크램폴린 배포에 도전했는데, 여기서 많은 시행착오가 있었다. 프론트 배포 실패를 해결하기 위해 node 버전을 낮추기도 하고 (이때 .nvmrc
파일 덕분에 쉽게 바꿀 수 있었다) 도커 파일도 수정하고 그 외 알 수 없는 오류가 많아 백엔드 팀원이 고생을 많이 했다.
열심히 시도한 끝에 우리 팀은 배포에 성공했다! 크램폴린 배포에 성공한 팀이 2팀밖에 되지 않는 걸로 알고 있는데 그중 하나가 우리 팀이라서 뿌듯했다.
밥 잘 챙겨주는 구름톤
아침에 해커톤 장소로 이동할 때를 제외하면 점심식사 하러 이동할 때가 유일하게 햇빛을 볼 수 있는 시간이었다. (ㅎㅎ) 식사 후 간단하게 산책도 하며 잠시 쉬는 시간을 가졌다.
근처에 있는 바다를 보러 가야 했는데, 못 보고 온 게 너무 아쉽다.
원래 저녁이 제공되지 않는 걸로 되어있는데 저녁 6시쯤 치킨을 시켜주셨다. (후기를 찾아보면 항상 치킨을 주시는 것 같다) 잠깐 작업을 멈추고 치킨과 콜라 감자튀김과 함께 팀원들과 이야기를 나눴다.
식사를 든든하게 잘 챙겨주셔서 좋았다. 간식과 물, 에너지 드링크도 무한 제공된다…
4일 차: 구름톤 마무리
밤을 새웠다. 오전 8시 40분부터 9시까지 20분간 짧게 잔 게 전부였다.
해가 뜰 시간이 됐을 때 팀원들과 일출을 보러 나갔는데 날이 흐려서 잘 보이지 않았다. 그래도 한 바퀴 산책하며 휴식도 취하고 (낭만도 있고) 좋았다.
프로젝트를 완성하고 오전 11시까지 최종 자료를 제출해야 했다. 개발 동기, 서비스 설명, 기대 효과, 서비스 URL 등 양식에 맞춰 폼을 전송하고 발표만 남겨뒀다.
우리는 발표 자료에 서비스 URL이 담긴 QR 코드를 추가했다. 더 완성도 있는 모습을 보여줄 수 있도록 제출 이후에도 필요한 부분이 있다면 수정해 가며 디테일을 더했다.
발표는 기획자 팀원이 맡아서 진행했다. 제주도 현지인이라 당사자성을 바탕으로 발표를 이끌어갈 수 있었다. 심사위원분들이 QR코드로 서비스를 직접 사용해 보시고 긍정적인 피드백을 주셔서 뿌듯했다.
다만 “고사리 스팟은 며느리도 안 알려준다는데 과연 사람들이 고사리 스팟을 제보할지, 사용자가 늘기를 바랄지” 우려하는 피드백도 있었다.
고사리 스팟을 제보 시 리워드를 주는 방식도 고려해 봤고, 고사리를 채집하는 유저 뿐만 아니라 장터에서 저렴하게 구매하고 싶은 유저들도 타깃이라는 점을 발표에서 충분히 어필하지 못한 게 아쉽다. 그래도 나머지 질문에는 잘 답변했고 전반적인 반응도 좋아서 후회 없이 발표를 마칠 수 있었다.
아쉽게도 수상을 하지는 못했지만, 많은 것을 얻어갈 수 있는 시간이었다. 좋은 팀원들과 재미있게 프로젝트를 진행했다는 것만으로도 목표를 이룬 셈이라 후회는 없다. (그만큼 정말 열심히 했다!)
고사리라는 재미있는 주제를 선정한 덕분에 프로젝트 내내 웃으며 작업할 수 있었고, 팀 분위기도 정말 좋았다. 현지인 팀원에게 제주 사투리도 배우며 즐거운 시간을 보냈다.
물론 밤을 새워야 해서 힘든 순간도 있었지만 재미있게 진행했기 때문인지 생각보다 힘들게 느껴지지 않았다.
구름톤을 돌아보며
사실 시작 전에는 기대보다 걱정이 더 컸다. 내가 1인분을 잘할 수 있을지, 밤은 샐 수 있을지, E가 아니면 살아남을 수 없다던데 네트워킹을 잘할 수 있을지, 즐길 수 있을지 등 여러 고민이 있었다.
하지만 구름톤을 마치고 나니 1인분을 충분히 해낼 수 있다는 자신감도 얻었고 충분히 즐기다 온 것 같아서 괜한 걱정이었다는 생각이 든다.
가장 걱정했던 건 밤샘이었다. 체력 관리가 중요하다고 생각해 약국에서 글루콤(비타민)과 아르기닌을 사왔는데 덕분에 수월하게 밤을 새울 수 있었다.
참고로 화, 수, 목 아침에 글루콤을 마시고 목요일 저녁 식사 이후 아르기닌을 먹었더니 밤을 새우고도 체력적으로 무리가 없었다. (내돈내산)
나와 함께 호흡을 맞춘 프론트엔드 팀원은 3년 차 현업 개발자인데, 옆에서 칭찬도 해주고 도움이 필요할 때 바로바로 해결해 줘서 든든했다. 그동안 현업 개발자와 협업할 기회가 없었는데 이번에 함께하면서 처음 사용해 보는 기술도 접하고 현업에서 많이 사용하는 꿀팁도 얻을 수 있었다.
꽤 많은 분량의 작업을 해야 했지만 시간 안에 완성할 수 있어서 다행이었다. 기획 단계에서 분량을 줄이자고 할 수도 있었지만, 한계에 도전해 본 덕분에 짧은 시간에 생각했던 것보다 더 성장할 수 있었다.
다른 해커톤에 참여하게 되면 ‘구현 속도가 빨라요’, ‘밤샘 자신 있어요’라는 문구를 자신 있게 자기소개에 넣을 수 있을 것 같다.
약간의 팁
- 보일러 플레이트를 준비해 가면 확실히 큰 도움이 된다.
- 카카오 지도 API,
@use-funnel
등 구름톤에서 자주 쓰이는 기술을 미리 연습해 가면 좋다. - 2일차부터는 제공하는 맨투맨(또는 티셔츠)을 입어야 하기 때문에 나머지 기간에 입을 옷만 챙기면 된다.
- 글루콤(비타민)과 아르기닌은 밤샘에 매우 도움이 된다.
- 밤을 새우면 정신이 없을 수 있으니 짐을 미리미리 챙기자… (충전기를 숙소에 두고 왔다…)
맺으면서
열정이 넘치는 참가자들과 함께 밤을 새워가며 작업하는 새로운 경험을 할 수 있었던 시간이었다. 서로 응원하고 자극을 주고받으며 짧은 시간 동안 하나의 서비스를 완성해 낸 순간을 잊지 못할 것 같다.
특히 연차를 4개나 쓰고 오신 현업자 분들 정말 대단하다고 생각한다.
돌이켜보니 목표했던 걸 모두 이루고 와서 너무나도 만족스러운 3박(?) 4일간의 일정이었다. 구름톤 지원을 고민하고 있다면 적극 추천한다! 밤을 새우고 와서 피곤해 생활패턴이 무너질까봐 걱정했는데 오히려 생활 패턴이 안정화되어 제대로 리프레시한 느낌이다. (제주도라는 새로운 환경도 한몫한 것 같다)
좋은 기회를 주신 구름과 카카오에게 감사 인사를 전하며 후기를 마친다.