Dev. Life

[해커톤] 오픈핵 2019 (Openhack 2019) 참가 후기

DevOwen 2019. 6. 29. 21:06

 

안녕하세요 메탈엔진입니다.

저는 지난 3박 4일(정확히는 2박 4일) 동안 해커톤 대회를 하고 왔어요! 대회 이름은 '오픈핵 2019 (Openhack 2019)'였고 전국에 있는 소프트웨어 중심대학 개발자들과 디자이너들이 참여해서 진행하는 해커톤입니다.

 

※ 해커톤이란?

해커톤(Hackathon)은 Hacker와 Marathon의 합성어로 정해진 시간(보통 1박 2일이나 2박 3일) 동안 개발자, 디자이너, 기획자 등이 모여서 결과물을 내는 대회입니다. 

 

이번 대회는 전라북도 익산에 있는 웨스트라이프 호텔에서 진행되었고, 저는 이번에 덕분에 익산을 처음 와보게 되었습니다. ㅋㅋ 익산에 가는 길에 SRT도 처음 타봤어요. 처음 해 본 것들이 참 많네요.

내가 받은 명찰 ㅋㅋ 뱃지도 받음!

 


 

첫째 날

수요일 대회 첫날에 저희는 가서 해커톤에 필요한 강연을 듣는 시간을 가졌습니다. 디자이너는 디자인 세션이 따로 있었고, 저를 포함한 개발자 학생들은 ZEPL 소프트웨어 엔지니어인 진유림 님의 git&github 강의를 들었어요. git을 어느 정도 알고 있었고 써 본 적도 있었지만 상당히 유익한 내용이 많았고 도움이 많이 되었던 것 같아요 ㅎㅎ

발표 후에는 후원사들의 회사 소개 시간이 있었어요. 카카오, 네이버 클로바, GroundX, PUBG, 당근마켓, ZEPL, CommonComputer 등등 여러 다양한 색깔은 가진 회사들이 와서 소개를 하고 갔습니다. 후원해주신 덕분에 행사에서 저희는 숙소, 밥, 교통 등등 필요한 비용들을 안 내도 되었어요. 정말정말 감사하네요 ㅠ

저녁을 먹고 저희는 행사장에 있는 150여 명이 모두 짧은 자기소개를 했고, 아이디어 피칭을 했어요. 서른몇 개의 아이디어 피칭이 있었고 1명당 제한시간은 60초였습니다. 저도 나가서 아이디어를 피칭하고 왔어요. 저는 사용자가 푼 백준 알고리즘 문제를 가지고 그래픽적으로 뿌려주는 알고리즘 지도 아이디어를 내 보았습니다.

2차 피칭 끝나고 찍은 행사장 분위기

1차 피칭 후 참가자들은 아이디어들에 대한 투표를 합니다. 그리고 상위 표를 받은 아이디어들은 2차 피칭 기회를 받는데요. 제 아이디어는 운이 좋게 그 안에 들어서 2차 피칭을 진행했어요. 2차 피칭도 동일하게 60초가 주어졌으며 저희 팀에 필요한 사람들을 소개하다가 시간이 끝났습니다.

그 이후에는 팀빌딩이 이루어졌어요. 팀은 개발자 4명과 디자이너 1명으로 이루어져 있고, 개발자는 같은 학교가 중복될 수 없는 규칙이 있었습니다. 저도 아이디어 피칭 후 최대한 많은 분들과 이야기를 해보고 팀 빌딩을 완료했는데요. 제가 프론트엔드 개발을 할 생각이어서 프론트엔드 1명, 백엔드 2명, 디자이너 1명 이렇게 구하려고 했는데 서버 지원자는 많았던 반면 프론트엔드 지원자가 없어서 조금 힘들었어요 ㅠ

총 29개 팀 중에 26번째로 팀빌딩을 해서 26조가 되었고 저희는 첫째 날 저녁에 닭강정을 먹으면서 간단한 기획 회의를 하고 개발환경 정도만 세팅한 후 자러 갔습니다. ㅋㅋ 경험상 이렇게 2박 3일 해커톤을 하면 첫날은 자야 했어요. 왜냐면 둘째 날은 거의 99% 못 자게 되더라구요..

그리고 저희가 아무래도 오픈소스를 이용한 해커톤이다 보니 오픈소스를 활용해야 했는데 저는 알고리즘 문제를 예쁘게 뿌려줄 수 있는 도구를 찾다가 mo.js라는 모션그래픽 라이브러리를 사용하기로 결정했습니다. (그리고 다음날 후회를 했습니다.) 라이브러리를 고를 때는 가능하면 많은 사람들이 github에서 star를 날리고 fork를 뜬 것들로 고르는 편이 좋아요. 왜냐하면 레퍼런스 할 자료들이 많기 때문이에요 ㅋ mo.js는 1만 5천 개 정도의 star를 받은 나름 꽤 유명한 오픈소스 라이브러리 이더라구요 ㅋㅋㅋ

프론트는 Vue.js라는 프레임워크를 사용하기로 했고 서버는 Django, DB는 MySQL로 하였습니다. 서버 쪽에서도 파이썬 웹 크롤링 라이브러리를 사용해서 백준 알고리즘에서 정보를 크롤링으로 가져오는 부분에 오픈 소스를 사용하였어요. (서버 쪽은 제가 잘 몰라서 자세한 설명은 생략)

 


 

