[SSAFY] 2학기 공통프로젝트 : JOURGEOIS

작성:    

업데이트:

카테고리:

태그: ,

들어가기

프로젝트 정보


프로젝트 회고를 쓰기 전

길고도 짧았던 6주간의 공통프로젝트를 저번 주에 마쳤다. 1,700커밋700PR을 기록할만큼 정말 열심히 달려왔는데 프로젝트의 결과를 받고 이제는 보내줄 때가 되어서 회고를 써보려 한다.


프로젝트 과정

팀 선정과 자기소개

1학기 때 각 반당 25명, 총 8개 반으로 구성된 대전 캠퍼스가 2학기 때에는 3개 반으로 나뉘어져 분류되었다. 각 반마다 첫날에 1분 자기소개 자료를 만들어 간단히 발표하는 시간을 가졌다. 이때 교육생들 서로 발표와 스펙을 살펴보다가 공통 프로젝트 팀을 구성하기 위해 스카웃 전쟁을 벌이곤 한다. 소리 없는 아우성, 경쟁의 현장이다.


자기소개

뽑거나 뽑히거나, 혹은 남겨진다. 그렇기 때문에 자기소개 발표는 매력 어필의 시간이다. 준비 시간을 오래 주지 않았다. 1~2시간정도 줬던 것으로 기억한다. 물론 사진, 강점, 기술스택, 포부 등 나에 대한 간단한 소개를 넣는 기본 템플릿을싸피측에서 제공했고, 대부분의 교육생들은 여기에 맞게 스스로를 소개했다.

image

이것이 그 템플릿이다.


남들과 같을 수 없다

인생 신조가 남들과 같은, 평범한 건 싫다는 것인 나는, 나를 더 잘 보여주고 싶었다. 발표는 점심 전후로 이어졌고, 나는 점심 이후 발표여서 점심시간을 내내 태워 좋은 PPT를 만들었다.

image

그렇게 남들은 1장짜리로 간단히 소개할 때, 나는 8장짜리 소개 PPT를 만들어 여러 부분들을 부각해 드러내고, 내가 얼마나 능력 좋은 팀원인지, 리더십 좋은 리더인지를 어필했다. 점심시간을 태웠음에도 너무 짧은 시간이어서 지금 봐도 디자인이 사뭇 아쉬웠지만, 내가 이런 사소한 것에도 이렇게 열정적인 열정 부자라는 사실을 많이 어필하고자 했다.


1등이요?

BEST  자기소개 발표자

발표 PPT에서 여러 부분들을 소개했을 뿐더러 디자인에 신경 쓴 소개 자료, 그리고 물 흐르듯 진행된 자기소개로 나는 자기소개 우수자로 선정되었다. 날고기는 60명 중에 1등이라니!


팀원 모집 과정

나는 1학기에 2주짜리 관통프로젝트를 하며 issue나 branch 전략을 제대로 사용하지 못했는데, 2학기부터는 이런 걸 차근차근 준비해서 조금은 늦더라도 잘 활용해보고 싶었다. 그래서 관통프로젝트 1등 팀의 주역이면서 개발 뿐 아니라 사회 경험, 발표도 정말 잘하는 프론트엔드 스터디 팀원인 30살 누나와 사전에 팀을 구성했다.

다만 6인 팀 구성 중 비전공자, 전공자가 각각 2명씩 구성이 되어야 했던 구성 조건에 따라 팀을 원하는대로 구성하기가 쉽지 않았다. 자기소개가 돋보여서 메모장에 찜해뒀던 많은 교육생들이 일분일초가 다르게 자기들끼리 뭉치거나 팔려가기 일쑤였고, 점차 팀을 구성하지 못해 초조해지기까지 했다.

누나와 나는 라이브러리 사용을 되도록 하지 않고 직접 구현을 하고 싶다는 조건을 걸었기에 더더욱 어려웠고, 누나는 버리고 나만 팀에 오라는 정예 팀의 제안도 있었으나, 나는 성과보단 누나와의 동료애, 그리고 누나에게서 배울 수 있을 많은 잠재적인 가능성에 배팅해 거절하기도 했다. 그렇게 남겨져가던 중, 균형 있게 4명으로 구성된 팀이 컨택이 와서 6명을 구성할 수 있었다.

스카웃을 받은만큼 팀장이 이미 있을 것이라 생각했는데, 아무도 그닥 팀장을 원치 않아서 내가 하게 되었다. 발표 때 리더 경험들을 많이 나열하기도 했고, 한창 굳어있는 분위기를 푸는 데에 주도를 했던 탓에 자연스럽게 그렇게 흘러가게 됐던 것 같다.


