작년 JUNCTION ASIA 2022 행사는 제게 있어서 웹을 공부할 거라면 이렇게 있어서는 안 되겠다, 라는 깨달음을 주었던 뜻 깊은 행사였습니다. 네, 수상은 못 했지만요. 그래서 다음 해에는 꼭 제대로 준비해서 수상하고 말겠다는 마음가짐으로 프로젝트도 만들고, 다른 대회도 나가보고, 대외 활동도 준비해보는 등 나름대로 대비하며 지냈습니다. 다만 불안했던 부분은 JUNCTION ASIA 2022의 주최였던 SHIFT가 알 수 없는 사유로 해체된 것으로 보이고, JUNCTION ASIA 행사를 유치한 부산광역시의 장이 바뀌는 바람에 정책적으로 축소나 취소가 될 수 있겠다는 점이었는데요, 실제로 다소 지원이 축소된 것으로 보이기는 했으나 다행히 카운트다운이 열리고 올해도 개최되었습니다.

불안했던 선발 과정

다행히 프론트엔드 단 오류였지만, 이 오류를 제보한 시점도 늦었고 답변도 마감 하루 전이었다.

처음 지원서를 작성하던 순간부터 지원서 접수 사이트에 버그가 있어 제출 전 검토를 시도하면 데이터가 사용자 측면에서만 보이지 않는 버그가 있었고, 지원자가 많지 않았던 것인지, 아니면 버그를 뒤늦게 제보받으면서 긴급히 연장한 것인지 접수 기간이 연장되면서 전반적인 일정이 조금씩 뒤로 밀렸습니다. 여기에 뒤늦게 다른 JUNCTION 행사와 형평성을 맞추기 위해 올해는 호텔을 포함한 시설 내에서의 숙박을 제공하지 않는다는 지침이 알려져, 이에 대한 대비도 필요했지만 너무 늦게 알려져 준비하기 쉽지 않았습니다. 아무리 미리 예약해두고 선발되지 않으면 취소하면 된다지만, 인원 수를 많이 뽑는 것도 아니고, 경우에 따라서는 취소 패널티가 있기도 하니까요.

특히 선발 인원 발표가 작년보다 늦어지면서 평소 이용 가능했던 내일로 티켓으로 KTX 예매하는 일이 꽤 어려워졌습니다. 매진 시간대가 많아 시간대를 고르기 쉽지 않았기 때문인데요, 다행히 일요일 올라오는 표는 비교적 구하기 어렵지 않았습니다.

호텔 미제공 대신 신세계백화점 센텀시티점 내에 위치한 스파랜드 이용권이 1매 제공되었는데, 결과적으로 보면 큰 도움이 되었지만 사우나 영업 시간이 24시간이 아니었던 탓에 자유롭게 이용하기 어려웠습니다.

스릴 넘치는 팀 빌딩

작년에는 인터넷에서 미리 팀을 짜서 갔지만, 올해에는 조금 새로운 도전을 해보고자 개인으로 참여했습니다. 다양성 측면에서도 이렇게 지원하는 것이 더 좋겠다고 생각했고, 올해 다른 해커톤도 팀 빌딩을 해보니 그리 경험이 나쁘지 않았기 때문에 용기도 났습니다. 그러나 문단 제목에서 알 수 있듯, 팀장님께서 피치 못한 사정으로 참여하지 못하게 되어 팀이 해체될 뻔하고, 다른 팀원을 구해보고자 했으나 이미 팀을 짜서 참여한 인원이 많아 팀원을 구하기 어려운 상황 등 다양한 어려움이 있었습니다. 그래도 기존 팀장님께서 만들어 주신 자료나 팀명 등은 사용할 수 있었고, 다행히 기한 내에 직접 팀원을 구하는 데 성공하여 랜덤 팀 빌딩으로 넘어가는 사태는 막아 지금도 다행이라고 생각합니다. 팀이 와해되는 일을 막기 위해 노력해주신 잔류 팀원 전원과 마지막으로 합류해주신 백엔드 팀원분께 이 자리를 빌어 감사드려요.

