7월 5일을 기점으로 6주가량의 최종 프로젝트를 마무리했다. 6주보다 길게 느껴졌던 것은 그만큼 하루를 밀도 있게 사용하려고 하고, 그리고 스토어에 정식 릴리즈를 올리기 전 최종 수정을 하느라 실제로 2주를 더 썼기 때문인 것 같다. 최종 프로젝트의 종료와 함께 끝나지 않을 것 같던 내일배움캠프도 끝이 났다. 내일배움캠프에 대한 후기는 따로 한 번 글을 남길 생각이고, 이 포스트에서는 중간 발표 이후 최종 프로젝트 진행에 대한 회고만 쓸 생각이다.
비공개 테스트 심사
6월 17일에 중간 발표를 끝마치고, 비공개 테스트 심사를 위한 MVP를 조금 더 손보았다. 꽤 문제가 있어 보였던 UI/UX 몇 부분과 산책 목록 무한 스크롤과 같은 필요한 추가기능을 조금 더 넣었다. 나는 이때, 예외처리가 미흡한 부분들을 마무리하고 유저에게 UI 상으로 전달될 수 있도록 처리하고, 저번 글에도 썼지만 Singleton ViewModel을 사용했던 부분을 새로 만든 버스 클래스를 이용하도록 전부 리팩터링 하는 데에 시간을 많이 썼다.
이전에 연이은 밤샘 작업으로 필요한 부분들은 직접 변경해놔서, 전반적으로 아주 큰 변화들이 필요하진 않았다. 그래서 6월 20일에 MVP 구현을 마무리해서 비공개 테스트 심사를 올릴 수 있었다. 심사를 올리니 가장 먼저 진행되는 것은 봇에 의한 코드 심사였는데, 여기부터 막히지 않을까 내심 걱정도 했다. 실제로 다른 조는 꽤 많은 지적 사항이 돌아오는 경우도 있어서 더 걱정했던 것 같다.
심사를 올려두고는, 보완작업을 바로 시작했다. 업로드 한 것은 MVP이기 때문에, 우선순위가 낮았던 기능들 구현과 로직 처리, 내부 로직 리팩터링, UI/UX 튜터링을 통한 피드백 등 할 것이 꽤 남아 있었다. 최종 발표가 7월 5일인 것을 감안하면 그 시점에 남은 시작은 꽤 촉박했으므로, 더 쉴 틈이 없었다.
6월 24일에 비공개 테스트를 위한 검수가 끝났고, 다행히 봇으로부터 지적받은 문제는 거의 없었다. 있어도 UI 쪽에서 버튼 크기를 조금 키워야 한다든지 치명적인 문제가 아니었다. 그동안 나름 꼼꼼하게 코드 리뷰를 보고, 견고한 코드를 위해 신경 쓴다고 신경 쓴 것이 허사가 아닌 것 같아서 만족스러웠다.
비공개 테스트 기간
이후에는 대략 3주 정도의 비공개 테스트 기간이 진행되었다. 안드로이드 기기를 사용하는 지인들에게 테스트를 많이 부탁했었는데, 확실히 개발자와 유저가 보는 시선은 달랐기에 더 다양한 개선점을 찾을 수 있었다. 지속적으로 들어오는 피드백과 직접 앱을 테스트하며 찾은 개선점들을 토대로 팀원들에게 task를 다시 분배하고, 나도 내가 맡은 부분을 본격적으로 시작했다.
위와 같은 조금 큼직한 트러블 슈팅도 했고, DB 구조로 인해서 생기는 문제로 인해 아래와 같이 구조를 갈아엎기도 했다.
그리고 산책 리마인더(알람) 기능을 만들기 위해서 시간을 꽤나 썼다. 관련 내용은 아래와 같은데, 도중에 Broadcast Receiver에 제대로 의존성 주입이 되지 않고 앱이 죽어서 한참을 고생하다가, 그게 결국 그냥 Hilt 자체의 버그였고 Android Developers가 아닌 Dagger 공식 문서에 있는 버전으로 Hilt 버전을 올렸더니 해결되었던 것을 생각하면 지금도 눈물이 난다..
내용이 꽤나 긴데, 이 부분도 다음에 한 번 따로 정리해볼까싶다.
이 외에도 팀원 분들의 버그를 함께 해결하고, 사소한 수정까지 계속하고 나니 최종 발표날까지 빠르게 다다랐다.
최종 발표와 심사
최종 발표를 위해서 PPT와 노션 브로슈어를 조금 신경써서 준비했다. 물론 어떤 내용을 전달하는 지가 가장 중요하지만, 사람과 사람이 소통하고 또 평가 받는지라 깔끔하게 보여질 수 있도록 노력했다. 오랜만에 PPT를 만들고 있자니 전공 때 하던 팀플들이 떠오르기도 했다. 아래는 작업했던 PPT의 일부이다.
캠프 내부 발표는 팀원분께 부탁드렸는데, 멋지게 잘 해주셔서 무사히 끝낼 수 있었다. 그리고 오후에는 이제 외부 손님들 및 심사위원분들이 각 조의 가상공간 부스를 방문해 질의응답을 가지는 시간이 마련되었다. 심사위원 분들의 평가는 우수 프로젝트를 선발하는 데에 반영되기 때문에, 좋은 답변을 드리고 싶었다.
우리 조에서 질의응답 답변은 전적으로 내가 담당하게 되었는데, 위의 이유로 긴장은 되었지만 코드를 작성하면서 내 나름의 충분한 고민을 거쳐 근거를 찾고 의사결정들을 했기 때문에 편하게 대답할 생각이었다. 또 팀원들의 코드들도 리뷰를 진행하면서 충분히 본 상태여서 대답을 다 할 수 있으리라 생각했다.
심사위원으로 다양한 분들이 오셔서 질문하셨다. 대부분은 개발자 분들이셨고, 디자이너 분이나 기획쪽에 몸 담고 있는 분도 계셨다.
다양한 분들이 오신만큼, 질문도 다양했다. 앱 주제를 선택하게 된 근거와 소비자 보이스 판단 방법, 법적인 이슈가 생길 수 있는 부분처럼 프로젝트 전반이나 기획에 대한 질문도 받았고, UI/UX를 특정 방식으로 채택하게 된 이유나 앞으로 개선하려는 방향처럼 UI/UX 디자인 측면에서도 질문을 받았다. 개발자 분들은 주로 Service를 구현함에 있어서 디테일들과 채택 근거, 아키텍처를 선택한 근거, 앱 전반 프로세스, 리마인더 기능의 구체적인 구현 방법, 유저의 의도되지 않은 동작에 대한 대처 등 구현에 대해서도 많이 물어보셨고, 향후 추가 계획이 있는 기능이나 라이브러리 선택에 대해서도 많이 물어보셨다.
물론 심사위원 분들께서는 질문도 많이 하셨지만, 다양한 조언도 많이 해주셨다. 처음 알게 된 라이브러리도 좀 있었고, 도입해볼만한 기능이나 경험에서 오는 문제 대처 방법도 많이 소개해주셨다.
대체로 질문들에 대한 대답을 나름의 근거를 들어 깔끔하게 할 수 있었고, 스스로도 아쉬운 부분이 없는 것은 아니었지만 그래도 만족스러웠다. 대학교 주전공 수업에서 항상 발표 내용을 충분히 숙지하고, 대본 없이 발표하고 질의응답하는 연습들을 했었는데 그런 경험들이 도움이 많이 된 것 같다.
심사위원 분들의 질의응답 및 심사까지 종료되고, 우수 프로젝트 시상 및 개인상 시상이 진행되었다. 이 때 굉장히 지쳐있었기도 했고, 큰 기대를 하지 않고 있어서 넋을 놓고 있었던 것 같다. 결과는 너무나 감사하게도 프로젝트 최우수상 및 문제해결능력에 관한 개인상도 받을 수 있었다.
여태까지 프로젝트의 완성도를 위해서 힘들고 번거로운 것들도 놓지 않고 해온 것에 대한 보상을 받는 느낌이었다. 좋은 기획 아래에 좋은 코드를 작성한 다른 조의 앱도 많았기 때문에, 그 사이에서 최우수상으로 선정된 것이 더 값지게 느껴졌다. 또 개인상은 온전히 캠프 내부 인원들에 의해 평가 받는 것이기 때문에, 여태 함께했던 여러 팀원들이나 튜터님들, 매니저님들이 나에 대해 좋은 평가를 해주신 것 같아서 너무 감사했다.
시상을 끝으로 그렇게 끝나지 않을 것 같던 내일배움캠프도 종료되었다.
그 이후
이후에도 팀원들과 프로젝트에 대한 보수 작업을 추가적으로 진행했다. 물론 이제 캠프 진행기간 때처럼 하루종일 가상공간에서 함께 있다거나 하진 않았지만, 매일 정해진 시간에 모여서 각자 작업 진행 상황에 대한 피드백을 주고 받았다.
심사위원 분들에게 받은 조언과 조금 더 아쉬움이 남는 부분들을 끝까지 해보고 싶어서 팀원들과 함께 자체적으로 진행한 것이고, 그것도 대략 2주정도 진행했다. 또 비공개 테스트가 종료되었기 때문에, 정식 릴리즈까지 해보면 좋은 경험이 될 것 같았다.
큰 변화들이 있는 것은 아니었지만, 다들 6주동안 많이 지쳐있었고 캠프가 끝나 몰입도 자체가 떨어질 수 밖에 없는 상황이라 보완작업은 대체로 느슨하게 진행되었다.
이 포스트의 작성날짜인 7월 21일에 정식 릴리즈 버전 심사를 올려둔 상태이다. 프로젝트 내의 모든 코드가 만족스럽고 최선이냐고 묻는다면 그건 아닐 것이다. 따로 공부를 계속해서 하고 있기 때문에, 이제서야 보이는 문제점도 있고 혼자 진행한게 아니다보니 타협한 부분들도 남아있다. 하지만 팀 단위로 생각했을 때는 이정도면 충분히 열심히 한 것 같아서, 일단 릴리즈를 올려보기로 했다. 또 여러가지 이유로 리젝 당할 수도 있으니까...
마지막에 자체적으로 진행한 2주를 포함한다면, 거의 8주에 달하는 긴 시간동안 하나의 프로젝트를 위해서 달린 경험은 한층 성장할 수 있는 계기가 되었다. 코드를 잘 짜는 것과 프로젝트를 잘 완성하는 것은 또 다른 영역이라고 생각한다. 프로젝트 리더를 하면서 앱 기획, 기능 명세, 디테일한 구조 설계, task 정의와 분배(HR 관리), 지속적인 코드 리뷰, 형상 관리, 프로젝트 일정 관리, 배포를 위해 확인해야 했던 부분 등 정말 많은 부분을 신경썼고, 구현에 있어서도 튜터님들에게 많은 질문을 통해 좀 더 올바른 코드를 작성해보려고 노력했다. 이런 부분까지 해야할까 하는 순간에 하자고 마음 먹고 진행했던 부분들이 특히 성장에 도움을 많이 주었다.
체력적으로나 정신적으로나 힘든 부분도 많았을텐데, 믿고 따라와주고 함께 좋은 결과를 낸 팀원들에게 다시 한 번 감사의 인사를 전하고 싶다. 또 내가 난감한 부분에 대한 의사 결정을 해야할 때, 같이 검토해주고 방향성을 조언해주신 튜터님들과 프로젝트 외적으로 서포트 해주신 매니저님들께도 너무 감사하다.
이정도면 꽤 만족스러운 최종 프로젝트였다고 말할 수 있을 것 같다. 이제 또 적절한 아이디어를 생각해 개인 프로젝트를 진행함과 함께 공부를 병행 할 생각이다. 사둔 책도 많고...
이쯤에서 최종 프로젝트 마무리 회고를 마친다!
'내일배움캠프 안드로이드 3기' 카테고리의 다른 글
[TIL] 24.06.21 최종 프로젝트 중간 회고 (8) | 2024.07.22 |
---|---|
[TIL] 24.05.21 Service Locator 패턴 적용하기 (0) | 2024.05.22 |
[TIL] 24.05.10 Delegate 패턴 적용해보기 (0) | 2024.05.12 |
[TIL] 24.05.09 앱개발 심화주차 개인과제를 하면서 (0) | 2024.05.10 |
[TIL] 24.05.07 앱개발 심화 주차 개인과제 (0) | 2024.05.08 |