오늘학교에 입학한 Flutter 주니어 개발자의 6개월

아테나스랩
아테나스랩 팀블로그
9 min readJul 18, 2022

안녕하세요 아테나스랩 클라이언트 챕터 Lego👾입니다.

저는 ‘소규모 스타트업에서 대규모 채용 진행하기’에 등장하는 5명의 신규팀원 중 1명입니다. 이 글에선 1월에 입사하여 어느덧 6개월차 개발자로서 아테나스랩에 적응한,, 아니 지금도 적응하고 있는 이야기를 해드리려 합니다.

파일럿 프로젝트로 소프트 랜딩을 해보자

클라이언트 챕터로 합류하면, 채용 과정 시 기술 과제로 진행했던 영화 추천 앱 작성 작업을 파일럿 프로젝트로서 이어서 진행합니다. 오늘학교 앱 개발에 사용되는 설계 패턴, 라이브러리 등을 오늘학교 보다 기능이 적고 간단한 앱에 적용해봄으로써 기술에 익숙해지기 위함입니다.

프레임워크는 Flutter를 사용하고, 설계는 DDD(Domain-Driven Design), 상태 관리는 Bloc, 서버와의 통신은 http, 함수형 프로그래밍을 위해 dartz, injectable, freezed, build_runner 등의 기술 스펙을 사용했습니다. 그 외에 다양한 기술 스펙을 가지고 본격적인 기능 개발에 앞서 API를 연동하고 데이터를 가공하고 UI로 퍼블리싱하는 과정까지를 연습해볼 수 있었습니다. 버전 관리 도구인 깃허브에 commit, push부터 시작해서 PR(Pull Request) 보낸 후 리뷰 받고 merge하는 것까지의 개발 사이클도 경험해볼 수 있었습니다.

클라이언트 챕터에는 신규 입사자가 아테나스랩의 전체적인 근무 방식을 이해하고, 개발 문화에도 잘 적응할 수 있도록 버디 제도가 있습니다. 제 버디인 💫매튜💫가 코드 리뷰를 해주시면서 코드가 개선될 뿐만 아니라 챕터의 코드 컨벤션을 익힐 수 있었습니다. 기술 과제로 만들 때는 기본적인 요구사항만 지키고 제 마음대로 개발했었는데 팀 온보딩 과정을 거치면서 개발 코드가 아테나스랩화 되는 것이 재미있었습니다.

<PR을 통한 코드 리뷰>

온보딩 과정을 거치면서 가장 어려웠던 점은 팀원분들께 질문하는 것이었습니다. 합류한지 얼마 안 됐으니 모르는 것이 많은 것이 당연하지만 다들 바빠 보이셨고, 집중을 하고 있는데 방해하는 것은 아닐까 걱정되어서 질문을 드리기가 어려웠습니다. 하지만 많은 분들이 혼자서 해결하려고 고군분투하는 것보다 충분히 고민해보고 잠깐 다른분께 질문해서 해결하는 것이 저에게 뿐만 아니라 팀 전체적으로도 효율적일 거라고 하셨습니다. 앞선 걱정은 저 혼자만의 기우였던 것입니다. 팀원분들은 질문에 언제든 열려있고 팀 안에서 자유롭게 질문을 주고받는 분위기였습니다.

더욱이 버디에게 도움을 요청하라는 것이 온보딩 문서에 권장 행동 양식의 첫 번째로 기재되어있어서 자신 있게 질문을 마음껏 했습니다. 모르는 게 많은 저의 질문에 정성껏 대답해주시고 적극적으로 더 질문하라고 해주신 🧑🏻‍💻에드, 메이슨과 매튜🧑🏻‍💻께 감사드립니다😀

<온보딩 문서 속 권장 행동 양식 첫 번째>

(이제는 언제 질문하는 것이 어려웠나 싶을 정도로 나름의 질문 끼어들기 스킬을 터득해가고 있습니다.)