그런데 해커톤 시작 전인 17일 오후 9시까지 등록을 하긴 해야 해서, 트랙 안내가 나가기 전에 팀장을 정해야 하는 점이 좀 걸리긴 합니다. 
될지는 모르겠지만 이름만 올려놓고 실질적인 팀장은 다른 분께서 맡는 것이 가능하다고 하면 팀 생성 및 팀 등록 현황 확인은 제가 맡겠습니다
이때의 전 몰랐어요. 이름만 올려놓으면 돌이킬 수 없는 팀장 직이 된다는 사실을.

이 과정에서 주최 측과 연락을 주고 받으며 필요한 상황을 처리할 임시 팀장을 다시 정할 필요가 있었는데, 일단은 제가 나서서 처리하였으나 대회 정책상 돌이킬 수 없게 되어 그대로 이름 뿐인 팀장이 되었습니다. 이후로 팀장이라는 직함을 필수로 요구하는 일은 기본적으로 제가 처리하긴 했지만, 발표, 멘토 질의, 아이디어, 팀 빌딩 등 다양한 부문에서 저를 제외한 모든 팀원 분들도 각자 주도해주셔서 개인적으로는 이 팀의 모두가 팀장 급으로 활동하시지 않았나 생각합니다. 요컨대, 저는 LTE 라우터를 빌릴 때 필요한 신분증 셔틀이었다는 것이 저의 주장입니다.

후원사 홍보 타임!

JUNCTION ASIA는 특이하게 해커톤에 앞서 각 트랙에 해당하는 후원사에서 홍보를 진행하는데, 작년과 달리 올해는 모든 트랙이 홍보를 진행하진 않았던 것으로 기억합니다. 뭔가 여기서도 일정 조정이나 오표기가 있었던 듯 싶고요. 어쨌든 작년 홍보는 트랙에서 만들어야 하는 프로젝트에 직접적인 영향을 많이 미쳤는데, 올해는 5개 트랙 중 1~2개를 제외하고는 감을 잡기가 애매모호한 내용이 주를 이뤘습니다. 이제 와서 돌이켜보면 숙박과 마찬가지로 아마 이런 측면에서도 작년 행사가 처음이었던 만큼 이례적이었던 것이 아닐까, 싶기도 하네요.

그래서 후원사 세션만 보고 예측했던 결과, 단 한 개의 트랙만 무엇을 구현하면 되는지 맞출 수 있었습니다. 개인적인 흥미는 있었던 트랙이었는데, 하드웨어(전자종이)를 다뤄야 하는 유일한 세션(솔루엠)인 탓에 다루기 까다로웠고 테스트와 개발을 위한 하드웨어 수량도 한정되어 있어서 실제 현장에서는 하이 리스크 하이 리턴이었습니다. 결과적으로 행사에서는 해당 트랙을 공략한 팀이 JUNCTION 2023 본선행 티켓을 획득하였는데, 어려운만큼 확실한 보답을 얻었으니 그 팀은 참 뿌듯하지 않았을까 싶어요.

1일차: 짧은 부산 여행

작년에도 김해에 거주 중인 지역 주민 분과 밀면을 먹고 서면 교보문고에서 시간을 보내는 등 짧은 부산 여행을 할 기회가 있었는데요, 올해도 조금 일찍 구경다니고 싶어서 기차표를 점심 즈음으로 끊고 작년과 같은 분과 낙곱새와 커피를 먹었습니다. 특히 낙곱새는 작년 해커톤에서 프렌차이즈인 개미집만 가보았으나 이번에는 현대백화점 부산점 주변의 지역 맛집에 가게 되어 굉장히 기대했었는데, 역시나 다른 의미로 상당히 맛있어 다음에 갈 수 있다면 또 가고 싶은 집 중 하나입니다. 밑반찬으로 나오는 부추가 상당히 고소해서 낙곱새가 익기도 전에 다 먹어버렸고, 낙곱새도 짭잘하지 않게 간이 잘 베어있어 제 입맛에 상당히 만족스러웠습니다. 지난 해커톤에서도 먹는 얘기 하지 않았나요? 사진이 없는 점은 아쉽네요. 그만큼 맛있게 먹었습니다 :)

