들어가기 전
올해 6월 1일~6월 2일 26시간 무박2일 해커톤에 프론트엔드 개발자로 참여했었습니다.
이 글에서는 이번 해커톤에 참여하면서 깨달은 점과 느꼈던 점 등을 여러가지 회고 작성 방법중 5F 회고로 작성했습니다.
Fact(사실) - 무슨 일이 있었는지
무박2일 해커톤에 도전하다
무려 28시간동안 기획자, 개발자, 디자이너가 팀을 이뤄 주제에 맞는 서비스를 기획하고 개발해내야 한다.
주제
Chat GPT의 마지막 세글자에서 따온 'Green', 'Party', 'Travel'과 23년 트렌드를 반영한 '체리슈머', '네버랜드 신드롬', '평균실종'이 주제로 주어졌다.
우리팀은 네버랜드 신드롬을 주제로 서비스를 기획했다.
팀빌딩
행사 당일에 팀이 공개되었는데 우리팀은 운이 좋게 기획자 1명, 디자이너 1명, 프론트엔드 개발자 3명, 서버 개발자 3명으로 총 8명으로 함께했다.
기술스택
기술적인 필수 조건이 없고 네이티브 기능을 구현할 일도 없었다면 고민도 없이 React를 선택했겠지만 CMC와 UMC는 "앱" 서비스를 만드는 것에 도전하는 동아리라 그런지 React가 아닌 React-Native를 필수로 사용해야 했다.
그래서 Typescript와 React-Native를 사용했고, 상태관리 라이브러리는 따로 사용하지 않았다. 전역으로 관리해야 할 상태가 많지 않았고, Context API를 사용해도 충분할 것이라고 생각했다.
그래서 뭘 만들었냐면
어린 시절의 추억을 그림으로 새롭게 불러내는 리메모리!
Chat GPT의 질문에 추억하고 싶은 기억에 대해 답변을 하면 그 데이터를 기반으로 그림을 생성해주고 커뮤니티에 공유도 할 수 있는 서비스다. 메인 화면에서는 실시간으로 업로드되고 있는 다른 유저들이 만든 그림까지 볼 수 있다.
나의 역할
개발
실시간 업로드 된 추억 부분과 생성된 그림을 커뮤니티에 공유했을 때 상세페이지를 개발했다.
좋아요와 댓글 기능이 있어서 좋아요 토글 버튼, 해시태그, 댓글 컴포넌트 등을 개발했다.
협업
8명이라는 팀원이 적지는 않다고 생각한다. 그래서 사람이 많은 만큼 입도 많다(?) 의견이 끝없이 쏟아졌는데 처음에는 정리가 잘 안되고 시간만 흘러가서 비효율적이라고 느꼈다.
그래서 내가 다 정리했다. 모든 의견을 요약해서 팀원과 공유했고 이 과정에서 더 좋은 아이디어를 얻을 수도 있었다.
Feeling(느낌) - 한 일에 대해 무슨 느낌이 들었는가
역시 같이하는건 재밌다
나는 누군가와 함께할 때 가장 빠르게, 많이 성장할 수 있다고 느낀다. 학교든 회사든 혼자 살아갈 수 없다. 혼자라면 한계에 부딪혀 어려웠을 일도 누군가와 함께라면 어떻게든 방법을 찾아낸 경험을 많이 해온 것 같다.
특히 비개발직군과의 협업은 느낌이 남다르다. 프로덕트를 만들기 위한 기획과 디자인을 기술로 구현해내는 개발자는 밑에서 든든하게 받쳐주는 역할같다. 그저 아이디어, 그저 시안일 뿐인걸 실제로 구현해내고 뿌듯함을 느끼기까지의 과정이 개발을 재밌다고 생각하게 만드는 것 같다.
날밤을 새는건 두 번은 못하겠다
최근 단기간에 이렇게 집중해본 적이 있었나 싶을 정도, 엉덩이를 너무 오래 붙이고 있어 더이상 앉아있고 싶지 않을 정도였다. 약 100명이 넘는 참가자분들이 있었는데, 다들 정말 밤새 열심히 하시는 것 같았다. 역시 이름도 얼굴도 모르는 사람들이었지만 한 공간에서 같이 있다는 것만으로 이렇게 좋은 자극이 된다.
Finding (배운 점) - 어떤 인사이트를 얻었는가
급하게 UI 수정
RN이 아무리 React와 비슷하다고는하지만 화면을 그릴 때 분명히 한계가 있다. Android, iOS 플랫폼별로 각각 분기처리를 해주어야 한다던가. 우리의 경우 블러 처리와 하얀 그림자였다. 외부 라이브러리를 사용하거나 약간의 눈속임(?)으로 그렇게 보여지도록 만드는 방법밖에 없었다. 다른 방법이 있었을지도 모르지만 시간이 굉장히 부족해서 어쩔 수 없이 디자인을 수정하기로 결정했다. 미리 말씀드렸으면 정말 좋았을텐데...그 래도 서비스 차원이나 UI적인 차원으로나 큰 비중을 차지하는건 아니어서 흔쾌히 수정이 결정되어서 다행이었다.
기획/디자인과 백엔드 사이에서 가장 시간에 쫓길 수 밖에 없는걸까
나는 프론트가 기획/디자인단과 백엔드단의 중간 다리 역할을 한다고 생각한다. 기능이 확정되고 디자인을 전달받아야 UI를 만들 수 있고, (이상적으로는) 백엔드에서 API를 전달해줘야 API 요청을 보내 데이터를 받아올 수 있다.
해커톤이라는 극단적 시간 제한이 있는 상황에서는 더욱 시간에 쫓길 수 밖에 없어서 어떻게 하면 시간을 효율적으로 사용하면서 최고의 퍼포먼스를 낼 수 있을지 많은 생각을 하게 되었다.
12개의 팀 중 3위로 수상!
CMC와 UMC 데모데이때도 수상은 한 번도 못해봤는데 이번 해커톤에서 3위를 할 수 있었다. 사실 ChatGPT의 Chat API를 사용해야 한다는 점이 생각보다 큰 제약사항이라 어떤 서비스를 만들지 고민이 많이 되었었는데, 내가 생각해도 우리팀이 만든 서비스가 상대적으로 꽤 참신했다. 개발하면서도 너무 신기해서 흥미로웠을 정도였다.
Future action(향후 행동) - 앞으로 무엇을 해야 하는가
목업을 미리 잘 해두자
목업을 잘 해두면 백엔드에게서 API를 늦게 전달받더라도 실제 API 로 요청을 보내기까지 시간도 리소스도 많이 줄일 수 있다고 알고 있다. MSW같은 Mocking 라이브러리도 있어서 이걸 잘 사용했더라면 시간이 굉장히 부족한 해커톤이라는 상황에서 생산성도 높이고 효율적으로 작업할 수 있었을 것이다.
하지만 팀원 중 아무도 사용해 본적이 없고 시간도 매우 부족했기 때문에 새로운 기술을 도입하기에는 부담이 되긴했다.
작업 상황을 잘 공유하자
아무래도 28시간을 온라인도 아니고 오프라인으로 계속 함께 있다보니 소통하기에는 정말 빠르고 편했다. 하지만 오히려 그래서 각자의 작업 상황이 잘 공유되지 않았다. 하마터면 이미 완료된 부분을 다른 팀원이 또 개발할 뻔한 적도 있다. 새삼 공유의 중요성을 깨달았던 순간이었다. 공유만 잘해도 협업의 효율성과 생산성을 정말 많이 끌어올릴 수 있는 것 같다.