생애 첫 해커톤을 다녀왔다 ! ! 🙂
이번주는 5일 내에 전과 면접 보고, 해커톤 다녀오고, 전과 결과까지 나온 아주 바쁜 주간이었다.
1월 초에 학교 홈페이지에서 공고를 보고 해커톤에 참여해보고 싶어 신청서를 제출했다. 인터넷에 대학생 테크 블로그들을 보면 다들 해커톤은 한 번씩 다녀왔다는데 나만 아직도 참여 못해본 것 같아 항상 참여 의지가 있었다.
사실 나는 '해커톤에 참여하려면 단기간에 가시적인 결과물이 보여줘야 하니 내 실력으로는 안되겠지..'라고 생각해 왔다. 이번 활동으로 알게 된 것은 '됐고, 그냥 참여하라'는 것이다. 내가 1년 동안 혼자 개발 공부를 하면서 느꼈던 자극보다 해커톤이 진행되는 3일간의 활동으로 얻은 동기부여가 컸을 정도로 refresh가 되는 활동이었다.
가기 전
사실 출발 하루 전에 전과 면접을 보러 학교를 다녀왔었다. 전과에 꼭 붙고 싶었고.. 그래서인지 긴장을 정말 많이 했었다. 그래서 면접이 끝나고도 정신이 없었다. 부랴부랴 준비를 했다. 편한 옷들과 간단한 세면도구, 텀블러 등만 준비해 갔다. 사실 돌아가면 슬리퍼도 따로 하나 챙겼을 것 같다. 3일 일정 중 이틀은 내내 호텔 내에만 있기 때문에 슬리퍼가 있으면 정말 편했을 것 같다.
호텔로 가는 길에 얼마나 떨리던지 첫 해커톤인 만큼 내가 단기간에 팀에 누를 끼치지 않고, 뭐라도 완성시킬 수 있을까 고민이 많았다. 또한 혼자 신청했던 활동이라 처음 보는 동료들에게 어색하지 않게 잘 대할 수 있을지에 대한 고민도 컸다.
1일차
1일차는 내내 강의를 들었다. 이번 해커톤의 포인트는 '강의'였다고 생각한다. 강의들이 모두 실습과 연계되어 있고, 최근 들어본 GEN AI와 관련이 커서 정말 재밌게 들었다. 이론적인 것뿐만 아니라 해보고 싶었던 것들을 콕콕 집어주는 기분이랄까.. 활동 이름이 해커톤인 만큼 강의에는 큰 기대를 하지 않았었는데 정말 재밌었다.
강의는 AWS와 코드 스테이츠/5works 에서 강사 분들이 오셔서 진행해 주셨는데 들으면서 부트캠프에 참여하면 이런 것들을 모두 단기간에 배우는 건가? 싶어 잠시 흥미가 생기기도 했다. Tech Trend에 대해 배우고, GEN AI를 활용해 Bedrock, Partyrock에 대해서도 알게 되었다. 사실 DevOps -> MLOps의 흐름에 대해선 잘 모르고 있었는데 서비스의 규모에 따라 필요성이 대두된다는 것이 인상적이었다.
이 날에는 팀빌딩도 진행했다. 멘토 분들이 팀을 지정해 주셨다. 5개의 대학이 참여하는 프로그램이라 각 대학에 1명씩 찢어서 팀 빌딩이 이루어졌다. 참가자들이 작성해 놓은 스택 리스트를 바탕으로 배정했다고 하셨는데 이번 해커톤만큼 AI 엔지니어가 많은 해커톤은 처음 본다고들 말씀하셨다. (나도 해커톤에 모델 돌려본 사람이 이렇게 많나 신기했다) 쨌든 팀원분들과 만나서 자기소개하고 팀명과 팀 로고를 정하는 시간을 가졌다.
2일차
강사분들이 모두 베테랑이신 것 같았다. 참가자들의 수행 능력의 차가 생각보다 컸던 것 같은데 각 단계마다 멈췄다가 진행했다가 완급조절이 좋았다.
직전 학기에 학교 내에서 팀 프로젝트를 하면서 AWS EC2를 사용했던 적이 있는데 이번 강의들을 들으면서 생각이 든 점은.. 내가 바보였다는 것이다..! 당시에 Lambda를 사용했었다면 훨씬 편리했을텐데 허허..
서버리스에 대해 배웠고, IAM, S3, EC2와 같은 AWS 서비스도 실습할 수 있었다. 학교 프로젝트에서 EC2를 썼을 때 요금 때문에 골머리를 앓았던 적이 있다. 나는 1000원 정도밖에 안 나왔지만 30000원이 과금된 조원도 있었다. '분명 free tier를 사용했는데...?' 하면서 이것저것 찾아봤던 경험이 있다. 지금은 원인을 알기 때문에 억울하진 않지만 그만큼 AWS 서비스에 대해 두려움(?)을 가지고 있는 상태에서 자유롭게 실습할 수 있는 환경이 주어져서 즐거웠다!
참가자들이 멘토님들에게 당근을 많이 보내서 강의 시간이 한 시간 단축되어 해커톤 시작 전, 좀 더 여유롭게 쉴 수 있었다.
🔥 해커톤 시작!
우리 조는 조장님이 하드캐리했다고 해도 과언이 아니다. 1일차에 아이디어가 안 나와서 많이 걱정했었는데 팀장님이 '문장 순화 프로젝트'라는 멋진 기획을 해오셔서 만장일치로 프로젝트를 시작했다. 나는 다른 조원분과 '문장 순화 기능'을 맡았다.
밤을 새우다시피 하는 활동은 처음이라 사실 버티기가 좀 힘들었는데 좋은 조원들을 만나 잘 보낼 수 있었다. 중간중간 멘토님들의 이벤트도 재밌었다. 삼행시들이 인상 깊었다. (빙..빙..)
3일차
최종 발표를 위해 AWS 본사로 향했다. AWS 본사라고 써져있지 않은 곳에 위치해서 놀랐다. 정말 신기한 것은.. 본사 구조였다. 평소에 내가 공간지각능력이 떨어진다고 생각하지 않았는데 현재 내가 어디에 위치해 있는지 여러 벽들과 구조로 인해 알 수 없었다. 몇 번 돌아다녔는데도 모르겠어서 정말 신기했다.
조장님의 멋진 발표 이후 우리 팀은
.
.
.
.
우수상을 수상했다!!!
💻 결과물
우리 서비스는 "Slack을 통한 문장 순화 서비스"였다. 일단 해커톤 기간이 짧으니, Slack으로 구현을 완료하고 후에 아이디어를 발전시켜 앱 개발을 진행하자는 취지였다. 우리 서비스에는 총 3개의 기능이 있었다.
1. Slack 명령어를 통한 맞춤법 교정 기능
2. Slack 명령어를 통한 문장 순화 기능
3. 자동으로 욕설 감지하는 기능
내가 담당한 부분은 2번 기능이었다.
사실 욕설이라 하면 신뢰도가 높은, 특정한 기준이 필요하다고 생각했다. 그래서 찾은 것이 방송 통신 심의 위원회에서 발표한 인터넷 내용 등급 서비스 표였다. Level 0~1 범주 내의 비속어는 상대방의 기준을 상하게 하지 않는, 악의 없는 비속어라 필터링을 진행하지 않도록 했고, Level 2부터 4까지 필터링이 가능하게끔 했다.
OpenAI를 통한 프롬프트 엔지니어링은 처음이었는데, 이런저런 자료를 찾아보면서 더 좋은 결과값이 나오도록 학습시키는 것이 꽤나 재밌었다. 처음에는 각 Level에 따라 학습시키려 했는데, 성능이 좋지 않아 아래 표와 같이 학습시키니 훨씬 좋은 결과값들을 얻을 수 있었다.
Level 0~1 | 순화 필요하지 않음 |
Level 2~4 | 순화 필요함 |
아래는 테스트 화면이다.
약간의 유머를 섞어 '착한 사람'으로 순화되었다. 출력창은 입력한 문장, 순화 후 문장, 피드백으로 이루어져 있다.
아래는 나머지 두 기능의 테스트 화면이다.
협업은 Slack과 Github를 이용했다.
🔥 종합 후기
첫 해커톤인 만큼 걱정을 정말 많이 했었는데 걱정이 무색하게도 너무 즐겁게 프로그램을 즐기고 왔다. 강의도 너무 재밌었고, 해커톤도 너무 즐거웠다. 새벽을 새고 난 직후에는 '와.. 나는 밤새는 활동이랑은 정말 안 맞는구나' 싶을 정도로 피로했는데 집에 도착하니 여운이 짙게 남는다. 워낙 컴팩트한 활동이기 때문인가? 여전히 붕방붕방 떠있는 상태 같다. 당장 프로그램 하나 만들고 싶은 느낌. GPT store에 앱 하나 만들어보고 싶다. 나중에 또 이런 활동이 있다면 꼭 다시 참여해보고 싶을 정도로 재밌었다.
이번 프로젝트를 통해 Slack의 진가를 알게 된 듯하다. 항상 프로젝트 협업은 Notion과 Github, 그리고 카카오톡(...)을 이용했었는데, Slack을 이용하니 Notion과 카카오톡을 쓸 일이 없었다. Slack의 캔버스가 Notion의 역할을 해서 너무 편리했다. 모든 자료가 거기 있으니 자료를 어디에 보냈는지 헷갈릴 일도 없고 한눈에 보기도 편했다.
예를 들어, 이전 프로젝트에서는 카카오톡으로 '~~자료 Notion에 올려놓았으니 다들 확인해 보세요.' 하면 번거롭게 Notion에서 자료 확인을 진행했어야 했다. 이 과정이 번거로워 카카오톡에 업로드하면 추후에 자료를 찾아보기 어려웠다. Slack을 사용하니 한 플랫폼에서 자료 업로드와 소통을 진행할 수 있었다. 다음 팀 프로젝트에서도 Slack을 이용해보고 싶다.
초반에도 언급했지만 이번 해커톤이 지난 1년간, 혼자서 개발에 대한 의지를 불태운 그 어떤 자극보다도 강한 motivation이 되었다. 방향성이 생긴 기분이랄까? 혼자 집에서 책 보고 코드를 따라 치는 게 다가 아니라는 것을 절실히 느낀 3일이었다.