사용 기술

1학기 말에 2주 관통 프로젝트에서 사용한 Vue2와 달리 이미 나오고 안정화가 이루어진 Vue3는 기존의 Vue2와 달리 꽤나 프레임워크적인 성격을 벗고 자유로워졌다고 알려져 있었다. 또한 미친 성능을 자랑하는 번들러인 Vite로 세팅을 시작할 수 있어서, 우리는 Vue의 끝장을 보겠다는 생각으로 Vue를 FE 기본 기술 스택으로 선정했다.

또한 이제는 프론트엔드 취업의 기본요건이 되었으면서, 협업에서 좋다고 하는 TypeScript를 사용하기로 했다.(이 일로 개발 속도가 절반으로 떨어지는 대참사가 벌어진다)

협업 툴은 Notion을 활용했다. 당시 첫 프로젝트만 하더라도 Notion이나 git을 잘 활용하는 교육생들이 없어서 우리의 Notion 정리는 꽤나 빛을 발했다.

image


아이템 선정의 어려움

우리는 SNS 컨셉은 진작 굳혔지만, 어떤 컨셉으로 아이디어를 구체화할지 많은 시간을 들였다. 처음에는 팀 내에 게임을 즐기는 팀원들이 많다는 데에서 착안해 게임 SNS를 컨셉으로 잡아서 구체화해보았다.

[게임 SNS 기획 회의 내용 사진]

나름 순항을 하는 것처럼 보였으나, 금방 컨셉을 포기해야 했다. (물론 쉬운 결정은 아니었다.) 이유는 아래와 같았다.

  1. 겜톡톡이라는 기존 서비스가 너무 잘 되어있었다. 빠른 시간 내에 이 서비스를 넘어서면서 차별성을 가지는 요소를 찾기가 쉽지 않았다.
  2. 게임 각각에서 제공하는 API가 턱없이 부족했고, 카테고리1, 카테고리2처럼 구분하기에는 게임마다 공통분모가 너무 없었다. github의 잔디나, 게임 내 컨텐츠, 활동 시간 공유 등 다양한 아이디어들이 나왔지만, 게임 자체적으로 정보를 제공해야 했는데 그것들이 사실상 불가능에 가까웠다. 거대 메이저 게임부터 인디게임에 이르기까지 여러 카테고리의 게임들의 정보와 커뮤니티를 나누어 개발하는 것은 무모했다.
  3. 게임 팁 같은 것들을 블로그 포스트들을 큐레이팅하기에는 저작권 등의 문제가 있었다. 마음대로 크롤링해서 우리 서비스에서 띄워줄 수도 없을 뿐더러, 결국 우리 서비스를 거쳐 다른 서비스로 넘어가야 하다보니 우리 서비스의 유저가 아니라는 생각이 들었다.


그래서 여러 이유로 오랜 시간을 투자한 게임 SNS를 포기했고, 우리 팀의 또다른 공통분모인 술에 대한 SNS, 특히 칵테일에 대한 SNS를 만들어보자는 식으로 방향을 틀어 새롭게 재구성했다. 나름 컨셉이 신박했고, 다들 컨셉에 동화되어서 즐겁게 참여했던 기억이 있다.


칵테일 API 번역

사실 칵테일 정보에 관한 API를 제공하는 사이트가 있었는데, 질좋은 유료 API를 무려 4달러를 지불하며 받아왔는데, 모두 영어이기도 하고, 포맷이 완전히 깨져있어서 팀원 6명이 적당히 분배해서 번역하고 포맷을 노가다로 하기도 했다… 이제 생각해보면 chatGPT를 활용하면 꽤나 쉽게 해결될 수도 있었을 법 한데, 그래도 사람들이 붙으니 못할 것이 없었다.

한편으로는 엑셀을 사용했는데, 정렬이나 여러 함수들을 쓸 일이 있었는데 나름 엑셀을 조금 할 줄 알아서 정렬과 분류에 도움이 될 수 있어 기뻤다. 개발자가 돼도 워드, 한글, 엑셀, PPT 등 고전적인 문서 작업 능력은 나름 필요하지 않은가 생각해볼 수 있는 대목이었다.


사이가 유달리 좋았던 팀