부산역 너머에서 커피를 마시고 서둘러 벡스코로 향하던 중 본 바다 경치는 "내가 부산에 왔구나", 하는 감상을 불러왔습니다. 그러나 길을 잘못 들거나, 화장실이 급해 좀 더 늦어지는 등 첫 날부터 아슬아슬했고 결국 살짝 늦게 도착했습니다. 다행인 점은 아직 줄이 모두 해소되지 않았고 팀원들도 한 명을 제외하고는 모두 늦어 비슷한 시각에 도착했다는 것이었습니다. 긴 줄을 기다려 스파랜드 티켓과 굿즈 박스를 받고 입장하였는데, 행사장의 풍경은 작년과 크게 다르지 않았습니다.

1일차는 아니고 3일차 행사장 풍경. 앞만 보면 2022년과 거의 동일한 배치이다.

그러나 조금 다른 점이 있다면 2022년에는 행사장 정면 왼편에 세 개의 트랙 부스가 있었고, 행사장 입구 방향의 휴식 공간이 완전히 열려 있었는데 2023년에는 휴식 공간에 방처럼 파티션이 추가되었고, 그 파티션 앞으로 트랙 부스가 놓였습니다. 기존보다 트랙 부스가 더 잘 보여서 여쭙기 수월한 점이 좋아보였으며, 호텔이 제공되지 않는 올해 행사의 문제를 완화하기 위한 노력이 보였습니다. 특히 JUNCTION ASIA 행사는 올해도 트랙 부스에 계신 분들이 곧 심사위원이기에, 주제에 대한 힌트를 자주 얻으러 갈수록 이점이 있는 만큼 개선된 배치 방법이라고 느껴졌어요.

그리고 올해는 LTE 라우터를 대여하는 방식으로 인터넷 접속 방식이 개선되었는데, LTE와 5G조차 제대로 되지 않았던 공동 해커톤과 달리 장소가 도심이고 더 큰 행사장이어서 그런지 대여받은 라우터로도 팀원 전원이 사용하는 데 지장이 없을만큼 속도가 나와주었습니다.

그래서 어떤 트랙을 고르나

이번 해 트랙은 다음과 같았습니다.

  • 신한카드 & 부산관광공사 부산광역시 오픈 API 및 신한카드 비공개 데이터를 이용한 "A Better Life Using Public Data"
  • Jaka Robotics & Podosees(한국 총판) 음식 조리 로봇에 대한 편견을 타파하는 주문 시스템
  • Solu-M 전자종이 활용처 확대를 위한 신규 솔루션 개발
  • Ground K "평소와는 다른 교통" 여행에서의 교통 솔루션?
  • CNT Tech 배달 음식 의존도를 낮추고 포장 주문을 장려하는 서비스 개발

당시에는 2030 엑스포를 준비하던 시기였기 때문에 엑스포와 관련하여 교통이나 관광 방향으로 주제가 준비되어 있었고, 그 밖에 전자잉크 디스플레이의 활용성을 확대하려는 Solu-M 트랙과 로봇 음식 제조의 장점을 살리고 거부감은 줄이는 방향의 Jaka Robotics 트랙도 있었습니다. 처음 예상했을 때는 Jaka Robotics도 하드웨어 트랙일 것이라고 생각했는데 로봇을 대회장에서 활용하기 어려워서인지 하드웨어와 연결하는 SDK조차 사용하지 않아 처음 안내받을 때 조금 충격이었습니다. 오히려 식음료 업장에서 많이 사용된다는 점을 어필해서 푸드 테크 분야를 강조한 CNT Tech와 부분적으로 겹친다고도 볼 수 있어서 아쉬움이 남았습니다.

맨 처음 팀에서 고르지 않기로 결정한 트랙은 CNT Tech와 신한카드였습니다. 신한카드 트랙은 비공개 데이터를 공유받는 만큼 금융과 연관이 있으리란 계산은 되나 데이터 종류가 상당히 방대한 탓에 어떤 아이디어를 선택해야 할지 고민이 많이 드는 주제였고, CNT Tech는 이미 포장 주문 애플리케이션이 상당히 많이 나와있어서 경쟁력있는 아이디어를 구현하기 어려울 것으로 보였습니다.

