001_Flutter Songdo 스터디 회고
기간
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명이나 있다니 금방 해낼 줄 알았다.
나의 원대한 계획은 이랬다.
7주 안에 크리스마스, 연말, 신정, 구정이 다 들어있으니
실개발기간은 4주로 생각하고,
2주는 가라를 만들고
2주는 디자인 붙이면서 아키텍쳐를 적용하며 아키텍쳐 공부를 하자!
하지만 뜻대로 되지 않았다.
우리 팀원들은 내가 생각한 이상으로 찐병아리였다.
어느 정도였냐면,
한 분은 타입과 변수명의 구분을 못했다.
다른 한 분은 메소드와 변수를 구분하지 못했다.
또다른 한 분은 Git에 자신의 로컬의 모든 파일을 올렸다.
아니.. 플러터 이전의 문제가 너무 많잖아....
다들 Git도 처음이고 디버깅도 할 줄 몰라서 오류와 충돌의 연속이고 진도는 개미눈꼽만큼씩 진행됐다.
나는 그 오류와 충돌을 바로잡는 것까지 하면서 혼자 개발할 때보다 3배는 힘들었다.
힘든 것도 힘든 거지만 결정적으로...
패턴을 적용하면 우리 팀원들이 내 코드를 읽지 못했다.
Bloc패턴이나 Provider를 조금씩 알려주면서 할까 하다가 주어진 기간 내에 끝낼 수 없고 팀원들이 그럴 수 있는 단계가 아니라고 판단하여 관뒀다.
그래서 난 원래 쓰던 패턴도 못쓰고 아아주 일차원적인 코드를 써야했다.
퇴화된 내 코드를 보면서, 스터디하는 의미가 있나?하는 회의감에 휩싸였다.
라떼는...
사실 나는 첫 팀빌딩 때 20살의 무경력 아가 분들이랑 팀이 됐길래 최소한의 개발 경험만 주고 나머지는 내가 해야겠다고 다짐했었다. 그래서 모든 주요 기능은 내가 개발하고 UI 구현만 분배해서 나누어 주었다.
하지만 3주가 지나도 그만큼도 해내지 못했다. 자연스럽게 팀원을 원망했다. 꼰대같은 마음이 튀어나왔다.
'내가 이렇게 배려해서 역할을 조금만 주는데도 왜 못 해내지? 나 때는 말이야..'
나 때?
난 스물다섯에 처음 앱 개발을 배웠고 당시 내 코드는 진짜 한심한 수준이었다.(지금도 그렇지만)
그때 강사나 주변에 도움을 청할 수도 있었겠지만 난 그러지 않았다.
왜냐면 창피하니까.
난 코드 뿐만 아니라 마인드도 한심했다.
그에 비해 우리 팀원들은 정말 멋진 사람들이었다. 처음이라 배워야 하는게 너무 많았는데 그걸 한번에 소화하려고 했고 멘토님이나 나한테 끊임없이 질문했다. 진도가 느린 건 안해서가 아니라 모든 게 처음이라 아둥바둥하고 있었기 때문이었다. 라떼는 그러지 못했다.
완성까지
어린 팀원들을 응원하는 마음으로 스터디를 끝까지 하자고 마음을 굳혔다.
사실 많은 부분들을 도맡아서 생각하고 구현해야 했어서 힘들었다.
스터디 기간에 연휴가 많아서 기간이 모자라 스토어 배포 전날은 밤새 개발했다.
목표 달성?
기간 내에 플레이스토어에 안드로이드 배포 완료하였다.
앱스토어에도 올리는 게 목표였으나 그건 달성하지 못했다.
팀의 목표는 90프로 정도 달성한 셈이다.
나 개인 목표(아키텍쳐 공부)는 전혀 달성하지 못했다.
팀원들이 기특한 건 기특한 거고 그와 별개로,
나도 지금 공부만 해도 한시가 바쁜 허접떼기인데 이렇게 시간을 써도 되나 하는 의구심이 들었다.
결과물
잘한 점, 아쉬운 점, 배운 점
사실 첫 미팅 때 멘토님이 개발 단위를 늘리자고 하셨다. 아이디어가 괜찮다고 생각하셔서 욕심이 나셨던 것 같다. 난 극구 반대했다. 더 줄여야 맞다고 생각했다. 약간의 갈등이 있었지만 팀장은 나라서 개발 단위는 줄였다. 서비스에 욕심이 나더라도... 기간/역량을 보고 개발 단위를 잡은 것은 내 생각이 맞았다. 내가 틀렸던 것은 그보다 더더더 줄였어야 한다는 거였다..
난 이 스터디로 무엇을 배웠을까?
맨먼스라는 개념이 있다. 한달에 투입되는 사람 수로 작업량을 표시하는 것이다. 나도 멘토님도 처음엔 가능한 작업량을 4MM로 생각했을 거다. 원래 같으면 내 아이디어에 4MM은 차고 넘친다. 그래서 멘토님도 개발단위를 늘리길 원하셨을텐데 4명은 모두가 1인분을 할 때 4명이다. 난 이 당연한 사실을 새삼 배웠다. 실은 개발자는 나 하나였고, 3명의 학생이 있었고, 나 혼자할 때는 만들지 않았을 많은 기초적인 오류들을 수정하면서 했으니 1MM도 아니고 0.7MM로 잡았어야 맞다. 개발단위를 더 줄였어야 했던 것이다.
이렇게 원치 않았던 배움을 얻고 회의감에 빠졌을 무렵, 오거나이저 중 한 분이 Flutter 아키텍쳐 세션을 열어주셨다. 당신은 어떻게 Flutter로 클린아키텍쳐를 구현했는지를 한 시간 가량 보여주시면서 설명해 줬는데 이게 정말 도움이 됐다. 그 세션을 듣고 난 후에는 한결 기분이 좋아졌다. 덕분에 스터디하길 잘했다고 생각했다. 조만간 알려주신 구조를 시도해 볼 생각이다.
후일담
우리 팀은 단톡을 파지 않고 디스코드에 채널을 만들어 협업을 했는데 이 채널에 오거나이저 분들도 접속이 가능했다. 그러다보니 내가 어찌저찌 팀을 이끄는 모습을 보시고 여러 오거나이저 분들이 돌아가면서 "열정적이시다", "팀장다운 팀장이다" 등 한 마디 씩 격려의 말을 해주셨다. 칭찬이라기 보단 안쓰러워 보였던 것이리라.
최종 발표를 마치고 자리로 갈 때 GDG 오거나이저에 관심없냐는 제안을 받았다. 나의 가엾은 팀 리딩이 인상 깊으셨던 것 같다. 좋게 봐주신 것 같아 정말 감사했는데 조금 당황해서 질색팔색하는 제스쳐를 해버렸다. 내가 거절한 건 제안이 싫어서라기보다 나 하나 건사하기 쉽지 않은 상황이기 때문이었다. 이 글을 빌어 제안 주셔서 영광이었다는 마음을 전하고 싶다.
스터디가 끝났음에도, 우리 팀은 군대에 가게 된(ㅠㅠ) 디자이너 분을 제외하곤 전원이 팀에 남기로 하였다. 내가 조금 다그치기도 하고, 기획적으로 느슨해서 개발을 어렵게 만들기도 하고 그랬는데도 다들 팀에서 더 하고 싶다고 해주셔서 참 고마웠다. 해서 앞으로도 함께 앱을 발전시키면서 아키텍쳐 공부도 해보려고 한다.