우리 팀은 다른 팀들보다도 훨씬 사이가 좋았다. 다른 팀은 워터폴 방식으로 처음에 기획을 우다다 다 끝내놓고 개발에 임했던 것에 비해, 우리는 매주 스프린트를 진행하며 이번 스프린트에서 추가하고자 하는 기능들에 대해 월요일마다 기획 회의, Jira 이슈 분배를 거쳐 한 주동안 모두 끝내는 방식으로 애자일하게 진행했다.


명색이 칵테일을 컨셉으로 하는데, 칵테일을 경험해본 사람들이 몇 없어서 도메인 학습을 핑계 삼아 명분 삼아 칵테일 바를 방문하기도 했다.

image

칵테일 바에 야심차게 간만큼, 즐기는 것 이외에도 프로젝트에 많은 도움이 되고 싶었다. 나름 프로젝트 최종 발표 자료나 UCC 클립 영상과 여러 사진들을 구해올 수 있었다.

그러고 룸술집에서 새벽 6시까지 술을 마셨다는… 아무튼 대단한 이력이 있다.


그 밖에도 비즈니스적인 성격 외로 함께 많은 시간을 보냈던, 그래서 고생했던 기억만큼 즐거운 기억도 많은, 동고동락 팀이었다는 생각이 많이 든다.

맥주로 우애를 다지다 대전에서 무박 2일 중 인생네컷
image image


오프라인 병행이요?

이렇게 될 수 있었던 큰 이유 중 하나는, 오프라인 병행이었다. 실제로 공통프로젝트 초반에는 1학기 때부터 이어져오던 온라인 방식의 프로젝트 참여였다. 코로나 확산을 극도로 방지하려는 SSAFY의 보수적인 정책 때문이었다.

하지만 코로나 확산세가 많이 주춤하고, 사회의 많은 부분들에서 오프라인 행사나 교육을 진행하고 있고, 정부 차원에서도 거리두기 정책이 많이 완화가 되고 있던 시기라, 주 2일 오프라인, 주 3일 온라인으로 진행했다.


우리 팀에서는 대전의 먼 외곽에 사는 분들이 많았는데, 그래서 아침마다 피곤해보이곤 했었고, 이는 우리 팀만의 문제는 아니었다. 특히 프로젝트를 떠나 우리 프론트엔드 스터디에는 청주사람들이 셋이나 있었는데, 주2회 1시간 남짓의 출퇴근을 하며 많은 불만이 생기곤 했다. (나중에 주5일 전면 오프라인으로 변경되며 이마저도 좋은 날들이었음을 그들은 안다)

회의 과정

아무튼 강의실에서 큰 태블릿을 활용해 회의를 진행하며 업무의 효율 면에서 장점도 있었다. 하지만 오프라인의 가장 큰 장점은 온라인으로만 보던 사람들이 픽셀이나 데이터가 아니라, 진짜 숨쉬는 사람이었다! 라는 당연한 사실을 체감하게 하는 것이었다.


나의 생각들

밤이 빛나던 6주

프로젝트를 돌이켜보며 가장 절실히 느끼는 점이다. 살면서 이렇게 열심히, 치열하게 살아본 적이 있을까 싶을 정도로 열심히 임했다. 말 그대로 ‘갈아넣었다’라는 말이 어울릴 정도였다. 매일 풀타임으로 개발하고도 새벽까지 시간을 태우며 개발을 했다.


매일 쓴 TIL의 작성시간을 종합해보니 아래와 같았다.

image

38일의 집계기간동안 3시를 넘겨서 잔 것이 30일이나 된다. 이렇게 살아온 것이 대단할 정도이다. 어떻게 이렇게 살았지…

팀원들도 그만큼 열심히 따라와주었고, 열심히 갈아넣어준 덕분에 계획했던 많은 일들을 할 수 있었다.


수험생 뺨치게 갈아넣은 6주

주류주아는 정말정말 고생했던 프로젝트였다. 그래서 모두의 열정이 꺾이지 않게 매니징하는 것이 팀장으로서의 큰 역할이었고, 매니징이 특별히 필요하지 않을 정도로 다들 너무나 열심히 해주었다. 살짝 내 스스로 생각해도 악덕사장처럼 느끼는 여러 부분들이 있었다…


주말간 부재 일정 공유

음.. 개발 기간이 지나면 지날수록, 마감이 다가올수록 주말에도 끊임없이 갈아넣자는 주의였고, 서로간의 화합을 잃지 않기 위해 주말에 부재 일정에 대해 서로 공유하고자 했다. 디스코드 채널을 따로 파서 서로 공유했다.

주류주아1