남은 트랙 중 앞서 언급했던 Solu-M 트랙은 전자잉크 장치가 한정되어 있고 전용 SDK를 사용해야 해서 확실한 아이디어가 없으면 선택하기 쉽지 않았습니다. 전자책 리더기를 자주 사용하는 저로서는 호감이 가는 주제였지만, 전자책 리더기, 대형마트 가격 표시기, 버스 도착 정보 안내기처럼 일부 영역에서 사용되고 있다는 건 알지만 어떤 아이디어를 선택해야 전자잉크 특유의 느리고, 리프레시 현상에 익숙하지 않은 사람들을 어떻게 설득할지 자신이 없어서 결국 선택하지 않았습니다. 참고로 이때 1위 수상했던 팀은 레스토랑에서 사용하는 빌지(영수증)를 전자종이로 대신하는 아이디어를 냈습니다. 이렇게 보면 쉬워보이지만 저도 마지막날 발표 현장에서 목격하기 전까지는 전혀 생각하지 못한 생각이었어요.

이렇게 소거법으로 마지막까지 선택지에 남은 트랙은 Jaka Robotics와 Ground-K. 대회만 나가면 뭐 먹은 얘기를 하는 제게 걸맞는 음식 관련 주제를 할지, 교통 관련 주제를 할지 고민되기는 했으나 시간이 지남에 따라 Jaka Robotics로 굳어졌습니다. Ground-K 관련으로 논의할 때는 수요 응답형 버스, 관광지 관련 큐레이션 등의 아이디어가 나왔지만 결정이 좀처럼 되지 않았고, 결국 Jaka Robotics를 선택하는 것으로 결정하였습니다.

하드웨어와는 인연이 없는데⋯그래도 그냥 하는 마음

그러나 트랙만 정하면 다는 아닌지라, 일단 자세히 분석해보기로 했습니다. 사실 로봇에 별 관심이 없었던 저로서는 장점도 단점도 구하기 힘들었어요. 세션에서 들었던 예시는 개인 맞춤형 조리 서비스였고, 그나마 팀원들과 함께 고민한 결과 주요 장점이 일관성, 예측성, 데이터 저장과 이용이었습니다.

그러나 이렇게 해서 도출된 신용카드 카드 정보를 이용한 비-멤버쉽 회원 주문 저장 및 추천 기능은 트랙 멘토 분들께 여쭤본 결과 보안 문제로 현실화되기 어렵다는 결론이 내려졌고, 이에 아이디, 비밀번호 기반으로 우회하는 방향으로 결정되었습니다. 이 밖에도 조리 소요 시간, 재료 조절에 따른 환경 포인트 적립 등의 아이디어가 추가로 나와 함께 구현하기로 하였습니다. 이런 내용들을 잘 정리해서 미국에서 오신 기획자 님께서 영문으로 Proposal을 작성해주셨고, 첫째날 자정을 넘기기 전에 제출을 마쳤습니다.

서비스 이름도 정했는데, 영어권 이름 'Bob'과 한국어 '밥'의 발음이 유사한 점을 고려하여 사용자의 친구임을 강조함과 동시에 사용자가 원하는대로 맞춤형 설정이 된다는 의미를 담아 'BoB(Bring your own Bob)'이 되었습니다.

디자이너 분께서 만들어주신 서비스 로고. 밥 그릇 안에도 BoB이 있다는 점이 흥미로웠어요.

프론트엔드는 저와 다른 한 분이 함께해주셨는데, 처음부터 React 가능하신 분을 모집하고 계셨기에 당시 제작하고 있던 폐의약품 수거지도 프로젝트 경험(Next.js App Router)을 바탕으로 이번에도 Next.js App Router를 기반으로 하기로 하였습니다. 다른 한 분께서는 Next.js Pages Router가 더 익숙하셨으나 경험이 부족했던 제게 맞춰주신 거라서 구현에서 많은 도움을 받았습니다. 제가 프론트엔드이긴 했지만 팀장셔틀이라도 맡지 않았더라면 부끄럽게 생각했을지도 모르겠어요.

멘토 님께 자주 묻는 팀이 '정답'에 가까워질 거라는 믿음

