프로젝트 소개

성남시 AI프리인턴십 활동은 지난 8/27 ~ 10/1 까지 약 5주에 걸쳐 진행했던 활동입니다.

저희 팀은 6명에서 구성되었으며 “MTP”라는 이름의 서비스를 기획해 개발 부터 배포까지의 전반적인 작업을 진행하였습니다.

MTP 이하 Meet The Past는 말 그대로 “과거를 만나다” 라는 뜻을 가지고 있는데요

오래된 이미지를 AI를 통해 복원시켜주는 서비스를 제공해줍니다.

github

medium

진행 과정

아무래도 학기와 병행을 하다보니 팀내 이슈나 협업과정은 모두 비대면으로 이루어졌습니다.

Slack과 Notion, Zoom을 통해 진행상황을 파악하고 질문사항과 문제점을 공유할 수 있었습니다.

notion-Image

평일에는 멘토님들께서 분야별 세션을 진행해주셨습니다. 프론트엔드, 백엔드부터 동기부여까지 많은 내용을 말씀해주셨고 잘 이해가 되지 않는 부분은 질문 및 팀 내에서 커뮤니티를 통해 배워갈 수 있었으며

매주 금요일마다 팀별 발표를 통해 멘토님들의 피드백과 방향성에 대한 조언을 듣고 계속해서 개발 방향성을 다듬게 됩니다.

저희 팀에서는 React를 통한 프론트엔드 , Backend는 Django , DB의 경우 PostgreSql 선택하여 아키텍처를 구성하고 프로젝트를 진행하였습니다.

저 같은 경우 리더를 맡아 React , Redux를 사용한 프론트엔드와 AI처리, Celery 및 RabbitMQ, Redis를 활용한 비동기처리 api까지 전반적인 과정을 모두 경험할 수 있었습니다.

