시작
예전에 항해커톤에 함께 지원했다가 떨어진 저의 지인들이 해커톤에 목말라있던 차에, 한 친구가 해커톤에 참여할 생각이 있냐며 소개 링크를 보내줬습니다. 해커톤 소개를 보니 예전에 참여했던 유니톤과는 달리 기획에 투자하는 시간이 무려 일주일이나 있어서 예전 항해커톤때 결성했던 개발자들로만 이루어진 팀으로는 좋은 성과를 내기 어려울 것이라는 생각이 들더라고요. (기획자님과 함께해보니 확실히 뭔가 문제를 바라보는 시각이 다르시더라고요…) 그래서 처음에는 함께 하자는 제안에 거절했었는데요. 시간이 좀 지나고 고맙게도 그 친구가 기획자분을 모셔 왔다며 다시 한번 할 생각이 없냐고 연락을 줘서 해커톤에 참여하게 되었습니다.
신청과 온보딩 날짜까지는 좀 시간이 있어서 (팀을 결성해서 지원한 다른 팀들 모두가 마찬가지겠지만) 기획 회의도 미리 해두고 개발도 좀 미리 해두고 그랬었는데요… 결론적으로는 거의 다 못 쓰고 집중 개발 데이때 불태웠습니다...
저희는 참여 주제를 “커뮤니티 - 사람 간의 관계를 회복하는 AI 서비스” 로 잡고, 관계 회복을 위한 편지 쓰기를 돕는 AI 서비스를 만들기로 했습니다.
온보딩
종종 개발자들끼리 프로젝트를 하다 보면 기획 단계에 익숙하지 않아서 좀 스트레스를 받곤 했었습니다. 개발자들의 생각이 대부분 비슷하기 때문에 뭔가 다들 만족하는 괜찮은 안을 찾지는 못한 채로 시간은 계속 흘러가는 그런 느낌이라 이번에도 ‘기획자 없으면 해커톤 못하겠다!’라고 했었던 것인데요. 이번에 온보딩 과정을 통해서 좀 더 기획적으로도 시각을 넓힐 수 있지 않았나 하는 생각이 들어서 너무 좋았습니다. 사실 이날에 팀원들끼리 프로젝트에 관한 이야기를 자유롭게 할 수 있는 시간을 주실 줄 알았는데, 1시부터 7시? 8시?까지의 온보딩 시간 내내 코치님들의 강의를 듣고 실습하는 시간을 가질 줄은 몰라서 좀 판단 실수긴 했지만… 아무튼 저희의 기획에 엄청난 구멍이 있었다는 사실과 어떤 식으로 보완하면 좋을지를 알게 된 아주 중요한 시간이었습니다... (다행이긴 한데 조금 슬프네요,,)
첫번째로는 AI 서비스 기획에 대한 강의를 들었습니다. 린 캔버스라는 것을 처음 보고 처음 적어봤는데 (신청 때 작성해서 제출하긴 했지만 잘 모르겠더라고요) 개인적으로는 (절대적으로 개발자 시점입니다...) 제대로 된 문제를 정의했는지를 확인하기에 괜찮은 도구 같다는 생각이 들었습니다. 강의해 주신 교수님께서 카닥이라는 회사의 린 캔버스를 예시로 설명해 주셨는데 이해하기에 좋았어서 여기에 링크 달아 둡니다! 좀 웃겼던 것은 강의 중간중간에 팀끼리 같이 린 캔버스를 작성해 보는 실습 시간이 있었는데요.
저희가 이미 기획한 내용과 아이템이 있었기 때문인 것 같기도 합니다만 그래도 개발자들끼리 얘기하다 보면 자꾸 결론이 SOLUTION 항목에 대한 부분으로 가는 게 너무 웃겼습니다… 제가 중간중간 ‘근데 우리 일단 우리 서비스의 주 고객에 대해서 고민을 해봐야 한다고요!!’ 라고 중재를 했었는데, 나중에 기획자님께 들은 얘기지만 이렇게 제가 계속 고객에 대해 집중하고 문제에 대해 집중해야 한다!! 라고 했던 것이 기획자님이 기획의 방향을 잡는 데 좀 도움이 되었다고 말씀해 주셔서 신기했습니다 하하 (내가 기획에 도움이 되다니!)
두 번째로는 사용자 리서치에 대한 강의를 들었습니다. 이 강의에서 배운 내용은 저희가 집중 개발 데이 전까지 기획을 새로 하느라 적용해 보지는 못했지만 사용자가 원하는 서비스를 만들어야 한다는 궁극적인 목표를 좀 더 마음에 새기게 되는 계기가 되었던 것 같습니다. 무엇보다도 이 강의 실습을 하면서, 기존 저희의 기획으로는 리서치해야 하는 사용자가 인간 전체 (…) 가 되어야 한다는 사실을 깨닫고 무언가 단단히 잘못되었다는 것을 확신하게 되었습니다.
결론적으로 저희는 주 고객을 2030 사회 초년생으로 설정하고, 생활이 바빠 멀어진 인연들과의 관계 회복을 위해 편지 쓰기를 돕는다는 주제를 가지고 다시 서비스 기획에 들어갔습니다.
집중 개발 데이
온보딩 이후 일주일간의 아이디어 검증 기간을 거치고, 판교의 스마일게이트 퓨처랩에서 열리는 집중 개발 데이에 참석했습니다. 판교로 가는 버스를 반대로 타는 바람에 정신이 없어서 입구 도착 사진만 남아 있네요…
본격적인 개발 시작 전에 유저 스토리를 작성해 보는 간단한 워크샵이 있었습니다… 만 저희는 기획 마무리를 지어야 하는 상황이었기에 정신없이 두 개를 병행했습니다.
다행히 시작 후 3시간 뒤인 10시쯤 기능 논의와 와이어 프레임 논의가 얼추 완료되어서 본격적인 개발에 돌입할 수 있었습니다. 프론트엔드 개발자는 저 포함 2명이 있었는데, 저는 저희 서비스의 메인 기능인 편지 기능을 모두 담당했고, 다른 한 친구는 회원가입을 포함한 나머지 기능 전체를 담당하도록 작업을 분할했습니다. 이후에 얘기가 나오겠지만, 이렇게 작업을 분할했던 것은 (개인적으로는) 엄청난 실수였다고 생각합니다…
열심히 개발하다가 12시쯤 야식으로 피자와 치킨을 제공해 주셔서 잠시 쉬는 시간을 가졌습니다. 기획자님은 제 친구의 친구로 이번 해커톤을 계기로 처음 뵌 분이었는데, 야식 먹으면서 많은 얘기를 할 수 있어서 즐거웠습니다. 하하
야식을 먹고 난 뒤에는 이제 진짜 잠죽자 (잠은 죽어서 자자) 모드로 개발을 다시 시작했습니다. 그리고 새벽이 깊어져 가면서 상황이 묘하게 돌아가기 시작했습니다. 자세한 상황과 반성의 시간 (…) 은 나중에 갖고 작업물 제출 마감 시간 2시간 전인 10시쯤 내린 결론은… 회원 기능을 제거하고, 기본적인 편지 작성, 편지 꾸미기와 저장 기능만 시연마켓에서 보여주고 나머지 기능들은 더미 데이터로 보여주자는 것이었습니다.
그래서 편지 기능을 담당한 저는,,, 2시간 안에 API 연결과 테스트를 완료해야 하는 엄청난 임무를 맡게 되었고,, 다행스럽게도 이 과정에서는 큰 문제 없이 잘 마무리해서 시연 영상을 (거의 1분 만에… ㄷㄷ) 만들고 제출할 수 있었습니다. 진짜 다행이에요.
시연마켓 동안에는 일부 팀원만 부스를 지키고, 나머지 팀원들은 다른 부스들을 돌아다니면서 구경할 수 있었습니다. 저는 기획이나 서비스의 핵심인 LLM 관련해서 설명하기는 좀 힘들 것 같아서 다른 팀원들에게 부스 설명을 부탁하고 다른 부스들을 구경했습니다. 너무 지쳐서 사진은 못찍고 다녔지만… 정말 대단한 팀들이 많았습니다. 그중에서 좀 인상적이었던 팀은 숏폼 콘텐츠를 AI로 생성하는 서비스를 만든 팀이었는데, 시연을 위해서 직접 작곡하고, 직접 안무를 만들었다고 하셔서 존경의 박수를 치고 왔던 기억이 있습니다. 또 Streamlit, Gradio 같은 프레임워크도 많이 쓰셨더라고요. 그 점도 인상적이었습니다.
시연마켓이 끝나고 나서는 시상을 하고, 단체 사진을 찍고, 마무리했습니다. 아쉽게 상은 못 받았지만 그래도 제법 잘 돌아가는 서비스를 제출했다는 점에서 뿌듯합니다… 다행히 토요일에 끝나는 해커톤이라 일요일까지 기절해 있을 수 있었습니다… 🫠
시연마켓 중에 다른 부스들을 돌아다니면서 피드백을 작성하는 활동이 있었는데요. 정성 들여 쓴 피드백을 좋게 봐주셨는지 팀 이름으로 치킨 기프티콘을 받았습니다 ㅎㅎ
덕분에 해커톤 회식도 하고, 해커톤 후일담도 풀었습니다. 마무리까지 즐거운 해커톤이었습니다!!! 👍
매서운 반성의 시간
이번 해커톤의 흐름이 계획대로 되지 않은 것에는 나름대로 명확한 몇 가지 이유가 있었던 것 같습니다.
1. 기능이 너무 많았음.
온보딩 데이때 들었던 첫 번째 강연에서 배웠던 것처럼, 이 해커톤은 완벽한 서비스를 요구하는 것이 아니라 MVP만을 확실하게 개발해서 서비스에 대한 고객의 반응을 확인해 보는 것을 목표로 하는 해커톤이었던 것 같습니다.
하지만 저희의 경우 서비스가 단순한 편지 쓰기 도구를 제공하기 위한 목적이 아닌 사람과 사람 사이의 관계 회복을 돕기 위한 목적으로 만들어졌음이 확실하게 드러났으면 해서 편지 작성을 돕는 AI 기능만 아니라 보관, 편지 작성 일정 관리 등의 부가 기능에도 힘을 줬습니다.
기획 당시에는 서비스의 목적을 설명하는 것이 중요하다고 생각해서 이것저것 기능을 추가했지만, 시간 부족에 허덕이고 시연 마켓에서 다른 팀들의 서비스를 보고 나서 생각해 보니 많은 기능보다는 문제 해결을 위한 하나의 핵심 기능을 중심으로 보게 되고, 인상을 받게 되더라고요.
물론 모두 완성했다면 시연 마켓에서 보여드릴 내용은 많았겠지만, 그래서 정말 고객들에게 관계 회복을 위한 편지 작성 도구가 좋은 반응을 줄 수 있을지 판단하기는 어려웠을 것 같습니다.
2. 중요한 핵심 기능을 먼저 개발하지 않았음.
2-1. 한 사람에게 핵심 기능을 몽땅 맡김
저희가 참여한 해커톤은 AI를 이용한 서비스를 개발하는 해커톤이었고, 저희의 서비스는 편지를 통해서 관계 회복을 돕는 서비스였습니다. 따라서 핵심 기능은 당연하게도 AI를 이용해서 편지를 작성하는 기능이었고, 이 기능은 원활한 시연을 위해서라면 반드시 구현되어야 하는 기능이었습니다.
처음에 프론트엔드 개발 작업 범위를 나누었을 때, 저희는 편지 기능이 가장 규모가 크기 때문에 한 사람이 먼저 편지 기능 개발을 진행하고, 나머지 사람이 그 외 작업을 얼른 마무리하고 돕는 것으로 정하고 한 사람이 편지 기능 전반을 담당, 나머지 사람이 그 외 작업 전반을 담당하는 것으로 결정했었습니다. 그리고 조금은 결과론적이기는 하지만, 생각보다 그 외 작업의 시간이 오래 걸렸고, 생각보다 편지 기능이 너무 많았기 때문에 마지막쯤에 편지의 기능들을 엄청나게 덜어내고 나서야 간신히 마무리할 수 있었습니다.
해커톤이고, 주제가 명확하고, 마감이 짧고, 명확한 평가 기준이 있는 대회였기 때문에 핵심 기능이 완성되는 것이 너무나도 중요했는데 이 부분을 한사람에게 맡기는 바람에 중요한 기능의 완성이 늦어지고, 테스트도 제대로 못 해보는 상황이 발생했던 것 같습니다. 마지막에 기능을 줄이고 줄여서 어떻게든 보여드릴 수 있을 정도로 완성해서 다행이지, 완성하지 못했다면 어땠을까요… 아찔하네요…
이 경험을 통해서 앞으로는 팀 단위에서 전체적인 기능의 우선순위를 먼저 정해두고, 만약에 이번처럼 핵심 기능이 큰 경우에는 한 사람이 그 기능만을 모두 담당하게 하는 것보다는 팀원들이 나눠서 그 기능을 얼른 마무리할 수 있게 하는 게 좋겠다는 생각을 했습니다. 지금 생각해 보면 매번 프로젝트를 할 때 기능들의 우선순위를 정하기보다는 기능의 규모를 기준으로 태스크를 나누고 할당했던 것 같습니다… 그래서 매번 배포 날마다 아슬아슬했던 것일까요? 많은 생각이 드네요,,, 🥲
2-2. 회원 기능을 빨리 덜어내지 못함
저희 서비스는 개인화된 데이터를 기반으로 편지를 생성하기 때문에 1명뿐인 백엔드 개발은 회원 기능부터 진행되었는데요. 개발하다 보니 생각보다 회원 기능 구현에 필요한 부가적인 작업이(사용자별 DB 접근, 회원가입 / 회원 정보 조회 기능 개발 등…) 많았고 그마저도 회원별로 DB에 접근하는 부분에 원인 미상의 문제가 생겨서 원인을 찾다가 결국 해결하지 못했습니다. 문제 해결이 안 되는 것을 인정하고 회원 기능을 빼기로 결정한 것이 아침 식사 시간쯤이었던 것 같은데 (제출 시간은 12시였습니다) 돌이켜 생각해 보면 이 결정이 늦은 것도 문제 중 하나가 아니었을까 생각이 듭니다.
일단 당장은 이 서비스를 시장에 출시하는 것이 아니고 단순 시연만을 짧은 목표로 두고 있었기 때문에 사용자별 데이터 관리가 개념적으로는 필요해도 시연 당시에는 그렇게 중요하지 않았을 것 같습니다. 사용자별로 개인화된 시연이 필요했다면 DB를 계속해서 비워버리는 방법을 취했었을 것 같고요. 게다가 계속 언급되는 내용이지만 (ㅜㅜ) 편지 기능이 제대로 개발되지 않은 상태에서 사용자 개인 데이터 부분에 집중했던 것은 좀 실수였던 것 같습니다..ㅎㅎ
돌아보기
해커톤 특성상 안정적인 선택을 해야 하다 보니 해커톤을 한다고 해서 뭔가 기술적으로 성장한다거나 하는 느낌은 그다지 받지 못하는 것 같습니다. 이번에도 처음 chakra-ui라는 라이브러리를 써보긴 했지만,,, 그냥 ‘새로운 라이브러리를 하나 더 알았다!’ 기술적 경험 부분에서는 아직은 이 정도의 느낌인 것 같습니다 ㅎㅎ..
그런데도 해커톤을 종종 참여하는 것에는 “내가 어느 정도 할 수 있는지를 확인해 보고 싶다”라는 생각이 가장 먼저인 것 같네요. 기획 회의 때는 ‘이거 진짜 할 수 있나…?’ 하는 생각으로 시작했다가 짧은 시간 안에 집중해서 결국에는 멋진 벽돌집 같은 결과물이든 얼기설기 엮은 지푸라기 집 같은 결과물이든 간에 어쨌든 결과물을 냈을 때 받는 성취감이 크기도 하고, ‘이거 진짜 할 수 있네!’ 하는 생각에 기분도 꽤 좋고 그 점 때문에 해커톤에 계속 관심을 갖게 되는 것 같습니다. 짧은 시간 안에 경험하는 조별 과제의 희로애락도,, 재미있구요. 완전 도파민 중독 느낌인가요? ㅎㅎ
뒤풀이 시간에 얘기했던 것이지만, 해커톤이 분명히 고생스러운 경험이긴 하지만 이것도 시간이 지나니까 어느 정도 기억이 미화되어서 ‘또 해보고 싶다…!’ 하는 생각이 스물스물 들게 되는 것 같습니다. 신청하고 나면 ‘이거 왜 한다고 했지…’ 하면서 머리를 뜯다가 또 다 하고 나면 ‘재밌었다..!’ 하는 흐름이네요…. 이번 해커톤 팀원들하고도 기회가 되면,,, 다음에 해커톤을 한 번 더 해보고 싶다고 했었습니다. 제가 괜찮은 팀원이었다면 다음에도 연락을 주시겠죠??! 히히
마지막으로 저희 서비스 레포지토리 링크를 남깁니다. 여전히 열려 있는 이슈들이 슬프지만... 언젠간 닫을 수 있는 기회가 있길 바랍니다!