[#일지] 테오의 스프린트 15기 후기

RookieAND·2023년 6월 28일
8

Diary

목록 보기
10/15
post-thumbnail

1. 신청 계기

14기 때 프로젝트 미완성 이라는 아쉬운 점을 안고, 15기에 재도전 하였다.

올해 2월, 인턴쉽으로 입사를 하기 전 진행했던 테오의 스프린트는 나에게 신선한 충격을 불어넣었다. 5일 간의 긴박한 시간 속에서 기획부터 배포까지 빠르게 진행할 수 있는 프로그램이라니. 이야기만 들었을 때도 그게 될까? 싶었지만 역시나 완성까지는 조금 무리였다.

다행히도 그때 만난 팀원 분들 중 일부와 연이 닿아 14기 때 기획하였던 "이모힙합" 프로젝트를 재개하기로 결정했지만, 내 마음 한 켠에는 완성에 대한 열망이 정말 컸다. 그리고 이번 15기 참가자를 지원한다는 공지를 보자마자 망설임 없이 스프레드시트에 참가 신청글을 작성했다.

2. 팀 빌딩

첫 날에는 자신이 만들고 싶은 프로젝트를 설명하는 시간을 가졌고, 나는 내가 막연하게 생각만 했던 "소소한 메모" 프로젝트를 제시했다. 사진을 보면 알겠지만 평소에 아무렇게나 붙여놓았던 URL을 크롬 익스텐션으로 관리하자는 취지였는데, 이게 생각보다 인기가 너무 많아서 심히 당황스러웠다.

처음에는 내가 낸 아이디어니 자리를 지켜야 하나 싶었지만, 다른 아이디어를 듣던 중 나영석 게임 이라는 주제가 굉장히 신선하기도 했고 원래 게임 쪽을 개발했던지라 이번에는 비교적 가볍고 재밌는 주제로 가야겠다는 생각이 들어 결국 팀을 옮기게 되었다.

그렇게 모인 9명의 드림팀 멤버가 뭉쳤다. 이번 스프린트는 확실히 신청자가 많아서 그런지 몰라도 팀 당 분배된 인원도 평균 9명에서 11명까지였기 때문에, 속으로는 어떻게 해야 원활한 협업이 가능할까 고민이 많았다. 하지만 팀원 분들 전부 성격이 좋으셨기 때문에 걱정은 되지 않았다.

3. 팀 캔버스

1일차에 진행되었던 팀 캔버스 시간은 서로를 알아가고, 우리 팀이 이루고자 하는 목적이나 지켜야 할 규칙들을 정하는 시간이었다. 거기에 더해 이번 스프린트를 통해 무엇을 얻어가고자 하는지에 대한 의견도 나누는 시간이었다.

서로 의견을 공유하면서 느낀 점은, 요즘 들어 협업을 경험할 수 있는 환경이 점차 줄고 있다는 것이었다. 물론 개인의 노력에 따라 기회를 만든다지만 IT 동아리나 해커톤에도 몇 백명의 지원자가 몰리는 걸 보면 다들 협업에 목말라있구나라는 생각을 했다.

그리고... 정말 안타깝게도 이번 스프린트 또한 내가 MC를 맡게 되었다.

항상 느끼는 거지만 이 자리 정말 무겁다. 팀 분위기도 부드럽게 이끌 줄 알아야 하고, 무엇보다 의견을 원활하게 공유할 수 있도록 중간에서 조율을 해야 했기에 이번에는 최대한 조용한 척을 했는데, 어찌된 일인지 MC 투표에서 내가 당선되고 말았다. 안돼

마지막으로는 원활한 협업을 위해 서로 지켜야 할 규칙에 대해서 이야기 하는 시간을 마치고, 내일을 위해 사전 연락망 (오픈 카카오톡, Discord) 을 구성하고 관련 레퍼런스를 찾아오라는 공지를 드렸다. 혹시나 몰라서 미리 Github Organization도 개설은 해두었다.

4. 지도 그리기

두번째 날은 우리가 구현하고자 하는 서비스에 대한 의견과 아이디어를 발산하고 이를 고도화하는 "지도 그리기" 시간이었다. 개인적으로는 저번 스프린트에서도 이 과정이 가장 재밌다고 느꼈는데, 아니나 다를까 이번에도 어김없이 다양한 의견들이 나와서 하나씩 짚어보는 재미가 있었다.

여러 의견 공유를 통해 나온 결과는 킬링 타임 을 해소하기 위한 서비스이며, 최대한 쉽고 간결하게 즐길 수 있어야 한다는 의견이었다. 스프린트의 주제가 나영석 게임인 만큼 재미를 최대한 살리기 위해 여러 아이디어와 고민해야 할 점들을 논의하였고, 그 과정에서 무수히 많은 의견들이 오고갔다.

마지막으로는 우리 서비스에서 구현해야 할 기능들에 대해 정리하는 시간을 가졌는데, 역시나 첫 날에 비해서 정말 많은 의견들이 추가된 모습을 볼 수 있었다. 특히 음향이나 영상 매체를 활용한 방식은 정말 괜찮았기 때문에 이후 서비스 고도화를 하면서 구현을 시도해볼 생각이다.

6. 스케치 시간

삼 일차에는 구현할 서비스의 UI 구조를 설계하고, 이 과정에서 UX 적인 부분도 고려하며 살을 붙여나가는 시간을 가졌다. 여기서는 우리 팀의 디자이너인 얼룩소가 UX 결정권을 맡아 각 시안 별로 사용할 요소들을 결정했다.

이 과정에서 한 가지 겪었던 문제점은, 팀원 분들마다 우리가 구현하고자 하는 서비스에 대해서 각기 다른 생각을 가지고 있었다는 점이었다. 나의 경우에는 실시간 접속을 통해 문제를 같이 푸는 캐치 마인드 같은 서비스를 생각했는데, 다른 분들과 컨텍스트를 맞추는 시간을 가져보니 내 생각과 완전히 달랐음을 깨달았다.

이대로는 안되겠다 싶어 급히 서로 컨텍스트를 맞춰가는 시간을 추가로 가졌다. 스프린트 흐름에는 없던 시간이었지만 그때는 이렇게라도 서로 간의 싱크를 맞춰야겠다는 생각이 더욱 들었다. 그래서 제목도 "잃어버린 우리의 컨텍스트를 찾아서" 였다 ㅋㅋ

여담이지만 나중에 팀원 분들이 공유해주신 영상 링크를 보고 나서야 나영석 게임이라는 게 무엇인지 이해할 수 있었다. 내가 선택한 주제를 내가 모르는 게 말이 되나.. 그래도 착한 팀원 분들 덕분에 재밌는 요소를 또 하나 알게 되어서 기분은 좋았다.

그 이후에는 행동 주도 개발 (BDD) 와 스키마 주도 개발 (SDD) 을 진행했는데, 앞선 과정에서 시간을 너무 많이 허비했지만 어떻게 잘 작성해서 마무리 지을 수 있었다. 이후에 백엔드를 개발할 때 이 BDD를 정말 많이 참고했기 때문에 추후 다른 협업에도 BDD를 설계하는 시간을 꼭 가져야겠다는 생각이 들었다.

7. 개발 전 논의

본격적인 개발에 착수하기 전에 어떤 기술 스택을 사용할지에 대해 논의하는 시간을 가졌다. 이건 저번 스프린트 때 느꼈던 건데, 대부분 본인이 새롭게 사용하고픈 기술 스택을 많이 선택하지만 개발을 착수한 후에 겪는 러닝 커브로 인해 진척도가 꽤 더뎠었다.

따라서 이번에는 모두가 잘 다룰 수 있는 기술과 새롭게 배워보고픈 기술을 1순위와 2순위로 분류하고, 최대한 1순위에 놓인 기술 스택을 선택하도록 팀원 분들을 설득했다.
비록 백엔드와 인프라를 구축하는 입장이었지만 그래도 이 과정은 정말 중요하다고 생각했고, 실제로 덕분에 개발 공수를 많이 줄일 수 있었다고 생각한다.

8. 주말 간 내가 개발한 것.

이제 남은 것은 우리가 설계한 기획을 실제로 만들어보는 시간이었다. 우리 팀은 디자이너 한 명에 나머지 나를 포함한 여덟 명의 개발자가 전부 프론트엔드 개발자였기 때문에, 어쩔 수 없이 혼자 백엔드 개발을 맡기로 했다.

하지만 개인적으로는 좋은 경험이 될거라고 기대했다. 그동안 회사에서 서버 및 인프라 개발을 해오긴 했지만, 이렇게 맨바닥에서 인프라를 구축해보고 서버를 개발하는 것은 이번이 처음이었기에 나에게도 충분히 도움이 되는 일이라 생각하고 개발에 착수했다. 장하다 내 자신

추가로 이번 프로젝트를 시작하기 전 기초 세팅 및 CI/CD 구축도 맡아서 진행했는데, 이 과정에서 Github Action과 AWS CodeDeploy를 활용한 자동 배포 시스템을 구축해보았다. 프론트는 처음에 EC2 인스턴스 내 Nginx 를 사용하여 배포했으나, 추후 정적 배포를 통해 AWS S3 + CloudFront로 해결하는 것으로 방향을 수정했다.

백엔드 구조는 나에게 가장 익숙한 Express 와 MongoDB 조합으로 진행하였다. 3일 내에 개발을 마쳐야 했기 때문에 인프라 세팅에서 잡아먹힌 시간을 만회하고자 내린 결정이었다. NestJS는 다음에 써보는 걸로..!

이번에는 문제를 생성하기 위해서 "이미지" 를 받아 저장하고 이를 사용자에게 제공해줘야 했는데, 이 부분은 정적 파일을 S3에 올리고 반환된 Key를 저장하여 추후 해당 퀴즈 프리셋에 대한 요청이 왔을 때 CDN 주소를 반환하는 방식으로 해결했다. 이 과정에서 AWS SDK에 대한 이해도가 살짝 오른 것은 소소한 즐거움이었다.

9. 트러블 슈팅

이틀 간 열심히 밤낮을 새며 개발한 끝에 백엔드 개발은 일요일 오전에 마무리를 지었다. 이후 프론트 쪽을 좀 돕기 위해 PL 분께 태스크 분배를 요청드렸으나, 현재 각자 태스크를 쪼개서 분배한 터라 병합이 필요하다는 답변을 받았다.

이후 Git을 통해 현재 브랜치를 추적하고 빠르게 병합했는데, 이 과정에서 충돌이 너무 많이 발생하여 결국 월요일 새벽부터 구조를 전면적으로 재개편하고 처음부터 코드를 재작성하는 시간을 가졌다.

비록 백엔드 개발을 맡았지만 PL인 영영을 도와서 프론트 관련 컨벤션을 제공해드리거나 Git Flow 전략을 추천드리는 게 어땠을까 싶은 아쉬움이 들었다. 평소에도 협업을 위해 사전에 정리한 컨벤션이 있었는데, 이를 제안했다면 보다 원활한 협업이 가능하지 않았을까 싶다.

다행히 팀원 분들도 괜찮다며 재작성에 동의해주셨지만, 지금까지 열심히 작업해주신 결과물을 엎어야 했기에 한없이 죄송한 마음이었고, 무엇보다 내가 생각했던 이상적인 협업에서는 다소 거리가 멀어졌다는 생각에 마음이 무거워졌다.

이 과정에서 보다 더 나은 협업 과정에 대해서 깊게 고민하고 대책을 세워야겠다는 결심을 했다. 추후 회고에서 테오도 스프린트를 하는 이유에 대해서 한번 더 생각해주셨으면 한다는 말씀을 하시기도 했다. 여러모로 스스로에 대한 부족함을 많이 느끼게 된 스프린트였다.

9. 데모데이

마침내 대망의 데모데이가 돌아왔다. 다른 팀원 분들이 차례차례 우리 서비스를 이용하면서 상당히 즐거워 하셨고, 아이디어가 좋다는 말씀을 많이 하셨다.
내색은 안했지만 프로젝트를 완성했다는 사실에 대단히 기뻤고, 7월에 시간적인 여유가 많을 때 이 서비스를 반드시 고도화 해야겠다는 다짐을 했다.

다른 팀이 만든 프로젝트도 하나씩 전부 해보았는데, 전부 구현을 잘 하셔서 많이 놀랐다. 역시 세상은 넓고 능력이 넘치시는 분들은 많았다. 하지만 이번 스프린트를 기점으로 내가 부족한 점을 깨달았다는 것만으로도 많은 것을 얻었다고 생각했다.

10. 회고 / 후기

이후 회고를 가지면서 각자 좋았던 점과 아쉬웠던 점, 그리고 협업을 통해 얻었던 점 등을 적는 시간을 가졌다. 이번 스프린트는 회사와 병행할 수밖에 없었기 때문에 더 힘이 들었지만, 그만큼 스프린트를 성공적으로 마무리 했다는 점에서 뿌듯함을 느꼈다.

팀원 분들이 가장 아쉬워 하셨던 점은 역시나 Git 전략과 Code Convention 이었다. 초반에 확실한 규약 없이 개발을 진행한 탓에 원활한 협업이 어려웠다는 의견을 제시해주셨고, 나 또한 이에 동의했다. 역시 탄탄한 컨벤션은 늘 진리임이 분명하다.

11. 이후...?

스프린트는 이제 끝이 났지만, 개인적으로 이번 주제가 정말 재밌다고 생각했기에 팀원 분들에게 고도화를 제안하였고, 몇 분께서 이에 응해주셔서 7월에는 구현하지 못한 추가 기능들을 마저 개발한 후에 정식으로 릴리즈를 도전해볼 예정이다.

프로덕트를 만드는 것도 좋지만 사용자로부터 피드백을 받아 이를 고도화하는 과정을 밟는 것이 더 유익하다는 것을 최근에 많이 느꼈기 때문에, 조금 욕심을 부리더라도 고도화를 빠르게 진행해볼 생각이다.

이번 스프린트는 나에게 있어 정말로 큰 도전이었고, 3일 밤낮을 새가며 열심히 개발에 대한 열정을 불태웠던 하루였다. 이상 후기를 마치며 출근을 위해 글을 마치도록 하겠다 (...)

profile
항상 왜 이걸 써야하는지가 궁금한 사람

4개의 댓글

comment-user-thumbnail
2023년 6월 28일

수고 많았어요 루키~~🔥 역시 최고👍

답글 달기
comment-user-thumbnail
2023년 6월 28일

루키 고생하셨어요 👍🏻 혼자서 백엔드라니 갓..

답글 달기
comment-user-thumbnail
2023년 6월 28일

ㅋㅋ 수고 많았어요! 이번에는 전보다 훨씬 더 좋은 경험과 깨달음을 몸소 느껴간것 같아서 좋네요 ;) 회사일과 병행하기 힘들었을텐데 수고 많으셨습니다!!

답글 달기
comment-user-thumbnail
2023년 7월 1일

이쯤되면 루키가 가는팀은 분위기가 좋다 라는 공식이 생기는거 같아요 정말 고생하셨습니다!!1

답글 달기