나는 이렇게 성장한다/회고

제 11회 유니톤 대상 후기, 그리고 배운 것들

daco2020 2024. 4. 14. 23:33
반응형

이번 11회 유니톤(해커톤) 대회에서 제가 속한 9팀이 대상을 수상했습니다. 이 글은 제가 백엔드 개발자로 유니톤에 참가하면서 느끼고 배운 것들을 정리한 글입니다. 

 

 


 

 

제 11회 유니톤 대상 수상

이번 11회 유니톤의 주제는 '기후', '평화'였습니다. 저는 9팀에 속하여 이번 유니톤에 참가했는데요. 우리 팀은 '평화'라는 주제를 선택했고 [2024 대화 평화상]이라는 서비스를 만들었습니다. 그리고 운이 좋게도 이번 11회 유니톤의 대상을 수상했습니다! 🏆👏👏👏

 

히히 대상받았다🤭

 

 

그렇다면 어떤 서비스길래 대상을 받았는지 궁금하시겠죠? 먼저 우리 팀이 만든 [2024 대화 평화상]의 시연영상을 보여드리겠습니다.

 

 

 

[2024 대화 평화상]은 카톡의 대화내용을 분석하여 대화 참여자들의 평화 점수를 매기고, 점수에 따라 '대화 평화상'과 '욕쟁이 상'을 주는 서비스입니다. 결과 리포트에는 평화 점수뿐만 아니라, 카톡의 대화내용을 5가지 말투로 요약해 주고, MBTI 밈을 이용해 재미 요소를 추가했죠.

 

현재는 비용 문제로 잠시 서비스를 닫았지만, 닫기 전까지 분석한 결과 리포트는 지금도 볼 수 있습니다. (우리 팀 카톡방을 분석한 결과 링크)

 

[2024 대화 평화상] 은 단순히 대화내용을 분석해 주는 것이 아니라, '평화'라는 주제와 '재미'를 결합하여 개성 있는 분석 결과를 보여줍니다. 그렇게 나온 결과 리포트를 카톡방에 공유하여 친구들과 함께 즐길 수 있죠. 실제 시연 당시, 결과 리포트를 보면서 재밌어하시던 사용자분들의 반응이 기억에 남네요.

 

물론, 개선할 부분도 있습니다. 우선 대부분의 사용자들은 카톡 대화내용 저장 방법을 모르고 있었습니다. 그러다 보니 서비스를 이용하기 전부터 헤매는 경우가 많았죠. 또한 양이 많은 카톡 대화내용을 openAI API를 이용하여 분석하기 때문에 토큰에 따른 API 비용도 만만치 않게 들었습니다. 우리 팀은 이런 문제들을 어떻게 개선하고 운영해나갈지 조만간 함께 모여 논의하기로 했습니다.

 

 

 

유니톤이 무엇인가요?

유니톤은 IT 커뮤니티 구성원들의 즐거운 성장과 교류를 목표로 하는 해커톤입니다. 이번 11회 유니톤은 10개 팀 구성으로 참가자는 약 60명이죠. 참가자는 모두 개인으로 참여하며 팀 빌딩은 유니톤 측에서 참가자의 관심사를 기반으로 지정해 줍니다.

 

유니톤 참가비는 무료이며 기업 후원을 통해 운영되는 행사입니다. 참가비가 무료임에도 2박 3일 동안 식사부터 간식, 이벤트 상품까지 풍족한 환경을 제공해 주죠. 아래 사진은 이번 11회 유니톤의 웰컴키트입니다. 맨투맨에 슬리퍼? F인 저는 시작부터 감동할 수 밖에 없었습니다..😂

11회 유니톤 웰컴키트

 

 

 

유니톤 시작

이번 11회 유니톤의 주제는 '기후', '도파밍', '은퇴', '번아웃', '접근성', '평화' 중에서 GPT를 이용해 2개를 추첨했죠. 그렇게 '기후'와 '평화'가 선정되었습니다.(이제는 추첨도 그냥 GPT로 하면 되겠더군요!)

 

