개요
2023년 1월 14일 ~ 1월 15일동안 열린 고등학생들만 참가하는 해커톤 "하이톤"을 끝내고 학교에 와서 이 글을 끄적여본다.
이번 하이톤을 진행하며 많은 것을 느꼈고 성장했다. 육체적으로도 정신적으로도 진화했던 기회였다.
아직 2023년이 된지 거의 3주 정도밖에 지나지 않았지만 이번 하이톤이 나에게 있어서는 2023년에 가장 기억에 남는 경험중 하나라고 확신한다.
대회에 참가하기 전
학교 선배에게서부터 고등학생들만 모여 진행되는 해커톤이 있다고 들었고 신청 폼까지 받게 되었다.
나는 아직 1학년이기도 하고 부족하다고 생각되는점도 많아서 참가를 해야하나 말아야하나 깊이 고민을 하는 시간을 가졌다.
그러다 학교 선배분중 한명께서 충분히 너는 나갈만하다고 괜찮다고 말해주셔 용기를 내 신청폼을 작성하게 되었다.
그 후 친구들에게도 하이톤의 모집공고를 보내며 함께 나가자고 제안을했고 나 포함 3명정도의 GSM(광주소프트웨어마이스터고등학교)의 1학년들이 지원을했다...
그러나..
코로나로 인해 80명의 인원을 60명으로 줄이면서 참여를 하지못하는 인원이 생겼다고 공지가 왔었다.
설마설마 했지만 .. 결국엔 GSM 1학년중에는 나 혼자만 하이톤에 참여하게 되었다. 이럴수가 살려줘
물론 하이톤에 참여하는 2학년 선배들은 같은 팀에 속해있기도하고 아는사이라서 그렇게 걱정할 필요는 없었지만...
왠지 모르게 걱정이 되긴 했다. 하지만 가만히 걱정만 한다면 그 걱정은 더욱 나를 괴롭힐 것이다.
차라리 잘 된 기회다 다른 사람들하고 커뮤니케이션을하며 인맥을 쌓고 성장하잔 마인드로 난 다시 개발공부에 임했다.
하이톤 출발
학교 선배가 감사하게도 나와 함께 서울로 같이 가주신다고 하셨고 기차를 끊고 서울로 출발했다.
아침 6시에 일어나서 7시 50분에 기차를 탔다. 그 후 지하철을 타고 환승을해가며 11시쯤 역삼역 4번출구에 도착했다.
그렇게 카페에서 잠시 들러 시간을 때우다가 나머지 인원들을 만나 밥을 먹고 하이톤 건물로 들어갔다.
하이톤
처음 들어갔을때 아는 얼굴도 있었고 물론 모르는 얼굴이 훨씬 많았지만 4기 선배분도 있으셨고 일산 미디어 테크쇼에서 만났던
몇몇 아는 얼굴도 있었기에 걱정에 비해 긴장도 풀리고 아주 설레는 시간이었다. 그리고 메이플 슬라임 인형(이건 진짜 맘에듬)과
인프런 강의 쿠폰, 여러가지 스티커들을 선물로 받았다. 그렇게 자리에 앉아 담화를 나누고있다가 하이톤이 시작된다는 공지를 들었다.
드디어 첫 해커톤이 시작되는구나 설레이는 마음으로 하이톤의 인사말을 듣고 여러 후원사들을 소개받은 뒤 팀 빌딩 규정과 주제를 들었다.
"팀 규정은 같은 학교 2명이하 다른학교 2명으로 빌딩해주시고 주제는 MZ 입니다."
MZ라는 주제가 매우 어렵다면 어렵다고 말할 수 있는 주제였고 같은 학교 2명이하 라는 규정을 듣고 반은 설렜지만 반은 걱정이 되었다
"날 데려가 주긴 할까?" 라는 생각이 머리속에 계속 맴돌았지만 일단 적극적으로 해보자 라는 마인드로 팀을 구했다.
그렇게 여러 시행착오가 있었지만 팀 빌딩을 끝냈다 내 팀은 디자이너 1 백엔드 1(나다) iOS 2로 나름 균형있게 잘 집혔다.
팀빌딩이 끝나고 아이스브레이킹시간으로 이벤트를 진행했는데 첫 이벤트는 가위바위보였다. 설마 내가 되겠어 라고 그냥 생각없이 가위바위보를 진행했는데 어머나 이럴수가 내가 되버렸네..? 하고 책을 받게되었다. (알고리즘 책 맛있다..)
여러가지 재미있는 활동을 끝낸 뒤 본격적으로 팀 이름과 자기소개를 했고 팀원들끼리 친해지는 시간을 가지게 되었다.
팀 이름은 Maybe로 지었다. 여러가지 이름을 생각하다가 그냥 Maybe라는 이름이 좋겠다고 feel이 왔기때문에 고르게 되었다.
그리고 나는 팀장역을 맡았으며 하이톤 참가의 시작을 알리는 팀등록을 하게되었다.
그렇게 팀 등록을 하고 MZ에 관해서 아이디어를 생각해내었다. 브레인스토밍 형식으로 MZ관련 문제나 주제에 대한 이해를 위해 팀원들끼리 대화를 이어갔다. 그러다가 데일 카네기 인간 관계론에 나온 인간은 항상 주목받고 싶어하는 열망을 가지고있다는 문구가 생각나 MZ들이 주목 받을 수 있는 순간이 언제가 있을까? 라고 생각을 해보다 결국 축제라는 곳에서 주목을 받을 수 있다고 생각해내었다.
축제 공고글이나 오디션 모집글 오디션 신청하기와 같은 축제관리에 필요한 여러가지 유틸들을 넣은 축제관리 어플을 만들자!
그렇게 생성된 프로젝트가 Attention 이라는 프로젝트다.
처음 프로젝트를 진행할때는 요구사항 정의서를 썼다. 이러한 기능이 있고 이러한 버튼이 있으며 등등의 여러가지 요구사항들을 표로 정리해놓았다. 디자이너도 함께 보고 아 이거구나? 라고 이해할 수 있도록 클라이언트 관점으로 요구사항을 명세했다.
원래는 기능명세서도 쓰려고 했지만 그러면 시간소모가 너무 많이 들기때문에 요구사항만 보고 API명세서만 쓰기로 했다.
아 그리고 우리가 사용한 기술 스택은 Swift, Spring boot, MySQL, Ngrok, Figma 이다.
일단 프로젝트 시작 전에 ERD를 설계했고 그 ERD대로 entity를 매핑한 후 제대로 프로젝트를 시작했다.
데굴데굴
일단 Attention 프로젝트의 대표적인 기능은 축제 공고, 오디션 모집 공고, 오디션 모집 신청 이렇게 3가지가 있다.
Security 파트와 축제 공고 CRUD를 먼저 빠르게 만들고 오디션 모집 공고도 이어서 구현했다.
순조롭게 진행되었다. Ngrok을 사용해 쉽게 로컬로 프론트와 연동했고 딱히 서버를 띄울필요가 없다고 생각해 로컬로 연동을 했다.
중간중간 개발을 하다가 밥도먹고 이벤트도 중간중간 하이톤측에서 진행을 해주어 나름 시간이 빨리갔다.
그리고.. 한가지 문제가 생겨버렸다.
예약기능을 개발하면서 백엔드 개발자들이 가장 무서워하는 예외중 하나인 NullPointException 이라는 문제가 생겼다.
왜 일까.. 이 오류때문에 멘탈이 나가는줄 알았다. 어디서 Null이 된걸까? 일단 코드상으로 넘어온건 문제가 없어보였다.
답은 데이터베이스에 있었다. 오디션 공고나 축제 공고를 Create하는 과정에서 Null값을 가지고있는 더미데이터가 하나 더 추가가 되는 오류가 생겨버린것이다. 그 문제는 바로 멤버와 모집공고,오디션공고의 연관관계에서 나타났는데.
여기서 마이페이지라는 기능을 소개하겠다. 자신의 이름, 연락처, 오디션에 필요한 자신이 축제에 무엇으로 참여하고싶은지 분야를 (노래, 춤 기타 등등) 보여주고 자신이 등록한 게시물들과 오디션 신청현황을 체크할 수 있는 기능들이 있다.
그런 기능을 구현하려면 멤버와 게시글들의 연관관계를 매핑했어야했고 게시글을 등록하고 멤버가 등록한 리스트에도 게시글을 등록했다. member를 등록하고 save한 후 게시글도 save했는데 더미가 생겨버린다.. 이상한 필드도 생기고.. 그 이유는 매핑된 필드의 이름이 다른것이다. 예를들면 contest_schedule_id, schedule_id 이렇게 구별되어있는데 이 값때문에 contest_schedule 테이블이 schudule_id까지 가지게 되는 실수를 해버린 것이다. 그렇게 NullPointException을 무사히 넘길 수 있었다.
일단 API들은 전부 만들고 명세서도 전부 작성했다.
일단 개발을 끝냈고 중간중간 문제가 있어 함께 팀원가 고치는 시간도 가졌고 무사히 완성이 되긴 했다.
그렇게 발표준비를 위해 PPT도 준비했고 남은건 시연영상이였다. 그러나 ...
오디션 신청기능에 알수없는 오류가 생겨버렸다고 한다. 그렇게 시연영상에 주요 기능중 하나인 오디션 신청기능을 넣지 못했고
결국 로그인 회원가입과 축제 신청, 마이페이지와 같은 기능만 넣게 되었다. 조금 아쉽지만 일단 아쉬운데로 발표 준비를 했다.
발표 순서가 나왔는데 이럴수가 .. 첫번째로 발표를 맡게 되었다. 첫 해커톤인데 시작을 알리는 첫 발표라니.. 큰일났다.
매우 긴장했고 몸도 정신도 피곤한 상태였지만 일단 해보자라는 마인드로 발표를 시작했다.
어텐션 프로젝트의 소개는 책의 문구를 인용하고 프로젝트 방식과 프로젝트 주요 기능을 소개했고 시연영상도 보여주고 QnA도 하고 나름 무난하다면 무난하게 넘어갔다고 생각한다. 사실 다들 밤샘작업때문에 다들 피곤하신 상태로 발표를 보느라 고요하고 또... 싸했다..
다른 팀들의 발표를 보면서 이런 것도 되는구나 이런 기능을 구현했네? 하고 여러가지를 느낄 수 있었다.
여기서 내가 해커톤에 관해 느낀점이 있는데 그 중 하나는 로그인 회원가입 관련해서 하나를 느꼈다. 내가 느낀건 로그인 회원가입을 구현해도 아이디 비밀번호.. 이런 규약들 말고 그냥 이름으로 가입하고 token 사용하자 라는 느낌으로 기능을 구현하면 되겠다고 생각했다.
보안관련한 파트는 솔직히 말하면 주요 기능이 아니라고 느꼈기 때문이다. 하지만 로그인 기능이 있으면 멤버 관련 유틸들에 코드를 짤때 조금 더 효율적으로 currentUser와 같은 짤 수 있기 때문에 아예 구현을 안하는 것 보다는 가볍게 만드는게 낫다고본다.
그리고 시연영상 할때도 주요 기능들 위주로 더욱 비율을 가져가야겠다는 것을 많이 느꼈다.
해커톤을 마치며
그렇게 길다면 길었고 짧다면 짧았던 나의 첫 해커톤은 막을 내렸다. 아쉽게 시상을 하진 못했지만 난 시상보다 더욱 값진 과정들을 얻었다고 생각한다. 사진도 찍고 대화도 나누며 시간을 때우다 하이톤 건물 밖으로 나오게되었다. 시간이 이렇게 빨리 지나는구나? 살면서 이렇게 시간이 빨리지난 것 같다는 느낌이 든것도 처음이다. 식당에서 국밥한그릇 땡기고 선배분들과 대화도 나눴다. 잘했다고 선배들이 칭찬해주시기도 했고 서로의 프로젝트 협업 과정도 들으며 회고하고 또 회고했다. 그리고 기차를 타고 다시 광주로 출발을 했다.
아 맞다 이건 잠시 지나간 이슈인데 하이톤 종료시간이 11시 30분정도였는데 기차를 11시에 끊어서.. 위기였다. 어떡하지 밤 10시 기차가 있긴한데.. 걱정하다가 다행이 2시기차가 순간 자리가 생겨 빠르게 먹었다. 휴 다행이다.. 큰일날뻔
기차에서 기절을 해버리고.. 집에 들렸는데 우리학교에서는 토익사관학교라는걸 진행해서 방학시즌인데도 기숙사로 돌아가 토익을 풀다 잠에 들었다. 잠이 너무부족해서 해커톤 다음날엔 죽을뻔했다.. 어쨌든..
이번 하이톤을 통해 프로젝트를 처음으로 완성하고 시연까지 해보아 값진 경험이었고 인맥도 쌓고.. 그냥 안힘들었다고 하면 거짓말이겠지만 내가 지금 얻은 경험은 나에게 매우 값진 경험이기때문에 힘들었던 기억이 점차 사라지고있다. 다음 해커톤에서는 이번에 얻은 경험을 토대로 꼭 좋은 과정뿐만 아니라 좋은 결과도 함께 내고싶다. 하이톤에 참여하셨던 모두 수고하셨습니다!
'in khope.' 카테고리의 다른 글
안녕, 나의 __ 했던 2023 (18) | 2023.12.16 |
---|---|
개발자 공부 어떻게 해야하나요? (9) | 2023.10.17 |
☁ goormcamp 하이스쿨 알고리즘 캠프 수료 후기 (0) | 2023.02.12 |
😭 생일날 오타 하나때문에 10시간을 삽질한 개발자가 있다? (1) | 2023.02.06 |
✨ GSM 신입생들에게 해주고픈 이야기와 나의 1학년 (0) | 2023.01.19 |