파일럿 프로젝트를 진행하면서 한 가지 흥미로웠던 점은 프로젝트를 하면서 신규 팀원의 팀 온보딩 프로젝트에 대한 피드백이 애자일적으로, 즉 빠른 주기로 반영이 된다는 점이었습니다. 팀 온보딩을 진행하면서 보완되었으면 좋겠다고 생각하는 점들이나 어려웠던 부분을 물어봐 주셨고, 온보딩을 마쳤을 때는 저의 피드백을 직접 온보딩 문서에 반영할 수 있었습니다. 개발 챕터의 유연하고 지속적인 확장을 위해 다음 팀 온보딩에 활용할 수 있기 때문입니다.

<영화추천앱 대체 이미지(왓챠피디아)>

오늘학교에 기여해보기

약 3주간의 파일럿 프로젝트를 마치고 소프트 랜딩을 하였으니 오늘학교에서의 작은 기능을 구현할 차례입니다! 기획과 디자인, 서버 작업은 완료되었지만 클라이언트 챕터의 리소스가 부족하여 잠시 홀드되었던 배지 시스템 개선 작업을 진행하기로 했습니다. 배지 시스템은 오늘학교 기능 중 다양한 활동을 통해서 모은 포인트와 몇가지 조건을 충족해서 배지를 획득하는 기능입니다. 이 배지 기능의 개선된 기획에 따라 개선된 배지 API를 연동하고, 개선된 UI를 적용하는 작업이었습니다.

회사에 새로 합류한 개발자가 모두 그렇듯 서비스의 코드 베이스를 한 번에 보기란 불가능합니다. 코드 베이스를 보는 시간을 따로 가지는 것이 아니라 새로운 기능을 개발하면서 필요한 부분을 찾아보는 것이 더 효율적일 것입니다. 파일럿 프로젝트에서 사용한 스펙을 토대로 오늘학교의 다른 기능에선 어떻게 쓰였는지 살펴보고, 클래스화 되어있는 코드를 인스턴스만 생성하여 써서 코드를 줄일 수 있을지 살펴보았습니다.

또 다른 흥미로웠던 점은 앱 내에서 사용된 적이 없는 기능이지만 앞으로 사용될 일이 있을 경우, 챕터 내에서 논의를 거쳐 객체로 만들어서 구현할 수 있다는 점입니다. 새로운 기능을 개발할 때 단순히 그 기능에만 사용할 수 있게 구현하기보다 주도적으로 객체를 제안하고 설계해서 재사용성을 높일 수 있는 것입니다.

예를 들어 이전까지는 서버로부터 받은 데이터를 기반으로 앱 내에서 페이지를 네비게이팅하는 기능이 없었습니다. 하지만 배지 개선 기획 중에 배지 획득 조건 충족을 유도하기 위해 배지 설명 페이지에서 조건을 수행할 수 있는 페이지로 이동하는 기능이 있었습니다. 조건을 충족할 수 있는 페이지에 대한 정보는 서버로부터 받고, 그 정보에 따라 페이지로 네비게이팅하는 클래스를 만들어서 구현하였습니다. 제가 만든 클래스로 다음에 같은 기능이 필요할 때 인스턴스만 생성하여 사용할 수 있게 된 것입니다.

현 시점에선 서버 푸쉬 메세지 정보에 따라 커뮤니티 게시글로 네비게이팅할 때도 사용되고 있습니다. 필요가 생기면 앱에 기여할 수 있게 팀원을 신뢰하는 환경과 분위기 덕분에 주저없이 설계와 개발을 하고 적극적인 코드 리뷰를 받을 수 있었습니다. 앱에 내가 구현한 기능이 반영이 되고 개발 측면에서도 임팩트를 냈다는 것이 온보딩에 좋은 영향을 끼치고 서비스의 오너십을 갖는데 도움이 되었던 것 같습니다.

<코드 리뷰 받기 전 내 코드>

배지 작업을 통해서 파일럿 프로젝트에서는 하지 못했던 타챕터와의 협업도 할 수 있었습니다. 배지 시스템 개선을 기획하신 오티스🧑🏻‍🏫, 디자인을 하신 앤👩🏻‍🎨, API 작업을 하신 제이크🧑🏻‍💻와 Swagger, Figma, Slack 등의 협업도구를 사용하여 커뮤니케이션을 하면서 개발하였습니다. 다른 직군의 분들과 협업하는 방법을 알아갈 수 있는 좋은 기회였다고 생각합니다. 배지 개선 작업을 통해서 앱에 생긴 큰 변화는, 클라이언트 코드의 수정 없이 배지 정보를 수정할 수 있게 되었고 배지를 획득한 사용자의 비율을 보여줄 수 있게 되었다는 것입니다.