주제가 정해진 뒤에는 각 팀별로 아이디에이션을 진행했습니다. 우리 팀은 다른 팀들과는 다르게 바로 아이디에이션을 진행하지 않고, '자기소개'와 팀의 '방향성'을 먼저 잡았습니다. 특히 기획자이신 아름님께서 템플릿을 미리 준비해 주시고 우리를 이끌어 주셨어요. 그중에 가장 인상 깊었던 것은 각자가 '얻고 싶은 것'과 '프로덕트의 방향성'이었습니다. 아래는 그 내용입니다.

 

 

먼저, 각자가 이번 유니톤에서 얻고자 하는 것을 적었습니다. 개인의 목표가 무엇인지 알게 되니 서로를 이해하고 소통하는데 한결 수월해지더군요.

 

 

이번 유니톤에서 어떤 프로덕트를 만들고 싶은지 각자 적어보고 이를 투표하여 3가지를 선정했습니다. 우리 팀은 '독특한/차별성이 있는', '심플 이즈 더 베스트', '다른 사람들도 충분히 공감할 수 있는'을 우선순위 기준으로 삼았고 2박 3일 내내 이 기준에 따라 프로덕트를 개발해 나갔습니다.

 

이렇게 개인과 팀의 방향성을 공유한 다음에야 우리는 아이디에이션을 시작했습니다. 아이디에이션 또한 바로 말로 시작하는 게 아니라, 각자 떠오르는 아이디어를 공유된 페이지에 적은 다음 가장 많은 공감표를 얻은 아이디어들을 추렸습니다.

 

아이디에이션까지 했을 때 밤 11시를 넘겼는데요. 우리 팀은 각자가 언제 쉬고 언제 집중할지에 대해 타임테이블을 따로 만들었습니다. 예를 들어 첫날에는 개발자분들 먼저 들어가 쉬고 다음날 언제 나온다처럼 역할별로 타임라인을 명시했습니다. 어떻게 보면 빡빡하게 보이겠지만, 타임라인이 없으면 오히려 서로 눈치를 보거나 쉬러 가더라도 죄책감 때문에 제대로 쉬지 못하기도 하는데 타임테이블이 있으니 한결 마음이 편했습니다.

 

 

 

본격적인 개발

둘째 날, 저는 타임테이블에 적혀있는 시간보다 조금 일찍 도착했습니다. 아무래도 백엔드 개발자로서 먼저 작업할 것이 있을 거라 생각했죠. 저는 어제 나온 아이디어에서 더 개선되고 정리된 기획 내용을 볼 수 있었습니다. 아름님께서 밤새 디벨롭하시고 피그마를 통해 아주 상세하게 요구사항을 정리해 주셨더군요. 기술적으로 어려운 경우를 고려해 그 대안까지 준비하셨습니다. 디자이너 유나 님은 바로 디자인 작업에 착수하시고, 이후에 개발자 분들이 속속 도착하시면서 최종 결정 및 본격적인 작업이 시작되었습니다.

 

[2024 대화 평화상]에서 백엔드는 카톡 대화내용을 AI로 분석하고 그 결괏값을 프론트에 전달하는 역할이었습니다. 저는 프롬프트에 대한 전문적인 지식은 없었지만, 다행스럽게도 작년에 만든 연애 멘토 톡톡캣이나, 최근 비트코인 AI 매매를 구현한 적이 있어서 어떻게 요청을 보내고 답변을 받을 수 있는지 정도는 알고 있었습니다.

 

한편 프롬프트를 통해 평화 점수를 구할 때, 점수가 동점이 나오는 경우가 있었습니다. 점수가 동점이 되면 누가 평화상을 받을지, 누가 욕쟁이 상을 받을지 구분하기 어려운데, 이 부분은 같은 백엔드이신 준서님의 도움으로 해결할 수 있었습니다. 준서님이 수정하신 프롬프트로 대화 참여자들이 동일한 점수를 받지 않도록 개선할 수 있었습니다.🙏

 

최종적으로 작성한 프롬프트 중 주요 포인트 몇 가지를 소개하자면 다음과 같습니다.

 

대화내용 요약

분석 결과 리포트에는 대화내용 요약을 5가지 말투로 보여줍니다. 5가지 말투는 '장난꾸러기 말투', '부처님 말투', '반려동물 말투', '무미건조한 말투', '소심한 말투'로 정했고 사용자가 요약내용을 번갈아 보면서 피식 웃는 것을 목표로 삼았습니다.

 