야간 개발 스케줄 공유

갈아넣자는 주의는 주말에만 있는 것이 아니었다. 오히려 평일에 주간 근무를 마치고 집에서 또 추가로 개발을 하는 것이 더 자연스러운 흐름이었을 터, 처음에는 구글 폼으로 설문을 받았는데, 구성원 상호간의 정보를 알 수 없다는 맹점이 있어 notion에 추가로 기록을 했다.

image

정말… 이렇게까지 해야했나 싶을 정도로 열심히 갈아넣었던 프로젝트였다. 연애도 안 하고, 인생의 재미라고는 개발밖에 없는 사람들의 모임이었다.


그렇게 갈아넣은 우리

image

프로젝트를 진행중일 때에는 TIL을 쓰며 하루의 개발 내용을 정리하고 잤는데, 프로젝트를 마치고 TIL들의 게시 시각을 종합한 결과물이다. 자는 시간이 이럴 수가 있나 싶을 정도로 열심히 살았다. 정말 그런만큼 기억에 남는 프로젝트였다. 사람들은 나를 정말 독한 팀장으로 평가하겠지만, 이런 분위기가 생기며 그들도 그렇게 치열하게 살아갈 수 있었던 것이라 생각한다. 그 안에서 나름 팀원들끼리의 즐거움은 모두 챙겨서 후회는 없다.


문서화의 끝장을 보다

정말 그동안은 Notion을 잘 활용하지는 못했었는데 다양한 부분에서 다양한 문서화와 기록을 시도해볼 수 있었던 경험이었다. 문서화의 가치를 존중하는 팀원들이 많이 협조해주었던 덕분이고, 특히 Notion 활용 경험이 많은 코코씨가 설정에 많은 도움을 주면서 나름 기반을 잘 잡을 수 있었다고 생각한다.


image image
HOME1 HOME2
image image
회고 스크럼
image image
회의록 회의록 상세


특히 팀원들이랑 함께 공유하고 돈독해지는 시간을 문서화를 통해서 많이 가질 수 있게 되었다. 아니, 정확히 말하면 우리들이 공유했던 시간들과 피드백들을 문서로 남기며 휘발되지 않고 우리의 문화로 정착할 수 있도록 하는 역할이라고 하는 것이 맞겠다.


어찌 됐든 이후 프로젝트나 개인적으로 사용할만큼 notion 사용에서의 능숙도를 많이 높일 수 있었던 기회였고, 개발 외적인 부분이지만 상당히 도움이 많이 되는 경험이었다. 이 notion(링크)은 절대 버릴 수 없을 것 같다.


발표회 영상을 보고

우선 이렇게 갈아넣은만큼 수상을 기대했지만, 아쉽게도 다른 팀들 역시 정말 잘 해냈고, 좋은 결과물을 가지고 왔다. 우리는 확실히 상위권일 것이다. 하지만 수상권은 아니었다. 반에서 10개 팀 중 2개 팀에 들지 못하고 쓴맛을 보아야 했다. 이 정도 노력이면 수상이 당연하다던 팀원들의 실망은 더더욱 컸고, 들이켰던 김칫국을 토해내야 했다😥


아무튼 이제는 마음에서 보내버린 공통프로젝트의 우수 프로젝트 지역 발표회 영상을 보고난 뒤의 나의 느낌을 적어보겠다.


아이템에서부터 수상은 갈린다

굵게는 트랙(웹 디자인, 웹기술, IoT)부터 하위로는 주제와 컨셉, 아이템들. 이것에 대한 선택부터가 수상을 결정짓는다. 물론 압도적인 실력차나 결과물이라면 모르겠다만 같은 수준이라면 그렇다는 것 말이다.

실제로 우리가 선택한 트랙인 웹디자인은 대전, 구미, 광주, 부울경을 합쳐 1개 팀만이 수상을 했다고 한다. 사실상 SNS이기에 구현해야하는 기능은 많으면서도 기존 SNS와의 차별점을 만들기가 쉽지 않았던 탓이다. 무엇보다 컨설팅 내내 유저가 처음에는 없다고 생각하고 서비스를 기획해야한다는 조언을 자주 들었고, 이러한 문제점을 개편하기 위해 0to1 전략에 대한 서비스를 기획해 구현했다. 그런데, 이것이 그리 돋보이지는 않았나보다.

전국의 지역 발표회를 보면서 느낀점은 기술적인 부분이 아니더라도 컨셉이나 아이템부터 먹고들어가는 것들이 있다는 것이다. 무엇보다 여러 번 강조해도 부족함이 없는 킬링 포인트, 즉 남들보다 확연히 다른 점이 있어야 한다는 것이다.


