8일같던 약 8주의 레벨 3이 끝났다.
2차 데모데이가 끝나고 레벨 3의 회고록을 작성할까 했는데, 그 이후로 개발할 기능이 많아지며 인프라나 모니터링 등 프로젝트 관련 할 일들이 많아져 작성하지 못했다 😢
그래도 레벨 단위 회고를 작성하고 싶었고, 레벨3 말하기를 마치고 곧바로 회고를 작성하고자 한다.
기술의 깊이보단 넓이 관점에서 많은 성장을 했다고 생각한다.
부끄럽지만 이번 프로젝트를 통해 세션 인증 방식을 처음 적용해봤고, 도메인형 디렉터리 구조, JPA, 외부 API 사용, 좌표간의 거리 계산, 페이징, 동적 쿼리, OAuth, URL에 들어갈 수 없는 문자들이 있다는 점, 검색 필터링, 로깅, 도커, 모니터링(프로메테우스, 그라파나) 정도로 나열할 수 있다.
물론 위에 있는 기술들을 내가 모두 적용했거나 깊게 알진 못한다. 하지만, 내 프로젝트에 사용된 기술로써 어떻게 동작하고 왜 사용하는 지에 대한 정도는 알고 있다.
프로젝트를 하지 않았더라면 절대 알 수 없고 경험해보지 못했을만한 내용들이기에 이번 프로젝트가 너무 감사한 경험이라고 생각한다.
프론트 3명, 백엔드 4명으로 이뤄진 우리 팀에는 레벨2에 같은 데일리 조 였던 오도를 제외하고는 아무도 몰랐다.
하지만 다행히 모두 성격도 좋고 금방 친해질 수 있었다.
다만, 2차 데모데이까지 조금 고민이었던 부분은 회의를 진행할 때 이야기의 주제가 일관되지 않았다는 점이다. 그러다보니 회의 시간도 길어지고 회의가 많아질수록 팀원간의 싱크가 맞지 않는 문제들도 발생했다.
2차 데모데이가 끝나고 모두 모여 회고를 진행했는데, 이 때 내가 느낀 생각들을 솔직하게 이야기했다. 다행히 나와 생각이 같은 팀원들이 있었고 우리 팀만의 그라운드 룰을 다시금 재정의하는 시간을 가졌다.
이후로는 회의를 진행할 때 진행자와 서기를 정했고, 회의 안건이 무엇인지 분명하게 한 다음 회의를 진행했다.
그러다보니 자연스레 위 문제들을 해결할 수 있었다.
평소에는 팀원 모두가 너무 좋은 사람들이었기에 별 탈 없이 지낼 수 있었다.
팀은 코치님들이 랜덤으로 꾸려주셨다. 그러다보니 백엔드 팀원 4명의 역량 차이가 발생할 수 있었고, 실제로 차이가 많이 났다.
심지어 우리 팀에는 우테코 내에서도 유명한 크루가 있었다.
이렇게 서로의 역량이 다른 상태에서 하나의 프로젝트를 함께 진행하려다보니 나로썬 다소 힘든 점이 있었다.
역량이 뛰어난 크루의 입장에서는 문제를 빠르게 해결하기 위한 굉장히 익숙하고 편한 방식이, 나에겐 낯설고 어려운 내용일 수 있다.
그래도 팀원 간의 역량 차이를 메꾸기 위해 몹 프로그래밍을 진행했다. 하지만 몹으로 진행하는 내용 자체가 아직 익숙치 않은 내용이라면 그것을 잘 아는 크루가 이야기하는 대로 드라이빙을 했어야 했다. 결국 그것을 익히기 위해선 내가 따로 시간을 써야 했던 상황이었다.
그래서 난 이 간극을 메꾸기 위해 업무를 하나씩 맡아 책임지고 진행하고 싶었다. 그 다음 일과 외 시간엔 개인적으로 부족했던 공부를 하고 싶었다.
이 생각을 꽤 오랜 기간 가지고 있었지만 2주 단위로 데모데이를 진행해야하는 상황에서 이야기하기 쉽지 않았다.
내가 생각하는 대로 진행하게 되면 일의 속도가 현저히 느릴 것이 뻔했기 때문이다.
그리고 2차 데모데이까지만 해도 백엔드끼리 업무를 분담하기도 양이 너무 적어서 이야기하기 껄끄러웠다.
그러다 특정 사건을 계기로 3차 데모데이 직전에 "나를 맞춰줬으면 좋겠다"는 식으로 이야기를 했다.
하지만 한 크루가 "혹시 집에서 프로젝트 관련된 낯선 내용을 따로 학습해본 적은 있는가?" 라는 질문에 "업무를 하나 맡아 책임지고 진행하고 싶었다. 그 다음 일과 외 시간엔 개인적으로 부족했던 공부를 하고 싶었다."고 대답했긴 했지만 혼자서 곰곰히 생각할수록 내가 너무 부끄러웠다.
다른 크루들도 키우고 싶은 기술적 역량이 있을텐데, 왜 내 역량만을 생각 했는지 너무 부끄러웠다.
내가 하고 싶은 공부도 역량이지만 프로젝트 관련 기술들도 역량이라는 생각도 왜 못했을까.
더 열심히 하게 된 계기가 된 순간이었다.
우리 서비스에는 음식점의 정보와 사진들, 셀럽의 프로필 사진과 음식점 관련 영상이 필수이다.
하지만 위 데이터를 사용하기엔 저작권 관련된 문제들이 존재했다.
위 문제로 서비스 기획의 방향성도 수정해야하나? 라는 이야기도 나왔었다.
위에 문제에 대해 우리 팀에서 나온 대안은 '셀럽에게 메일을 보내 관련 자료들을 사용할 수 있도록 허락 메일을 보낸다', '음식점 사진은 인스타그램에 올라온 사진을 쓸 수 있도록 허락을 맡는다.' 이다.
처음 위 대안이 나왔을 때에도, 이렇게 까지 해야하나? 라는 의견이 있었고 실제 메일을 보내는 과정, 유튜브를 보며 캡쳐한 다음 사진을 저장하는 과정 등을 할 때 다소 귀찮다고는 생각했다.
하지만 정말 다행히도 위 두 대안을 모두 사용함으로써 저작권 관련 문제를 해결했으며, 데모데이에서는 코치님들이 인상깊다며 칭찬해주셨다. 실제로 배달의 민족도 서비스 초창기에는 전단지들을 모두 주워 데이터를 수집했다고 말씀도 해주셨다.
엑셀 스프레드 시트에 취합한 데이터를 DB에 손쉽게 저장하는 기능을 맡았다.
위 기능을 모두 구현한 다음 코드 리뷰까지 마친 상태에서 develop 브랜치에 merge를 한 직후, 한 팀원이 실수로 dev DB의 데이터를 모두 날렸다.
데이터가 약 300개라 복구하는 데에 많은 시간이 드는 것은 아니지만 취합한 데이터를 다시 모두 넣는 것은 굉장히 번거로운 일이었다.
그때! 딱! 내가 팀에서 구현한 첫 번째 기능이 dev 서버에 올라갔고, 내 기능을 통해 다시 데이터를 저장하려 했다.
혹여나 버그가 발생하면 어쩌나, 데이터가 잘못 저장되면 어쩌나 많은 걱정을 했다.
동작 결과, 정말 다행히 300개의 데이터가 한 번에 저장되었고 별 문제 없이 잘 저장되었다.
이때가 정말 개발 공부를 하고 나서 가장 많은 희열을 느끼고 뿌듯했던 순간이었다.
레벨 4에는 다시 많은 미션이 존재하게 된다. 동시에 레벨 3에서 진행한 서비스를 고도화하는 시간이다.
미션을 통해 여태 놓친 학습의 깊이를 채우고, 동시에 서비스를 고도화하며 나의 첫 서비스를 야무지게 만들어 실사용자를 모집하고 싶다.
레벨 4에도 건강하고 꾸준하게 학습해보자!