아래는 해당 프롬프트입니다. (🌸 표시는 주석으로 봐주세요.) 예시 말투를 추가하여 GPT가 쉽게 이해하고 따라 할 수 있도록 했습니다. 참고로 한국어 답변과 말투를 적용하기 위해 영문보다는 한국어로 프롬프트를 작성하였습니다. 프롬프트를 한국어로 작성했을 때, 팀원들과의 소통이나 생산성 측면에서도 이점이 많다고 생각했죠.

 

답변 예시 제공

GPT로부터 받은 답변을 프론트에 제공하기 위해서는 정형화된 형식으로 가공할 필요가 있었습니다. 예를 들어 json과 같은 형태 말이죠. 때문에 GPT에게 json 형태와 key, value에 대한 예시를 명시해 주기로 했습니다.

 

아래는 해당 프롬프트입니다. 답변으로 'json 형태', '고정된 key', 'value의 표현'에 대해 예시를 제공합니다. 이렇게 하면 GPT 답변을 예시와 같은 형태로 받을 수 있죠.

 

여기에 더해 GPT 요청 시 `response_format={"type": "json_object"}` 파라미터를 추가하면 json 형태의 답변을 확실하게 보장받을 수 있습니다. (response_format 파라미터에 대해서는 공식문서를 참고해 주세요. 링크)

 

 

 

유니톤에 참가한 진짜 목적

위의 '유니톤에서 얻고 싶은 것'에 저는 이 행사를 즐기고 팀원들과 소통하는 것이라 적었습니다. 그리고 그 성공 기준이 바로 '야식 치킨'이었죠. 

 

푸라닭과 교촌치킨 둘 다 순살! 유니톤 운영진분들 센스 :+1

 

 

저는 직전 유니톤에도 참여했었는데요. 그때에도 둘째 날에 야식 치킨을 제공해 주었습니다. 당시에는 워낙 개발하는데 정신이 없어 팀원들이 자기 자리로 가져가 치킨을 먹었는데, 저는 그 순간이 가장 아쉬웠었습니다. 그래서 이번 유니톤에서는 팀원들과 여유롭게 치킨을 먹으면서 수다를 떨고 싶었죠. 사실 이것이 제가 유니톤에 참가한 진짜 목적이었습니다. 그리고 결국 달성했죠!🐔

 

둘째 날, 밤늦게까지 계신 프론트 은지님, 보민님과 함께 셋이서 치킨을 먹고 서로의 경험과 고민들을 나누었습니다. 단순히 함께 작업하는 관계에서 서로에 대해 더 많이 알아가고 친해질 수 있었던 경험이었죠. 유니톤의 목적이 구성원들의 즐거운 성장과 교류이듯이, 우리 팀원들과 교류하는 시간을 가질 수 있어서 기뻤습니다.

 

 

 

새벽 작업

자정이 되기 전 프롬프트 작업은 이미 일단락된 상태였기 때문에 백엔드는 크게 할 일이 없었습니다. 하지만 프론트 작업이 진행되는 과정에서 서버 상태나 API 이슈, 추가 요구사항 등이 발생할 수 있다고 생각하여 새벽까지 함께 남기로 했습니다. 새벽 1시쯤 온라인으로 중간 점검을 하고 프론트 쪽에서 추가로 요청한 API를 만들거나, 기존 프롬프트를 개선하는 등의 작업을 했습니다.

 

새벽 4시에 나눈 대화들

 

우리 서비스를 어떻게 하면 더 재미있게 만들까에 대해 고민이 많았습니다. 그중에 하나가 얼마나 사용자를 킹받게? 하느냐였습니다. 결과 리포트를 단순히 보여주는 것은 의미가 없다고 판단했기에 다양한 말투를 적용하고 테스트하며 결과물에 재미를 더해나갔습니다.

 

 

새벽 5시쯤 집으로 돌아가 잠시 눈만 붙이려고 하니, 예상치 못한 곳에서 이슈가 나왔습니다. 우리 팀 프론트는 netlify를 통해 배포를 하였는데, 이 경우 백엔드 서버가 http 가 아닌 https 여야 하는 상황이었죠.

 

 

 

 