<개선된 배지 모달>

아테나스랩 온보딩은 내가 했어 오늘학교 온보딩은 누가 할래?

새로운 OKR이 시작되면서 서비스 온보딩 스쿼드에 속하게 되었습니다. 서비스 온보딩 스쿼드는 사용자가 오늘학교 앱 설치 후에 회원가입을 하고 홈 탭에 들어오기까지의 온보딩 과정을 돕는다는 목적을 가지고 있습니다. 오늘학교 앱의 첫인상을 담당했다고 생각하니 설레고 잘해야겠다는 책임감이 생겼습니다.

회원가입 페이지 UI를 수정하거나 서비스 온보딩 화면 가이드를 수정하는 등의 작업을 하였지만 가장 시간과 노력이 많이 들어간 작업은 아이디, 비밀번호 찾기 기능이었습니다. 규모가 꽤 큰 기능을 개발하면서, Bloc에 대해 더 이해하고 상태 관리도 더 효율적으로 구현하게 되었습니다.

확실히 배지 작업할 때보다 성장한 느낌이었습니다. 타챕터분들과 커뮤니케이션도 활발하게 하고, 클라이언트 챕터 내에서도 개발에 관한 고민을 같이하면서 효율적인 개발을 할 수 있게 되었습니다. 하지만 개발하면서 겪은 가장 큰 문제는 예상 리소스 추정이었습니다.

아테나스랩에서는 2주 단위로 한 스프린트가 진행되는데 스프린트 첫 날에 한 스프린트 동안 진행할 작업을 계획해서 다른 챕터의 협조가 필요하면 요청하고 소요 시간을 추정합니다. 개발을 하다보니 레거시 파악 및 처리, 또는 예상하지 못한 에러 등의 문제로 추정한 시간을 초과한 적이 있었습니다. 일정 공유가 잘 되어서 스쿼드원분들이 늦어지는 것에 이해를 해주셨지만 가장 마지막 단계인 클라이언트 개발과 배포가 늦어짐에 따라 부담감도 커졌습니다. 처음으로 기획부터 배포까지 과정을 같이 해본 것이었기 때문에 일정 추정에 서툴렀지만 앞으로 추정할 때 고려할 수 있는 경험이 생겼다고 생각하게 되었습니다. 무사히 기능 개발과 QA를 마치고 사용자가 계정 찾기에 성공했다는 데이터를 보니 뿌듯했습니다.

지금까지 하루에 이메일 찾기에 성공한 사용자는 평균 27명이고 비밀번호를 재설정한 사용자는 평균 44명으로 측정됩니다. 이는 1년이면 25,000이상의 사용자가 계정 문제로 인해 이탈하는 것을 막을 수 있을 것으로 예상되는 수치입니다.😎

마치며

전공 수업으로 소프트웨어 공학이나 OODP 등에서 배운 이론이나 용어들을 아테나스랩에서 직접 사용할 수 있어서 신기하고 재미있었습니다. 전공에서 배운건 정말 새발의 피라는 것을 느끼며 졸업함으로써 공부가 끝이 아니라 평생 해야한다는 것을 몸소 깨달았습니다. 또한 혼자서는 할 수 없었던 것들을 팀원들의 도움으로 해결할 수 있었습니다. 저의 팀 온보딩 과정에서 정성껏 도와주신 아테나스랩 모든 분들께 감사드립니다.

정해진 시스템 안에서 안정적으로 일 하는 것보다 이것저것 실험해보고 작은 아이디어에도 귀 기울어주는 분들과 일하고 싶은 저에게 아테나스랩은 딱입니다. 졸업하고 첫 회사가 아테나스랩이라서 행복하고 1년, 2년 뒤에 제가 어떻게 성장해있을지 기대가 됩니다.🌳 긴 글 읽어주셔서 감사합니다!

--

--