튼튼함보다는 화려함

우리는 유저를 위한 실제 서비스를 만들고 싶었고, 여러 화려한 기능들보다는 유저들의 UX를 해치지 않도록 디테일에 신경을 썼다. 이것이 꽤나 많은 시간과 노력을 들였다.

하지만 남들의 눈에 돋보이는 것은 화려함이다. 기능들 각각이 얼마나 완성도 있는지는 발표에서도, 시연에서도 그리 드러나지는 않는다. 반면 화려한 기능이 하나만 있더라도 보는 사람의 뇌리에는 박히는 것이다.

이것이 우리가 생각했던 처음 의도와는 다른 가짜 서비스를 만드는 것이지만, SSAFY에서 수상하려면 보여줄 기능이 많아야 한다는 컨설턴트님의 조언이 이제서야 와닿는 것 같다. 수상을 못해서 내심 미련이 남지만 디테일에 신경 쓰고 여러 QA를 진행하며 탄탄한 서비스를 만들어본 경험은 그래도 값지다.


세상은 넓고 천재는 많다

다른 지역의 서비스를 보며, 도대체 이런 생각을 어떻게 했지, 또는 6명이 6주동안 이걸 어떻게 했지 싶을 정도로 퀄리티가 뛰어난 서비스들도 몇 보였다. 하지만 기술적인 부분보다 돋보이는 건 기획이었다. 아이템과 컨셉을 어떤 식으로 잡는지, 그것이 서비스를 바라보는 시각을 가른다.


상상놀이터라는 서비스가 구미에서 있었다. IoT트랙이었는데, 초음파센서를 이용해 터치를 구현하는 구조였다. 이 서비스의 킬링포인트는 소아를 대상으로 한 컨텐츠와 타겟 설정이라는 것이다. 그리고 여기에 소아병동에서 이를 시연하고 아이들에게 선물을 주고, 의사선생님의 인터뷰를 녹이는 등 감성마케팅을 했는데 모두의 심금을 울리고 대단하게 느껴졌다.


이는 우리가 프로젝트를 바라보는 시각을 다시 보게 했다. 기술, 기획, 디테일 모두 빠지지 않는 대단한 프로젝트였다. 3D 모델링으로 캐릭터를 만들고, 디테일한 애니메이션을 넣어 정적이게 보이지 않게 했으며, 각종 다양한 게임 컨텐츠가 있었고, 무엇보다 사람이 있었다. 서비스에 사람이 있었다. 그것이 마음을 움직였다.


향후 계획

감사하게도 SSDC 프로젝트 인원으로 선정되어 특화프로젝트 대신 SSDC 프로젝트에 참여한다. SSDC 프로젝트는 SSAFY 상위 5%의 우수 교육생들을 선별해 삼성전자의 SR, MX사업부의 오픈소스를 기반으로 새로운 코드를 개발하고, 이를 merge하여 실제 삼성전자의 코드에 contribute하는 좋은 경험을 제공한다.


이번 주 초, 월화동안 서울 역삼의 멀티캠퍼스에서 발대식과 팀 구성이 있었으며, 팀 빌딩 때 정체되어 있는 분위기를 깨고 상황을 정리했더니 팀장이 되었다. 이번에는 훌륭한 리더 밑에서 멋진 바퀴와 수족인 팔로워가 되어보고 싶었는데 말이다. 그래도 훌륭한 수족들을 리드해볼 수 있는 경험이라고 생각하고 이 또한 잘 받아들이기로 했다.


공통프로젝트 때 문서화를 대단하게 해놓아서 새로운 프로젝트에 문서화 기반 notion을 구축하는 일도 그리 어렵지 않았고, 여러 명의 개발 인원들과의 일정 조정 및 의견 피드백 등을 능수능란하게 리드하고 있다는 느낌을 받고 있다. 리더는 역시 시간과 노력을 희생해야 하지만, 남을 위하는 성격을 가진 나로서는 나의 희생으로 팀과 팀원들이 더 활약할 수 있는 것이 꽤 좋다고 생각한다.


아무튼 공통프로젝트에서의 노력과 경험을 통해서 이번 프로젝트에 임하는 자세와 생각을 더 고민해볼 수 있었고, 앞으로도 더 발전시켜서 좋은 프로젝트 결과로 마무리할 수 있으면 좋겠다.

댓글남기기