좋았던 점 & 아쉬웠던 점

  1. 할 일은 명확하게, 기간을 제대로 계획잡기

    처음 리더를 맡아 진행했던 프로젝트였기 때문에 실수한 부분이 많았는데요 2주차쯤 진행 속도가 많이 느려지고 진전이 잘 진행되지 못했습니다. 각자 역할은 분배했지만, 기간을 명확하게 팀원분들께 전달해 드리지 않아 생긴 문제였는데요

    심지어 1주일 이상 한 가지 작업을 진행하셨던 분도 계셨습니다.

    제한 시간이 없기 때문에 개개인의 입장에서는 조금 여유가 생길 수 있으며 그뿐만 아니라 진행 상황을 파악하고 남은 기간 내에 프로젝트를 완성하기 위해서 명확히 완료 일자를 지정하고, 해당 날짜까지 완성되지 못했다면 어떤 문제가 있었는지 & 해결할 수 없다면 다른 일을 진행하거나 도움을 드려서 빠르게 대처할 필요가 있었습니다.

    무엇보다 개개인의 개발역량이나 숙련도가 다르기 때문에 빠르게 팀원분들의 성향을 파악해서 적합한 일을 드리는 일도 중요했습니다.

    그저 개개인의 역할을 묵묵히 수행하는 것이 아니라, 리더로써 팀 전체의 프로젝트의 현황과 문제점을 계속해서 파악하고 개선해야 할 중요성을 뻐저리게 느끼고 다짐할 수 있었습니다.

  2. 나는 Frontend 개발자니까 이 부분만 공부할래요!

    일단 저는 Django를 사용해본 경험이 없었습니다. 처음 팀이 구성되었을 때도 각각의 팀원분들께서도 지향하시는 분야가 정해져 있었고 해당 지원 분야에 맞춰 일을 분배하고 작업을 진행했는데요

    저 또한 Frontend 부분의 코드를 짜며 다른 분야의 코드에는 관심을 가지지 않으려 했습니다. 처음 프로젝트에 참여했을 때도 “나는 이번에 프론트엔드의 Redux와 이런저런 부분을 배워야지” 하며 다짐했기 때문에 따로 백엔드 부분이나 AI 쪽 코드는 신경쓰지 않았습니다.

    그러나 이후 3~4주 차쯤 백엔드나 AI 쪽 진행속도가 상당히 느려 어쩌다 보니 강제로 해당 부분을 공부하고 코드를 구현하게 되었는데요 처음 동기에 강제성이 있었던 것은 사실이지만 오히려 Frontend코드 부분을 구현하는 데 도움이 되기도 하였습니다.

    특히 저희 프로젝트의 AI의 경우 Celery를 통한 비동기 처리로 코드를 구현해야 했는데 프론트엔드 입장에서 어떻게 Polling방식으로 완료되지 않은 비동기 API를 요청할지, 백엔드에서는 대체 어떤 작업이 이루어지는지 전반적인 과정을 이해하는 데 정말 큰 도움이 되었고

    흐름을 이해하고 이 내용을 바탕으로 직접 코드를 작성하는 과정이 제게 긍정적인 영향이 되었던 것 같습니다.

    앞으로는 고정관념을 버리고 하나의 분야를 파더라도 전체 시스템의 구성도는 이해해야 할 필요가 있다고 다짐하였습니다.

  3. 개발자로그 작성을 습관화 하기

    개발자 로그

    처음 팀을 구성하고 계획을 설계할 때 팀 내에서 정했던 규칙이 있었습니다. 바로 개발자로그를 매일매일 작성하는 것인데요 매시간 모든 팀원이 함께 모여 작업을 진행할 수 없었기 때문에 개발자로그에 각자 공부 및 작업 중에 발생했던 이슈를 매일 적어 서로 어떤 일을 했는지 확인하자는 취지로 진행했던 규칙입니다.

    솔직히 귀찮은 점도 있었던 것은 사실이지만 자연스럽게 습관이 만들어져서 하루에 공부했던 내용을 작성하게 되었습니다.

    처음 의도는 팀원의 공부 내용을 확인하자는 목적이었으나 글을 작성하며 자기가 어떤 공부를 했는지 재확인할 수 있었고 향후 구현했던 코드나 참고했던 레퍼런스를 찾을 때 개발자로그에 작성했던 내용이 큰 도움이 되었던 것 같습니다.

    하루의 작업내용은 글을 통해 재정리하고 자신이 뭘 아는지 명확하게 다시 한번 진단할 수 있다는 점에서 팀 프로젝트가 아니더라도 공부 내용을 기록하는 습관을 만드는 게 큰 도움이 될 것 같다고 생각했습니다.

마치며

9월 1일이 무슨 날이신지 알고계신가요? 네, 대학생이시라면 바로 알 수 있지만 바로 개강일이였습니다…😥

5주간의 단기 프로젝트이지만 이 때문에 오히려 결과물을 산출하기 위해 정말 많은 시간을 쏟아내야 했습니다.

하물며 학기가 시작되고 나니 더더욱 정신이 없어서 수업이 끝나면 집에 오자마자 컴퓨터를 키고

새벽까지 코드를 짜고 반복하며 시간적 이유 때문에 쉽지 않았는데요 무엇보다 팀원분들의 진행 상황을 파악하기 힘들다는 점이 제일 힘들었던 것 같습니다.

처음으로 리더를 맡아 진행했던 프로젝트만큼 심적 부담감도 정말 컸지만 그만큼 얻어가는 부분도 많았다고 생각합니다.

프로젝트 당시에는 다시는 리더를 하고 싶지 않다고 생각했지만 끝난 지금에서 돌아봤을 때는 다시 한번 느꼈던 점을 보완해서 팀을 이끌어가 보자는 욕심도 생기네요.

정말 좋은 프로그램이었기 때문에 혹시 기회가 되신다면 프로그램에 참여해서 많은 것을 배워가셨으면 좋겠습니다.

댓글남기기