Flutter Songdo 스터디 회고

@sleepybee · February 07, 2023 · 13 min read

기간

2022.12.17 ~ 2023.01.28 (7주)

팀 구성

개발자 4명, 디자이너 1명, 멘토 1명

왜 스터디에 들어갔나

본래 Flutter에 관심이 많았는데 우연히 GDG 인천 DevFest에서 Flutter 섹션이 있다는 걸 알게 됐다.

그런데 DevFest 3일 전에 코로나에 걸려 가지 못했다. 너무 아쉬웠다.

아무튼 이때 DevFest 때문에 GDG 인천/송도 오픈카톡방에 참여했는데 여기서 모집글을 보게 되었다.

나같은 짭발자가 가서 창피나 당하는 게 아닐까 걱정했지만 도대체 다들 플러터를 어떤 구조로 짜고 클린아키텍쳐가 얼마나 가능한건지 알고 싶어서 지원했다.

아이디어 1등했다

참가자 전원이 한 가지 아이디어를 필수로 제출해서 투표를 받기로 했다.

당황스럽게도 아이디어 투표에서 1등을 했다.

특별히 당황스러웠던 이유는 상당히 얌생이 같은 마음으로 가져간 아이디어였기 때문이다.

<한국형 레지스트리>라는 이름의 아이디어인데 이미 해외에서 서비스되고 있는 레지스트리 앱 아이디어를 고대로 가져왔다. 이유는 1)기획하는 시간 줄이고 싶어서 2)UI디자인도 베끼고 디자인 품도 줄이고 싶어서 3)DB애셋이 필요없어서 였다.

순전히 플러터 공부만 하고 싶기 때문에 짠 아이디어였는데 실서비스로도 좋을 것 같다는 피드백을 엄청 받았다. 난 전혀 그렇게 생각하지 않았어서 꽤나 당황했다.

다른 분들은 마치 창업 스터디같이 사용자에게 필요할 것 같은, 세상에 없던 새로운 것을 고민해서 짜오셨다. 하지만 그러다보니 DB같은 부분이 구현이 어려워서 절대 만들 수 없겠다는 아이디어들도 많았다.

개중 내가 제일 인상깊었던 건 집 날씨와 회사 날씨를 출근 시간에 알려주고 복장이나 우산 여부같은 것을 알려주는 앱이었다. 물론 멀티 날씨를 노출하는 앱들이 있긴 하지만 아예 그게 메인컨셉인 앱은 없어서 제일 쓰고 싶다고 생각했다. API문제만 없었으면 좋았으련만.

재밌었던 점은 스터디에 참여한 현직자들은 오픈DB를 쓰는.. 거의 싱글페이지에 가까운 앱 아이디어를 가져왔다는 것이었다. 한국사문제은행 내려받고 노출하는 앱이라든가 문화재단 공연정보 내려받고 노출하는 앱이라든가 ㅋㅋㅋ 역시.. 짬바... 난 그런 아이디어들이 스터디 성격에 맞다고 생각해서 그런 앱들에 투표했다.

팀장이 됐다

상위 4개의 아이디어로 4개의 팀을 꾸렸다.

내 아이디어가 1등 했다는 건 팀장이 된다는 거였다.

난 이 앱을 만들고 싶었기 때문에 이 앱을 만들 수 있다는 거에 기뻤지만 바로 아차 싶었다. 스터디 팀장이라는 것은 아무 권력이 없는, 일종의 집사(속되게 말하면, 시다바리)같은 거라 플러터 공부만 하고자 한 내 계획과 어긋나는 역할이었다.

이래저래 당황스러움을 감추지 못하니 팀원 한 분이 "너무 부담갖지 않으셔도 돼요"라고 격려해주었다. 얼마나 없어보였으면... 하지만 내가 당황스러웠던 큰 이유는 우리 팀원들이 아무도 앱 개발 경력이 없다는 사실이었다.

하차의 위기

내 기획은 나같은 허접도 2주면 만드는 기획이었다. 그런데 개발자가 4명이나 있다니 금방 해낼 줄 알았다. 빨리 만들고 오거나이저 분들께 아키텍쳐에 대한 피드백을 받아야 겠다고 계획을 세웠다.

오산이었다.

다들 Git도 처음이고 디버깅도 할 줄 몰라서 오류와 충돌의 연속이고 진도는 개미눈꼽만큼씩 진행됐다.

나는 그 오류와 충돌을 바로잡는 것까지 하면서 혼자 개발할 때보다 3배는 힘들었다.

힘든 것도 힘든 거지만 결정적으로...

패턴을 적용하면 우리 팀원들이 내 코드를 읽지 못했다.

Bloc패턴이나 Provider를 조금씩 알려주면서 할까 하다가 주어진 기간 내에 끝낼 수 없고 팀원들이 그럴 수 있는 단계가 아니라고 판단하여 관뒀다.

그래서 난 원래 쓰던 패턴도 못쓰고 아아주 일차원적인 코드를 써야 했다.