당시 서버는 도메인 없이 인스턴스만 띄운 상태였기에 https 로 바꾸는 추가 작업이 필요했습니다. ngrok 등을 이용해 로컬 서버로 임시 조치할 수 있었지만, 다가오는 시연 때까지 안정성을 보장하기 위해서 일단 제가 가지고 있던 개인 도메인을 연결해 https 로 통신할 수 있도록 조치했습니다. 덕분에 저는 마음 편히 쉴 수 있었고 행사 종료 시까지 추가 이슈는 발생하지 않았습니다.

 

 

 

다른 팀은 무엇을 만들었을까?

드디어 발표의 순간, 이번 유니톤에서 다른 팀들은 어떤 결과물을 만들었을지 궁금해졌습니다. 그전까지는 우리 작업에만 신경 쓰다 보니 옆팀이 무엇을 만들고 있는지 몰랐습니다. 재밌는 아이디어가 많더군요. 우리 팀에 대한 설명은 앞서 했으므로, 이번에는 인상적이었던 다른 팀의 서비스를 소개해드리겠습니다.

 

 

소개팅 앱처럼 스와이프로 살지 말지를 결정하는 '스튜핏'

가장 직관적이고 쉽게 몰입되는 서비스였습니다. 또한 유일하게 '기후' 주제를 선택한 팀이기도 했죠.

 

 

특정 장소에서 느꼈던 나의 하루에 대한 기분을 목탁으로 남기는 '파송송목탁탁'

'목탁 던지고 극락 가자'라는 슬로건에 빵 터졌습니다.ㅎㅎ 목탁 캐릭터도 너무 귀엽더라고요.

 

 

 

 

디스코드를 활용한 인다이렉트 메신저 '나풀'

 

 

'나풀'은 처음 보기에는 이해하기 어려울 수 있습니다. 설명하자면 누군가 나에게 메시지를 보내면, 그 메시지를 확인하기 위해서 다른 이에게 메시지를 보내야 하는, 일종의 메시지 확산을 유도하는 인다이렉트(바로 전달되지 않는, 조건에 따라 전달되는) 방식의 메신저라고 할 수 있습니다. 저 또한 과거에 유사한 메신저를 개발한 경험이 있기에 이 '나풀'이 흥미로웠습니다. 다만,, 행사가 끝나고 저한테 온 메시지를 확인하려고 했을 때 서버가 닫혔는지 제대로 동작하지 않더군요.. 개인적으로 아쉬웠습니다.

 

 

이렇게 보니 우리 팀이 얼마나 운이 좋았는지 새삼 느껴집니다. 겸손한 마음으로 앞으로도 좋은 제품을 만들어가는 개발자가 되겠습니다.🙏

 

 

 

심사

발표가 끝나고 각 팀별 부스에서 심사가 진행되었습니다. 심사는 이 서비스가 어떤 식으로 동작하는지, 서비스가 주제와 어떤 관련이 있는지, 홍보용으로 더 적합해 보이는데 어떻게 생각하는지, 만약 더 시간이 있었다면 무엇을 더하고 싶은지 등의 질문과 답변이 오고 갔습니다. 

 

심사 후에는 다른 팀의 서비스를 체험하거나, 우리 팀으로 오는 다른 참가자분들에게 우리 서비스를 시연하고 홍보했습니다. 특히 저는 프롬프트를 담당했기 때문에 프롬프트의 주요 포인트가 잘 보이도록 🌸이모지로 표시하고, 프롬프트를 어떤 식으로 작성했는지 적극적으로 설명했습니다. AI로 구현된 서비스는 보통 프롬프트 내용을 궁금해할 거라 생각했는데 저의 예상이 맞았습니다. 많은 분들이 프롬프트에 관심이 보여주셨고 제 설명을 통해 새로운 지식을 얻어가는 참가자들을 보니 저도 뿌듯했습니다.

 

이쯤에서 한마디 더 보태자면, 사실 저는 프롬프트를 잘 모릅니다. 다만 최근에 알게 된 프롬프트 엔지니어 분의 글이 큰 도움이 되었습니다. 만약 프롬프트 엔지니어에 관심이 있다면 한 번 읽어보시길! (참고한 글 [논문리뷰] Principled Instructions Are All You Need for Questioning)

 

 

 

배운 것

그렇다면 저는 이번 11회 유니톤을 통해 무엇을 배웠을까요?

 

첫 번째로 '불편을 감수하자' 입니다.

