처음으로 사이드 프로젝트를 진행하면서
개요
2022년 4월, 나의 첫 사이드 프로젝트가 마무리되었다. 회사 밖에서 다른 개발자들과 함께 프로젝트를 완수한 것은 처음이었다. 웹 페이지와 플레이 스토어, 앱 스토어에 런칭까지 성공적으로 마쳤다. 단순한 일기 작성 앱이었지만, 처음으로 시작한 사이드 프로젝트를 완수했다는 것에 큰 의미를 두었다.
🙏 시작하게 된 계기
회사 생활을 하면서 늘 마음속에 있던 것이 토이 프로젝트와 사이드 프로젝트였다. 많은 개발자들이 공통적으로 가지고 있는 생각이지만, 실제로 행동으로 옮기고 완성까지 이끌어내는 것은 쉽지 않은 일이다. 회사 일도 있고, 개인적인 일도 있고, 혼자서 진행하다 보니 동기 부족으로 중간에 멈추기 일쑤였다.
그러다 우연히 알게 된 것이 비사이드였다. 개인 프로젝트가 아닌 팀 단위로 개발하고, 중간중간 발표와 피드백을 통해 완성할 수 있도록 도와주는 프로그램이었다. 회사에서 일하는 분들이 팀원으로 참여하기 때문에 개발이 수월할 것 같았고, 나와 비슷한 생각을 가진 분들이 모일 것 같아 신청을 결심했다.
완성된 프로젝트
프로젝트 상세
프로젝트 시작
프로젝트 신청금액은 25만원이었다. 처음에는 상당히 큰 금액이라고 생각했지만, 비사이드에서 제공하는 지원이 생각보다 많았다. 구글 플레이/앱 스토어 개발자 계정과 NHN 클라우드 서버, 발표와 인터뷰 시 주는 쿠폰 등... 프로젝트가 끝난 지금은 그 금액이 전혀 아깝지 않다고 생각한다.
2021년 12월 6일, 프로젝트가 시작되었다. 첫 회의를 진행했는데, 이때는 아직 우리가 어떤 어려움을 겪게 될지 몰랐다.
💭 아이디어 회의의 난관
사실 나만 그런 것이 아니었다. 모든 팀원이 공감했던 순간이 있었다. 아이디어 회의가 예상보다 길어진 것이다. 아이디어 회의만 거의 3주 연속으로 진행했고, 일주일에 한 번씩 만났음에도 불구하고 피로도가 점점 증가하는 것을 느꼈다.
의견 충돌뿐만 아니라, 모두가 공감하고 개발하고 싶은 아이디어가 하나로 종결되지 않아 발생한 문제였다. 결국 우리는 프로젝트의 완성에 의미를 두기로 하고, 가장 간단하면서도 충분히 개발 가능한 아이디어를 선택하기로 했다. 개발 진행도에 따라 추가적인 기능을 붙이기로 한 것이다.
나를 포함한 클라이언트 개발자는 두 명이었다. 충분히 개발 가능했고, 빠르면 2주 안에 완성할 수 있었다. 하지만 그렇게 하면 발전하지 못할 것 같았다. 그래서 Flutter를 이용해 개발하기로 결정했다. 나도 다른 분도 처음이었지만, 공부하면서 진행하면 충분히 커버할 수 있을 것 같았다. 처음 계획은 Android뿐이었지만, Flutter를 이용해 iOS까지 함께 개발하기로 했다.
💻 프로젝트 개발
Flutter를 이때 처음 사용했다. 일단 튜토리얼 사이트에서 문서를 읽으면서 어떻게 개발하고, 어떤 요소들이 있는지 확인했다.
Flutter - Build apps for any screen
다른 샘플 프로젝트를 참고하며 개발을 시작했다. Android Compose 이후로 익숙해진 반응형 UI를 이용해 작업했기 때문에 크게 어려운 점은 없었다. 오히려 쉽고 간편했다고 생각했다. 회사에서 간단한 UI를 작업할 때는 Flutter를 사용하고 있는데 괜찮은 것 같다. 선언형 UI에 대한 나의 생각
협업으로 진행하기 때문에 빠른 앱 공유와 테스트가 중요할 것 같아 Fastlane/Firebase Distribution을 결합했다. 다행히 Flutter Command Build가 간편하고, Dev와 Release가 차이가 없는 수준이라 테스트하기도 편했다. Firebase Distribution 설정 후 팀원들을 초대해 다운로드 받을 수 있는 환경을 구축하고 개발을 진행했다.
사실 플레이 스토어와 앱 스토어 자동 배포까지 설정하려 했는데, 개인 계정이 아닌 비사이더 계정이기 때문에 따로 작업하지는 못했다. 권한이 필요했다.
🤝 서버와의 협업
서버와의 협업은 Postman이 주가 되었다. 사실 협업이라도 우리가 붙어서 작업하는 게 아니라 각자 시간이 남을 때 개발하기 때문에 실시간 소통이 어려웠다. 때문에 초반에 개발 방향과 필요한 작업 리스트를 선정하고, 개발을 진행했다.
다들 Postman을 어떻게 사용하는지 모르는 것 같아서 줌으로 간단한 강의를 진행하고 시작했다.
서버-클라이언트 간 API 인터페이스 및 Example 작성
Postman에 작성된 API Example을 이용해 서버 없이도 클라이언트에서 실제 API가 동작하는 것처럼 테스트/개발을 진행할 수 있게 되었다.
🎊 프로젝트 완료
위에서 작성되지 않은 많은 우여곡절 끝에 프로젝트가 종료되었다. 프로젝트를 진행하면서 기획자 한 분이 나가시고, 다른 기획자 분 혼자 기획을 진행했다.
또한 백엔드가 개발이 늦어져 프로젝트 종료 2주일 전에 서버와 붙여볼 수 있었는데, 많은 테스트를 진행해보지 못한 것이 아쉬웠다.
클라이언트 쪽의 협업을 진행하면서 많이 느낀 것은 공통적으로 사용할 인터페이스를 잘 작성하는 것(요구사항)을 초반에 혹은 개발 전에 잘 정의해야 개발 시 큰 어려움 없이 진행할 수 있다는 점이었다.
그래도 발표 전에 앱 출시를 성공적으로 마무리할 수 있었고, 개인적으로도 사이드 프로젝트를 통해 얻은 것들이 많다고 생각되어 좋았다.
프로젝트 마무리 후 뒷풀이 코로나가 이때 딱 잘 풀려서 다행이다
사이드 프로젝트에 대한 나의 생각
이번 사이드 프로젝트를 진행하면서 개인적으로 많은 생각을 하게 되었다. 잘했다고 생각한 부분도 있었고, 힘들었던 점도 있었다. 하지만 완벽한 것은 없다. 사람은 실수를 통해 배운다고, 다음번에는 더 나은 모습으로 참여할 수 있으면 된다고 생각한다.
아래는 다음에 사이드 프로젝트를 진행할 때 모두에게 하고 싶은 말을 작성했다:
아이디어 회의 때 아이디어를 많이 내고 어필해라
다른 사람의 아이디어가 마음에 들지 않으면 정확하게 말해라
개발할 사항을 정확하게 정리하고, 공유해라
중간에 추가되는 개발사항이 있다면 모든 일정들이 망가질 수 있다.
일주일에 사이드 프로젝트를 개발할 시간을 정해라
회사/개인적인 일정으로 미뤄지면 주말에 몰아서 하게 된다
현재 개발이 진행되고 있는 것, 개발이 완료된 것을 팀원들에게 공유해라
수정사항이 하나라도 있으면 공유해라
0부터 10까지 모두 개발하고 배포하지 말자
개발/업데이트 사항은 모든 서비스에 영향을 미칠 수 있다
테스트를 완벽하게 수행하고, 배포하자
배포했으면 시간이 남는 팀원은 테스트하고, 피드백을 전달하도록 하자
디자인은 중요하다
마음에 안 든다고 함부로 바꾸지 말고, 회의를 통해 결정 후 개발하도록 하자
모든 팀원이 작업하는 시간을 정해라
제발 슬랙 좀 켜고 살자…