퇴화된 내 코드를 보면서, 스터디하는 의미가 있을까, 시간낭비하는 건 아닐까 하는 회의감에 휩싸였다.

그래도 완성해보자

사실 나는 첫 팀빌딩 때 20살의 무경력 아기병아리 분들이랑 팀이 됐길래 최소한의 개발 경험만 주고 나머지는 내가 해야겠다고 다짐했었다. 그래서 모든 주요 기능은 내가 개발하고 UI 구현만 분배해서 나누어 주었다.

하지만 3주가 지나도 그만큼도 해내지 못했다. 자연스럽게 팀원을 원망했다. 꼰대같은 마음이 튀어나왔다.

'내가 이렇게 배려해서 역할을 조금만 주는데도 왜 못 해내지? 나 때는 말이야..'

나 때?

난 스물다섯에 처음 앱 개발을 배웠고 당시 내 코드는 진짜 한심한 수준이었다.(지금도 그렇지만)

그때 강사나 주변에 도움을 청할 수도 있었겠지만 난 그러지 않았다.

왜냐면 창피하니까.

난 코드 뿐만 아니라 마인드도 한심했다.

그에 비해 우리 팀원들은 정말 멋진 사람들이었다. 처음이라 배워야 하는게 너무 많았는데 그걸 한번에 소화하려고 했고 멘토님이나 나한테 끊임없이 질문했다. 진도가 느린 건 안해서가 아니라 모든 게 처음이라 아둥바둥하고 있었기 때문이었다. 나는 그러지 못했다.

옛날 내 모습과 겹쳐보면서 어린 팀원들을 응원하는 마음으로 스터디를 끝까지 하자고 마음을 굳혔다.

스터디 기간에 연휴가 많아서 시간도 많지 않았는데 내 아이디어이다 보니 기획적인 부분도 도맡아서 고민하고 구현해야 했어서 힘들었다.

목표 달성?

기간 내에 플레이스토어에 안드로이드 배포 완료하였다.

앱스토어에도 올리는 게 목표였으나 그건 달성하지 못했다.

팀의 목표는 90프로 정도 달성한 셈이다.

나 개인 목표(아키텍쳐 공부)는 달성하지 못했다.

결과물

🎁위시리스트 공유하는 앱, 위위시wewish

그래도 배운 게 많았다

사실 첫 미팅 때 멘토님이 개발 단위를 늘리자고 하셨다. 아이디어를 좋게 봐주시고 욕심이 나셨던 것 같다. 난 극구 반대했다. 개발 경력, 디자인 경력이 나 외에 아무도 없었기 때문에 불안했다. 어찌저찌 개발 단위는 줄였다. 결과적으로는 내 생각이 맞았다. 내가 틀렸던 것은 그보다 더더더 줄였어야 한다는 거였다. 앞으로도 팀 프로젝트 할 때 더 보수적이어야 겠다고 배웠다..

중간에 나는 여기서 무얼하고 있나 회의감에 빠졌을 무렵, 오거나이저 중 한 분이 Flutter 아키텍쳐 세션을 열어주셨다. 어떻게 Flutter로 클린아키텍쳐를 구현했는지를 한 시간 가량 보여주시면서 설명해 줬는데 이게 정말 도움이 됐다. 그 세션을 듣고 난 후에는 한결 기분이 좋아졌다. 덕분에 스터디하길 잘했다고 생각했다. 조만간 알려주신 구조를 시도해 볼 생각이다.

후일담

우리 팀은 단톡을 파지 않고 디스코드에 채널을 만들어 협업을 했는데 이 채널에 오거나이저 분들도 접속이 가능했다. 그러다보니 내가 어찌저찌 팀을 이끄는 모습을 보시고 여러 오거나이저 분들이 돌아가면서 "열정적이시다", "팀장다운 팀장이다" 등 한 마디 씩 격려의 말을 해주셨다. 칭찬이라기 보단 안쓰러워 보였던 것이리라.

최종 발표를 마치고 자리로 갈 때 GDG 오거나이저에 관심없냐는 제안을 받았다. 나의 가엾은 팀 리딩이 인상 깊으셨던 것 같다. 좋게 봐주신 것 같아 정말 감사했는데 조금 당황해서 질색팔색하는 제스쳐를 해버렸다. 내가 거절한 건 제안이 싫어서라기보다 나 하나 건사하기 쉽지 않은 상황이기 때문이었다. 이 글을 빌어 제안 주셔서 영광이었다는 마음을 전하고 싶다.

스터디가 끝났음에도, 우리 팀은 군대에 가게 된(ㅠㅠ) 디자이너 분을 제외하곤 전원이 팀에 남기로 하였다. 내가 조금 다그치기도 하고, 기획적으로 느슨해서 개발을 어렵게 만들기도 하고 그랬는데도 다들 팀에서 더 하고 싶다고 해주셔서 참 고마웠다. 해서 앞으로도 함께 앱을 발전시키면서 아키텍쳐 공부도 해보려고 한다.

fluttersongdo

@sleepybee
안드로이드 개발 / 약간의 일상