사실 이번 유니톤을 '신청할까 말까', 선정되었다는 연락을 받았을 때에도 '포기할까 말까' 고민했었습니다. 왜냐하면 지난 10회 때의 경험이 썩 좋지 않았고, 밤샘 작업 할 생각에 벌써 기가 빨렸죠... 무엇보다 이번 유니톤 기간이 벚꽃 절정기와 겹쳤기에 주말을 이렇게 보내는 것이 맞나 싶었습니다.

 

결과적으로는 참가하길 잘했다고 생각합니다. 이번 경험을 통해 불편을 감수할 때야 말로 성장과 기회가 따라온다는 것을 알게 되었습니다.

 

두 번째로 '나 자신을 포지션에 한정 짓지 말자' 입니다.

우리 팀의 백엔드는 사실상 프롬프트 엔지니어였습니다. 프롬프트를 작성하고 이를 서빙하는 역할이었죠. 만약 제가 스스로를 백엔드 개발자로 한정 짓고 거기에 매몰되었다면, 프롬프트라는 새로운 도전을 하지 못하고 스스로도 성장하지 못했을 겁니다.

 

이번 경험을 통해 저는, 자신을 한정 짓지 않으면 더 많은 것들을 보고 배울 수 있음을 알게 되었습니다. 앞으로도 백엔드 개발자를 벗어나도록 노력하겠습니다.

 

세 번째로 '생산성과 효과성은 비례하지 않는다' 입니다.

지난 유니톤에서 저는 수십 개의 API를 만드는 등, 개발에만 매진했었습니다. 하지만 결국 수상하지는 못했죠. 즉, 무언가를 '빨리 많이 만드는 것'과 '사용자에게 가치를 주는 것'은 전혀 별개의 영역이라는 것을 알게 되었습니다. 전자를 '생산성', 후자를 '효과성'이라고 한다면 이 둘은 비례하지 않으며 우리가 추구해야 하는 것은 '생산성'이 아니라 '효과성'인 것이죠.

 

이번 경험을 통해 저는 사용자에게 가치를 준다는 것은 무엇일까? 를 더 고민하게 되었습니다. 그리고 어렴풋이나마 저만의 답을 이번 유니톤에서 찾을 수 있었습니다.

 

 

 

마무리 소감

이번 유니톤을 통해 저는 PM의 역할이 얼마나 중요한지 알게 되었습니다. 팀의 방향성 세우기, 아이디어의 발산과 수렴, 역할별 타임테이블, 꼼꼼한 기획과 요구사항, 핵심기능 체크와 발표까지. 직접 눈으로 보고, 느끼고, 배울 수 있었습니다. 제 자신과 비교하며 내가 무엇을 못하는지, 어떻게 개선할 수 있는지를 알 수 있었죠. 어쩌면 수상보다도 더 큰 소득이라고 할 수 있겠습니다.

 

지난 10회 유니톤에서는 수상하지 못했습니다. 밤새 열심히 했기에 아쉬움도 컸었죠. 하지만 운이 좋게도 이번 11회 유니톤에서는 무려 대상을 수상하였습니다. 대상으로 우리 팀이 호명되었을 때 손이 파르르 떨리던 것이 아직도 생생합니다...🙌

 

우리 [평화로운 욕쟁이] 팀, 아름님, 유나님, 보민님, 은지님, 준서님, 그리고 저까지, 2박 3일을 함께 즐길 수 있어서 행복한 시간이었습니다. 고맙습니다. 🙏

 

 

 


 

유니톤에게 감사의 말

마지막으로 유니톤에게 감사의 말을 남기고 싶습니다. 첫날 웰컴키트부터 시작해 각종 게임과 이벤트를 준비해 주시고 매끼 식사와 야식 치킨까지... 참가자들이 개발에만 집중할 수 있도록 운영진분들이 많이 신경 써주신 게 느껴졌습니다. 작년과 비교해서 진행이 더 매끄러워지고 이벤트도 다채로워졌다는 생각이 들었습니다. 유니톤도 계속해서 발전하고 성장하는 행사라는 걸 느낄 수 있었습니다. 이런 행사와 기회를 만들어 주심에 감사합니다. 🙏

 

 

유니톤 공식 인스타

유니톤 노션 페이지

유니톤 페이스북

반응형