1. 개발자의 품격 4기 소개
개발자의 품격 팀 프로젝트는 유튜브 개발자의 품격 채널을 운영 중이신 고승원 님이 진행하시는 프로그램으로,
3개월간 팀을 꾸려서 서비스를 만들어보며 프로젝트 아이템 선정부터 벤치마킹, 설계 및 구현을 경험해볼 수 있다.
이번 4기의 경우 2022년 5월부터 7월까지 진행되었다!
2. 참여 이유
이전에 학교에서 팀 프로젝트를 진행해보았지만, 그때는 대부분 구현해야 하는 결과물이 이미 명확하게 제시됐었다.
따라서 특정 기능을 구현하기 위해 필요한 지식을 습득하는데 초점을 두었기 때문에
서비스 자체에 대한 고민, 사용자에 대한 고려는 거의 해보지 않았던 것에 대한 아쉬움이 있었다.
또한 이전에 회사에서 인턴을 할 때도
이미 운영되고 있는 서비스에 신규 기능을 덧붙이거나, 유저 이슈를 처리하는 업무를 주로 했었기 때문에
서비스를 처음부터 끝까지 개발해보고 싶은 욕심이 항상 있었다.
이 프로젝트가 이러한 내 고민들을 해결해 줄 수 있으면서도 부트캠프 과정에서 배운 기술들(VueJS, Node.js, MySQL)을 실제로 사용해볼 수 있는 좋은 기회라고 생각했기 때문에, 바로 참여하였다!!
3. 진행 과정
팀 빌딩 이후 아이템 선정과 벤치마킹을 진행하고, 서비스를 설계했다.
이후 UI 설계(와이어 프레임 작성), 구현 및 테스트를 마치고 최종 발표를 진행하였다.
진행 기간 중 매주(개발기간엔 2주에 한번) 진행 상황을 공유하는 발표를 했고, 팀마다 고승원 멘토님이 피드백을 주셨다.
벤치마킹이나 서비스 설계 같은 부분은 경험이 부족해서 처음엔 감이 잘 안잡혔었는데, 제공해주신 강의 영상과
이전 기수분들의 발표 영상을 보며 많은 도움을 얻을 수 있었다!
3.1 OT & 팀 빌딩
첫 날엔 오리엔테이션과 함께 자기소개 + 팀 빌딩을 진행했다.
팀은 고승원 멘토님이 개개인의 개발 역량을 고려해 골고루 배정해주셨다고 한다.
우리 팀은 현업에서 일하시는 분과 개발자를 준비하는 분, 나를 포함한 대학생 총 다섯 명으로 꾸려졌다.
3.2 아이템 선정
이후 여러번의 회의를 통해 서비스 아이템을 선정하였다.
한 사람 당 아이템을 1~2개씩 생각해와서 정말 많은 아이템들이 나왔었는데,
그중에서
1. 현실 적용 가능성이 있는 것
2. 개발 과정에서 배울 점이 많은 것(구현할 기능에서 배울 점이 많을지)
3. 유사 서비스가 없거나, 있어도 개선점이 있는 것
위와 같은 조건을 만족하는 아이템들을 팀 내에서 투표를 통해 선정해서 아이템 발표를 진행하였다.
발표한 아이템 중에서는 개발 커뮤니티 플랫폼이 가장 좋을 것 같다는 평가를 받아, 최종적으로 이 아이템을 선정하였다.
서비스 이름은 Project + Mentoring + Us를 합쳐서 프로멘토어스(PROMENTOUS)로 정했다!
3.3 벤치마킹
아이템 선정 이후에는 시장 조사를 진행하였다.
시장 조사는 성공적인 서비스를 위해서는 필수적인 부분인데, 제대로 해본건 처음이었다..!
먼저 우리팀이 만들고자 하는 서비스와 유사한 기능을 제공하는 서비스들을 전부 리스트업 하고,
그 사이트에서 제공하는 기능들을 나열해가며 체크하였다.
이러한 과정에서 우리 서비스에도 반드시 넣어야 할 기능, 불필요하다고 생각하는 기능에 대해 의견을 나누고,
반드시 필요한 기능이 빠져있는 서비스들에 대해서는 이 기능을 왜 제공하지 않는 건지.
기술적인 어려움이 있는건 아닐지? 에 대해서도 검토해보았다.
또한 사용이 편리했던 사이트와 그렇지 않은 사이트를 비교해보며 UI/UX적으로 어떤 차이가 있는지도
분석하고, 우리 팀의 서비스에 적용할 점들에 대해 이야기를 나누었다.
벤치마킹 테이블 작성을 완료한 뒤, 개발 일정과 난이도를 고려하여 서비스에 포함할 기능들을 선정하고, 기능 목록을 작성하였다.
3.4 애플리케이션 기능/서비스 설계
벤치마킹을 통해 나온 기능목록을 토대로, 우리가 만들 서비스를 설계하고, 애플리케이션의 기능을 정의하였다.
이 과정에서 서비스의 타겟층에 대한 분석을 하였다. 주 사용자와 부 사용자에 대해 명확하게 정의하고,
사용자를 고려하여 사이트의 기능별로 제공할 기능들을 구체화하였다.
또한, 기능을 알아보기 쉽도록 서비스의 사이트맵도 작성하였다.
이 단계에서 팀원들과 정말 오랫동안 회의를 했다,,
서비스가 어떤 방향으로 가야 맞을지, 어떤 기능을 넣을지.. 등을 결정하는 것이 쉽지 않았다.
다들 이것 저것 넣고 싶은 욕심은 많았는데, 최대한 서비스의 본래 목적이 흐려지지 않도록 기능을 정리했다.
3.5 UI 설계(Wireframe 작성)
기능 정의, 서비스 설계를 마친 뒤 와이어프레임을 작성했다.
와이어프레임을 작성하기 위한 도구로는 Figma, Adobe XD 등을 고려하였는데,
Figma가 더 쉽다고 느꼈으며 무엇보다 Figma Community에서 제공해주는 것들이 너무 강력하기 때문에 우리 팀은 Figma를 선택하였다.
아래 사진은 와이어프레임 일부이다.
기능 목록을 작성할 때 까지만 해도 몰랐는데, 와이어 프레임을 그리고 나니 우리 팀의 개발 분량이 상당하다는 것을 알게 되었다.
처음에 우리팀이 구현하고자 했던 화면 개수만 20개가 넘어가는데,, 주어진 기간 내에 전부 구현을 못할 것이라 판단하여
기능을 줄이는 작업을 다시 했다..!
아무래도 우리팀 인원 전부 서비스 기획 경험이 없어서, 초반에 핵심 기능을 선별하는데 어려움을 겪었던 것 같다.
3.6 데이터베이스 테이블 설계
이후 와이어프레임 화면을 보면서 기능을 구현하는데 필요한 데이터 목록을 엑셀에 작성하였다.
그리고 그 엑셀에 있는 데이터 목록을 토대로 DB 테이블을 설계하였다.
개발을 하면서 테이블에 일부 컬럼들이 추가/삭제되기도 했지만, 초기 설계는 다음과 같다.
ERD 다이어그램은 MySQL Workbench를 이용해서 작성하였다.
3.7 개발
앞선 작업들을 마치고, 구현 계획을 세운 뒤 개발을 시작하였다.
우리 팀은 역할을 프론트엔드/백엔드로 나누지 않고, 기능별로 나눠서
한 사람이 특정 기능에 대해 프론트엔드/백엔드에 대한 개발을 전부 맡는 식으로 했다.
각자 맡은 기능을 개발하고, 개발 중 생긴 이슈들은 회의 시간에 공유하고, 서로 도움을 주면서 개발했다..!
나는 프로젝트 모집/후기 부분 상세 페이지를 맡아 개발했는데,
그 안에서 캐러셀, 댓글 등 다양한 컴포넌트들을 개발하면서 정말 많이 배울 수 있었다.
가장 기억에 남는 건 댓글 컴포넌트인데, 댓글 기능이 단순해 보이더라도 CRUD를 전부 포함하고 있기도 하고,
대댓글 기능도 포함되어 있어서 재미있었다.ㅎㅎㅎ
조금 아쉬움이 남는 부분은,, 비밀 댓글, 사용자 태그 기능을 넣지 못한 점이다. 이 부분은 추가해봐야겠다..!!
아래 사진은 내가 개발한 프로젝트 인원 모집글 화면이다.
4. 회고
모든 프로젝트가 그렇겠지만, 끝나고 보니 아쉬운 점들이 보인다.ㅠㅠ
개발자는 한정된 자원 내에서 결과물을 만들어내야 하기 때문에 최고가 아닌 최선의 결과물을 내야 한다..라는 얘기를 정말 많이 들었었다.
그런데 개발 기간이 약 2 달이라는 걸 간과하고.. 처음에 너무 기능적으로 욕심을 많이 내서 개발 후반부에 테스트를 제대로 진행하지 못한 것에 대해 큰 아쉬움이 남는다..
또한 프로젝트 관리 부분에 있어서는 스크럼 방식, 관리 툴로는 JIRA를 도입했는데도 이를 제대로 활용하지 못한 것 같다.
비슷한 맥락으로 branch 관리 전략에 대해서도 정하지 않고 무조건 main에 합쳤었는데..
최근 git에 대해 공부하고 나니 이런 부분을 더 신경 썼다면 좋았을 거란 생각이 든다.
특히 우리 팀 같은 경우엔 개발 전 단계(기능 정의, 와이어 프레임 설계)에서 팀원들 간의 의견이 굉장히 다양했어서
의견 차이를 조율하고 결정을 내리는데 시간이 굉장히 오래 걸렸었다.
3달 내내 거의 주 2~3회 회의를 진행했는데, 하루는 점심쯤 회의를 시작해 밤 12시가 넘어서 끝난 적도 있었다.
당시에는 그저 여러 명이 의견을 맞추고, 결정을 내린다는 게 쉽지 않구나..라는 생각을 했었는데
돌이켜보니 조금 더 생산적인 회의를 하기 위한 노력을 했으면 어땠을까? 싶은 생각이 든다.
그날그날 회의 진행자를 정한다든가, 안건을 정해놓고 안건에 대해서는 2시간 안에 얘기를 마친다든가.. 했다면
조금 더 회의에 쏟는 시간을 줄일 수 있었을 것 같다.
또한 기능별로 분담해서 개발하다 보니 다른 팀원이 짠 코드에 대해서는 왜 이렇게 구현한 건지? 에 대해 제대로 이해하지 못하고 넘어갔었는데 이러한 부분에서도 아쉬움이 남는다. 정기적으로 자신이 짠 코드를 공유하는 시간을 갖거나, PR마다 코드 리뷰를 진행했으면 좋았을 것 같다.
마지막으로 가장 아쉬운 부분은 문서화이다..!!
우리 팀은 여러 컨벤션들은 github에 문서로 남겨놓았으나,,
API 명세, 기능 명세를 꼼꼼하게 문서화하지 않아서 중간중간 팀원 간의 소통이 어려웠던 적이 있었다.
다음에 프로젝트를 진행할 땐 이런 부분을 더 신경 쓸 것이다.
회고에 너무 아쉬운 부분들만 작성해놓았는데,, 느낀 점들을 기억하고 다음엔 더 나아지자!! 하는 것이지 배운 점들도 정말 많다!
서비스 기획부터 디자인, 개발까지의 단계를 전부 경험한 건 나에게 큰 자산이 될 것 같다.
이 경험을 통해 1학기에 학교에서 배웠던 소프트웨어공학 과목의 중요성을 다시 한번 느낄 수 있었다.ㅎㅎ
기술적으로도 VueJS, Node.JS, MySQL의 사용에 더 능숙해졌을 뿐만 아니라 원하는 기능을 만들어낼 수 있다는 자신감이 생겼다.
또한 만들다 보니 부족한 부분, 더 공부할 지식들이 보였는데,, 특히 AWS에 대해서는 더 공부해야겠다.
아래는 개발자의 품격 4기 발표 영상으로, 우리 팀(4팀)의 결과물을 볼 수 있다.
세 달 동안 정말 많은 걸 배울 수 있었던,, 뜻깊은 시간이었다!!
'experience' 카테고리의 다른 글
[네이버 부스트캠프 웹﹒모바일 7기 - 웹 풀스택] 2. 멤버십 수료 후기 (1) | 2023.03.26 |
---|---|
[서평] Do it! 리액트 모던 웹 개발 with 타입스크립트 (0) | 2023.01.25 |
[네이버 부스트캠프 웹﹒모바일 7기 - 웹 풀스택] 1. 챌린지 수료 후기 (0) | 2022.12.27 |
네이버 부스트캠프 웹모바일 7기 챌린지 합격+ 1/2차 코딩 테스트 후기 (0) | 2022.07.13 |
[회고] 도서 집필 후기 <개발자가 되기 위해 꼭 알아야 하는 IT 용어> (0) | 2022.06.12 |