둘째 날

둘째 날은 하루 종일 개발을 했습니다. (다음날까지 이어서...) 진짜 말 그래도 계속 개발만 해서 딱히 쓸 말이 별로 없네요.. 아침에 대회장으로 나와서 컵과일이랑 빵 좀 먹고 개발하다가 점심 먹고, 개발하다가 저녁 먹고, 개발하다가 야식 먹고, 개발하다가 아침 먹었어요(다음날)  그래서 이때 찍은 사진이 별로 없어요

저는 웹에서 사용자들이 푼 문제 정보(문제 번호, 문제 이름, 문제 정답률, 문제 유형 등)를 가지고 그 문제들을 유형으로 그룹핑을 해서 시각적으로 보여주는 부분을 맡았습니다. 원래 목표는 동적으로 움직이는 모션을 보여주고 싶었는데... 역량이 달려서 거기까지는 못했어요 ㅠㅠㅠ mo.js 라이브러리를 쓰면서 삽질을 되게 많이 했고 솔직히 조금 후회도 했던 것 같아요. 그래도 쓰면서 많이 배워서 성장했다는 점에 스스로 위안을 삼았습니다.

이런식으로 백준 문제들을 버블 하나하나에 대입해서 뿌려주려고 했어요

저희 팀은 다른 팀들처럼 많은 페이지, 다양한 기능을 만들지는 않았어요 ㅋㅋ 대신 이 기능(문제를 받아서 예쁘게 뿌려주는)에 집중을 했습니다. 그래서 되게 고민도 많이 하고 수학적인 부분도 생각을 많이 했어요. 예를 들면 원이 화면에 20개가 뿌려졌는데 마우스를 갖다 대면 하나씩 커지게 하는 부분도 되게 단순한 기능인 줄 알았는데 실제로 밑바닥부터 구현하려니까 생각보다 쉽지가 않더라구요. 

개발하다가 막힐 때는 멘토님들께 질문을 하러 많이 갔었는데 이렇게 멘토님들이 많은 점은 정말 좋았던 것 같아요. 아무래도 다들 대학생이고 개발을 전문적으로 오랫동안 한 사람들은 많지 않다 보니 개발을 하는 과정에서 막히는 부분들이 종종 생기거든요. 멘토가 없으면 혼자서 두세 시간 이상 고민할 수도 있는 부분들을 멘토님들이 해결을 해 주시고 그러한 과정이 계속 프로젝트를 디벨롭시켜나갈 수 있는 원동력이 되었던 것 같아요!

 


 

셋째 날

셋째 날 점심까지 개발을 해서 프로젝트를 완성했어요. 저희 프로젝트 이름은 Algoreader였고, 백준 알고리즘 문제 버블 지도 서비스를 만들었습니다. 마지막까지 다들 열심히 해주고 좋은 팀원들을 만나서 재밌는 경험을 할 수 있었던 것 같아요. ㅋㅋ

서비스 소개 판(?)
저희가 차린 algoreader 시연 부스입니다
algoreader 서비스의 첫 랜딩 페이지
저희가 만든 알고리즘 버블 지도 화면이에요 ㅋㅋ

저희는 개발한 서비스를 영상, ppt 등으로 보여주는 동시에 서비스 시연도 진행했습니다. 개발을 하는 학생들은 대부분 백준 알고리즘 아이디를 가지고 있어서 본인 아이디를 넣으면 지도를 확인할 수 있었어요. 다행히 시연을 하는 시간 동안에는 서버와의 통신이 크게 말썽을 부린 적이 없었고 많은 분들이 서비스를 좋게 봐주셔서 ㅠㅠ 전날 한숨도 못 잤는데 딱히 피곤하지는 않았던 것 같아요.

시연까지 마치고 참가자들의 투표 100%로 수상 팀이 결정되었는데요... Algoreader 팀은...

ㅠㅠㅠㅠㅠㅠㅠ 이 때 나도 모르게 너무 크게 소리 질렀음...

'정보통신기획평가원상(2등)' 받았습니다! ㅋㅋㅋㅋㅋㅋ

3일 동안 너무 힘들었는데 발표 듣는 순간 그 힘듦이 다 사라졌던 것 같아요 ㅋㅋㅋ 이번 대회에서는 상위 4팀까지 중국에서 열리는 해커톤 대회를 보내주는데 거기도 갈 수 있게 되었어요. 처음에 자기소개할 때 '중국 가고 싶다'라고 말했는데 정말 다행히도 그 목표를 이루게 되었네요 ㅎㅎ

사흘동안 정말정말 고생한 우리 팀원들

해커톤 마치고 팀원들하고 사진 찍고 맥주 한잔 하고... 저는 숙소에서 12시간 기절했습니다.

많은 것들을 배운 해커톤이었어요. git을 단 기간에 이렇게 많이 써본 적도 처음이었고, 서버와 통신해서 단시간에 무언가 의미 있는 결과물을 만들어보는 경험이 정말 보람 있고 재밌었습니다. 주변에 좋은 사람들이 많아서 이번 대회를 통해서 많은 것들을 가지고 갈 수 있었던 것 같아요! 이번 계기를 통해서 더 성장하는 개발자가 되려고 합니다 ㅎㅎ 그러면 오픈 핵 후기는 여기서 마칠게요.