대략적인 방향성이 정해진 뒤 저희 팀의 전략은 멘토님 괴롭히기 였습니다. JUNCTION ASIA는 경험했던 다른 해커톤과 달리 심사위원이 곧 멘토 님이어서 멘토 님의 취향을 파악(?)하는 것이 무엇보다 중요했기에, 작년에 꾸준히 방향성을 질문하지 못한 끝에 좋은 결과로 이어지지 못했던 점이 너무 아쉬웠어요. 그래서 주제 선정부터 추가 아이템, 서비스 아이디어, 구현 한계점 등 다양한 측면에서 돌아가면서 질문을 던지고 최대한 좋은 반응을 이끌어내는 것을 목표로 했습니다. 다만, 저희가 마지막까지 다양한 보완 아이디어를 냈음에도 불구하고 멘토 분들께서 원하는 결과물로 완성하지는 못했습니다. 결과적으로 보면 확실한 인상을 남기는 데에는 성공했지만, 목표했던 바를 온전히 이루지는 못했던 겁니다.

2일차: 춥고 아파요

본래 첫째날 자정 전후로 아이디어를 정하고 나면 쉬어왔기에, 이번 해커톤에서도 그렇게 하기로 했습니다. 그런데 호텔을 제공하지 않았고 스파랜드도 영업 시간이 아니었기 때문에 다들 행사장 구석 휴식 공간으로 몰렸고, 순식간에 빈백(Bean Bag) 자리가 모두 동나 바닥에 누워야만 했습니다. 그런데 문제는 작년과 달리 행사장 홀 바닥에 위치한 에어컨을 칸막이가 막고 있지 않아서 상당히 추웠어요. 당시 같은 행사에 다녀오셨던 다른 팀 분도 너무 추웠다고 하셨던 걸 보면 저희만 그런 건 아니었던 듯한데, 에어컨 약하게 해달라는 요청에도 한계라는 안내에 어쩔 수 없이 버텨야만 했습니다. 기억이 맞다면 지난 공동 해커톤 때 받은 담요도 챙겼던 것 같은데, 그래도 추워서 여름이 맞나 싶었어요.결국 저는 고작 몇 시간의 추위에 버티지 못하고 몸살 기운이 도졌고, 중간에 운영 팀으로부터 종합 감기약을 챙겨 먹어야 했습니다.

키오스크 첫 화면

아침에는 디자이너 분이 키오스크 디자인을 마무리하셨고, 프론트 팀도 첫 화면을 시작으로 디자인에 맞춰 구현에 들어갔습니다. 그러나 바로 추가 구현에 들어가지는 않았고, 좋지 못한 상태를 감안해 본래 전날 새벽에 이뤘어야 했던 '충분한 휴식'을 위해 지급받은 스파랜드 이용권을 쓰기로 했습니다. 아무리 온천이라고 해도 그 정도로 피로가 풀린 적은 없었는데 이때만은 상당히 효과적이었습니다. 4시간 이용권에 불과한지라 온천욕 후 사우나에서 1시간 남짓 잠을 청하는 것이 다였지만, 좋지 못한 몸으로 낮동안 버틸 수 있는 체력을 쌓아주기도 했습니다.

이후 점심부터는 식권을 이용해 작년과 마찬가지로 제1전시장 지하 식당에서 식사했습니다. 작년에는 식권을 각자 사용하고 추가 금액을 결제하는 방식으로 쓰다보니 자연스럽게 바빠서 생략하게 되는 아침 분에 해당하는 식권이 남았는데, 올해는 한 사람에게 몰아준 다음 아침 식권까지 사용한 덕분에 딱 맞게 쓸 수 있었습니다. 다만 둘째 날 저녁에는 갔던 식당의 메뉴 대부분이 매진되는 바람에 주문이 아슬아슬했습니다. 메뉴 선택권이 전혀 없을 뻔했어요.

저녁 이후에는 팀원 중 한 분께서 분식 대신 칵테일을 주제로 하는 변경이 어떤지 아이디어를 내주셨습니다. 그러나 이미 상당 부분 구현이 되어있는 상태였고, 이제 디자인을 변경하기에는 모험을 필요로 했기 때문에 변경하지 않고 기존 기능을 강화하는 방향으로 가기로 하였습니다. 의견을 내주셨음에도 불구하고 반영되지 못해 아쉬우셨을텐데, 이러한 결정에 양해해주셔서 이 자리를 빌어 감사드리고 싶습니다.

