🐣 정주는 회고 중 :]/네이버 부스트캠프 웹・모바일 8기

[회고] 네이버 부스트캠프 웹・모바일 8기 그룹 프로젝트 2주 차 회고 & 기술적 고민

유정주 2023. 11. 20. 13:48
반응형

서론

그룹 프로젝트 1주 차에는 기획을 주로 했고, 이를 바탕으로 그룹 프로젝트 2주 차에는 실제 개발에 들어갔습니다.

처음으로 협업을 해보면서 무엇을 느꼈는지 작성하고, 어떤 기술적 고민을 했는지도 적어보겠습니다.

그리고 최근에 도파민 다이어트를 해보고 있는데요.

이에 대한 짧은 이야기도 해보려고 합니다 ㅋㅋ

 

 

협업을 나누는 단위

저희 모티메이트 팀의 iOS는 저와 팀원 1명, 총 두 명입니다.

함께 기획하고 디자인한 걸 어떻게 나눠야 좋게 협업할 수 있을지 고민했습니다.

근데 이게 회사의 협업이랑은 성격이 좀 다른거 같더라고요.

회사의 협업은 효율 중심이지만 네이버 부스트캠프는 함께 성장하는 측면을 더 강조하고 있었습니다.

그래서 어떻게 해야 함께 성장하고 앱의 흐름을 모두가 이해하면서 적당히 효율도 챙길 수 있을까 고민했습니다.

 

팀원과 얘기한 결과, 흐름 단위로 나눠 협업하기로 했습니다.

예를 들어, 홈 화면에서 카테고리와 이미지 리스트를 보여주는 시나리오가 있다고 해봅시다.

그럼 한 명이 카테고리 UI + 비즈니스 로직을 구현하고, 다른 한 명이 이미지 리스트 UI + 비즈니스 로직을 구현하는거죠.

그러면 화면 단위로 분업을 할 때보다 전체적인 이해도가 상승할 것이라 생각했습니다.

 

그리고 실제로 그렇게 해보니 상당히 만족스럽습니다.

물론.. 같은 화면을 작업하기 때문에 코드 충돌은 꽤 많이 발생했습니다.

충돌을 해결할 때는 이게 맞나 싶었지만 모든 팀원이 코드에 대한 이해도가 높은걸 보고 "이게 틀리진 않았구나"라고 느꼈어요.

조금 더 해보면서 점점 최적화 시켜야겠다고 느꼈습니다.

 

 

UseCase를 더 의미있게 사용하는 법

저희는 클린 아키텍처 + MVVM-C를 사용 중입니다.

클린 아키텍처 자체는 잘 도입했다고 느끼고 있는데요.

UseCase에 대해 고민이 좀 생겼습니다.

UseCase를 레파지토리와 ViewModel을 연결하는 객체로만 사용하고 있기 때문입니다.

레파지토리의 반환값을 ViewModel에 전달하는 역할로만 쓰고 있는거에요.

 

이게 UseCase의 본질이 맞을까?라는 생각이 들었습니다.

물론 레파지토리에 접근하는 반복 로직을 재사용한다는 점에서 의미가 있기 하지만, 이것만으로 충분할까라는 생각이 드는거에요.

 

팀원과 말해보면서 레파지토리에서 오는 네트워크 에러를 UseCase에서 뷰 단의 에러로 교체하는 등의 처리를 추가해보려고 합니다.

UseCase를 잘 써보겠다고 불필요한 로직 코드를 넣는건 별론거 같고,

ViewModel이 네트워크 에러를 꼭 알아야 할까?라는 생각에 떠올린 방법이에요.

 

적용할지 말지 팀원과 얘기해보고 다음주 회고 때 후기 들려드리겠습니다 ㅎㅎ

 

 

코디네이터 패턴은 잘 도입했다

개발을 시작하면서 코디네이터 패턴은 잘 도입했다고 느꼈습니다.

저희 앱은 조건에 따라 이동하는 화면이 달라지고, Navigation바만 다른 화면도 존재합니다.

기존이었다면 ViewController 안에서 분기 처리를 하고, 내비바만 다른 ViewController를 새로 만들었을텐데 코디네이터 패턴을 사용하면서 이런 상황을 개선할 수 있었습니다.

코디네이터 객체에서 화면 분기를 넣어주니 ViewController가 가벼워졌고, 내비바를 주입하니 ViewController 재사용이 가능해졌습니다.

 

처음에는 화면 이동 처리를 분리한다고 얼마나 차이가 있겠어? 생각을 했는데요.

쓰면 쓸수록 매력적이고 저희 플젝에 맞는 패턴이라고 느껴져서 좋았습니다.

 

 

테스트 객체 위치

이번 주차에 테스트 객체를 정의하는 곳이 어디인지 확실히 배웠습니다.

 

Repository의 테스트 객체를 만드는 상황을 생각해 봅시다.

기존에는 Data 레이어에 넣었습니다. 이유는 레파지토리라서요... ㅎㅎ;

그러다보니 UseCase를 테스트할 때 Data 레이어를 import 해야했어요.

Domain 레이어가 Data 레이어를 import하는 것은 레이어 침범 문제이기 때문에 큰 문제였고, 고민이 깊었습니다.

 

근데 해결책은 의외로 쉬웠습니다.

테스트 객체는 테스트 환경에서 만들면 되는거였어요.

테스트 환경에 테스트 객체를 두고 그걸 import한다면 레이어 침범 없이 테스트를 할 수 있었습니다.

 

너무 어렵게 생각해서 답을 찾지 못하는 상황이었네요 ㅎㅎ

지금이라도 제대로 알아서 다행입니다.

 

 

도파민 다이어트

최근 도파민 다이어트를 하고 있습니다.

거창한건 아니고 유흥거리를 줄였다는 의미에요.

대표적으로 70~80개를 보던 웹툰을 10개 정도로 줄였고, 유튜브 쇼츠를 3개 연속 보지 않기, 샤워, 개발할 때 노래 듣지 않기 이런 느낌이에요.

아직 몸에 좋다는 느낌은 없는데요. 좋다니까 한 번 해보려고 합니다. 요즘 유행인 거 같기도 하고요 ㅋㅋ

멤버십 끝날 때까지 유지하고 무슨 변화가 있는지 살펴봐야겠어요.

 

 

감사합니다.

 

 

 

 

반응형