3일차: 무난한 마무리, 그리고

회고가 너무 늦어진 탓에 첫째날이었는지 둘째날이었는지 기억이 살짝 애매하기는 한데, 아마 이틀차에서 마지막 날 넘어가는 밤이었을 겁니다. 더 버티지 못하고 그나마 적당한 온도를 유지하던 BEXCO 복도 의자에서 잠을 청하기로 하였습니다. 처음에는 4D홀 근처에서 누웠을 것이 분명함에도 일어나보니 4C 홀이었습니다. 제가 평소 몽유병을 경험해 본 적은 없다보니 상당히 당황스러운 경험이었어요. 잠결에 팀원들이 와서 무언가 말하기에 일어나긴 했지만 전혀 들리지 않기도 했습니다. 그만큼 상태가 안 좋았던 것이었겠지요. 지금 와서 돌이켜봐도 3등씩이나 할 수 있었던 것은 팀원분들 덕분이었으리라 싶습니다.

그 후 개발은 백엔드와 프론트엔드를 연결하고, 기획은 디자이너 분과 함께 발표 자료를 만드는 방향으로 이뤄졌습니다. 지난 공동 해커톤에서는 이 단계에서 요청을 백엔드 서버가 제대로 인식하지 못하는 문제가 있어 로그를 보면서 수정했었는데, 이번에는 문제가 발생하지 않았습니다. 대신 이유를 알 수 없는 500 에러가 간헐적으로 발생해, 백엔드 개발자 분께서 고생해주셨습니다.

마지막 발표 자료 제출을 마치고 FINAL MISSION END가 나올 때까지 여유있게 기다리다 찍은 사진

발표 자료는 예정 시간보다 상당히 여유있게 제출할 수 있었고, 기획자 분께서 미국에서 오신 덕에 발표를 상당히 매끄럽게 감당해주셨습니다. 심사위원 분들께서는 질문을 거의 던지지 않으셨는데, 시연이 가능한지 여부를 확인하시고는 다음 팀으로 넘어가셔서 저희를 잔뜩 긴장케 했습니다. 저는 지난 공동 해커톤에서 질문이 하나도 나오지 않은 채 끝장이 난 경험을 맞이한 직후였고, 다음 팀에서는 이런저런 질문을 던지시느라 많은 시간을 쓰셨기 때문에 비관적인 예측이 팀 내에 자리잡았습니다. 그런데,

3등 수상과 함께 받은 굿즈들

결과는 3등이었습니다. 어리둥절해서 일단 신나기는 하는데 제대로 사진도 못 찍고 내려왔습니다. 팀원 중 한 분께서는 매번 3등만 하는데 이번에도 3등을 했다며, 조금은 지겹다는 농담을 던지기도 했지만 어쨌거나 3등이라도 할 수 있어서 다행입니다. 이 날 저는 남은 이용권을 소진할 겸 저녁 식사 후 열차를 타기 위해 스파랜드로 갔고, 이후 상장과 본래는 상품권이었던 상금에 변화가 있어서 시간이 조금 더 걸리기는 했지만 세금을 제외한 현금으로 받은 후 팀원 분들께 분배하는 단계를 끝으로 마무리되었습니다.

마무리

22년도에도 23년도에도 이 해커톤은 여러 어려움에도 불구하고 제게 도전과 모험을 잊지 않게 해준 대회였습니다. React조차 할 줄 모르던 저를 그래도 Svelte와 React 정도는 할 수 있는 사람으로 만들었고, 다양한 해커톤에 나갔음에도 수상은 19년도 교내 해커톤이 다였던 제게 오랜만에 상을 받게 해줬으며, 결국 이 대회에서의 수상실적 덕분에 이공계 국가우수장학금까지 받을 수 있었습니다. 아쉽게도 24년도에는 일정 중복 문제로 참여하지 못했지만, 25년도에도 계속된다면 다시 도전할 것 같습니다. 올해는 부산이 아닌 경주에서 열렸던데, 23년도보다는 더 나은 운영으로 참가자 분들께서 큰 어려움 없는 대회였길 바랍니다.

이 글에서 언급하는 모든 '작년'은 2022년입니다.