[algo-with-me] 본격적인 개발에 앞선 준비사항들 (2)

6주간의 그룹 프로젝트중 그 첫주는 개발에 필요한 모든 준비 사항들을 결정했습니다. 프로젝트 시작전에도 회의를 종종 했기 때문에 한 2~3일이면 다 정리되고 바로 개발을 시작할 수 있을줄 알았는데 정해야 할 내용들이 정말 많았습니다. 하나하나 하다보니 벌써 첫주가 지나버렸습니다. 그래도 거의 모든 준비가 끝나서 2주차부터는 본격적으로 개발을 시작할 수 있을것 같아 매우 기대가 됩니다.

 

이번 포스트에서는 개발에 들어가기 앞서 팀원들과 결정한 선택들에 대한 내용들을 주로 담았습니다.

 

프론트 - 무지, 콘, 네오

백 - 저(제이지), 프로도

 

정한 내용들을 하나하나 싹 ~ 되짚으면서 적어볼게요.

 

그라운드 룰

정말 기본적으로 프로젝트를 진행하면서 서로 지키기로 약속한 규칙입니다.

사실 두 개밖에 없습니다.

 

첫 번째로 반드시 연락이 잘 되어야 하고, 필요하다면 의논하고 회의할 수 있는 시간을 정했습니다.(코어타임?) 네이버 부스트캠프 진행시간을 그대로 사용하기로 했습니다.

월 ~ 금, 10:00 ~ 19:00

점심시간 12:00 ~ 13:00

해당 시간에 개인적으로 무슨일이 있을 경우 알린 뒤 가기로 했습니다. 워라벨을 최대한 지켜보기 위해서.. 공식적으론 이렇게 정하게 되었습니다. (나중에 멘토링 때 멘토님이 취준생은 그런거 없긴 하다고 뼈를 때려주시긴 했습니다. 흑흑.)

핵심은 팀 내에서 강조하지 않는 문화를 만드는 것 정도라고 생각하면 될것같아요.

 

두 번째로 업무 이야기는 반드시 오픈된 슬랙 채널만을 이용한다 입니다. 개발 문화에서 가장 중요하게 여기는게 공유죠, 같이 하는 프로젝트인 만큼 업무와 관련된 내용들을 모두 공유되어야 오해가 안생기고 관련 지식이 싱크가 됩니다.

 

 

미니 개발 세미나

콘님이 미니 개발 세미나를 하는게 어떻냐고 제안 주셨습니다. 또 한번 말하지만, 개발에서 공유하는 문화는 정말 중요하죠.  그와 더불어 관점 넓히기, 발표 연습, 새로운 지식 습득등 좋은점이 많다고 생각해서 모든 팀원들이 동의하여 미니 개발 세미나를 개최하기로 했습니다! 🎉

대신 개발에 지장을 줄 수 있기 때문에 퀄리티는 신경쓰지 않고(발표 자료 제작에 1시간을 넘기지 않게..) 5분~길어야 10분 정도의 발표시간을 갖기로 했습니다. 발표자는 팀원중 하고싶은 사람 누구나로 정했습니다. 매주 수요일마다 하기로 했고, 첫 주 수요일에 5명중 3명이 발표를 했고 다들 재미있는 주제를 들고와 성공리에 마쳤습니다. 저는 DIP를 주제로 가져와 발표했는데, 발표가 익숙치 않아 많이 절기도 했습니다. 6주뒤에는 실력이 좀 늘어있겠죠?

해보고 좋아서, 부스트캠프 커뮤니티에 공유해서 누구나 보러올수 있게 했습니다.

 

문서화

모든 문서는 노션에 기록하기로 정했습니다. 모두 노션에 가장 익숙하기 때문에 빠르게 결정할 수 있었습니다.

 

작업 관리(백로그 관리)

백로그가 무슨 뜻인가, 처음에는 뭐 했던거 기록하는건가? 라고 알고 있었는데 정확히 다음과 같은 뜻이란걸 이번에 처음 알게 되었습니다.

백로그(Backlog)는 프로젝트 관리, 소프트웨어 개발, 업무 관리 등 다양한 분야에서 사용되는 용어로, 완료되지 않은 작업 항목들의 리스트나 목록을 가리킵니다. 이 목록에는 아직 처리되지 않은 업무, 작업, 요구사항 등이 포함됩니다. 백로그는 작업의 우선순위, 상태, 예상 소요 시간 등과 함께 관리되며, 프로젝트를 효율적으로 추적하고 계획하는 데 도움을 줍니다.

외부 공개가 편하고, github projects를 사용해본 경험이 있으신 분이 있어 github projects를 사용하기로 결정하게 되었습니다. 더 자세한 설명은 아래 참고에 링크 확인해주세요.

github projects를 들어가 살펴보면 이렇게 보입니다.

이걸 "칸반보드" 라고 부른다고 하네요. 또 모르는 용어 등장에 혼란스럽습니다. 그래도 알고보면 간단한 의미에요.

칸반보드는 팀의 업무를 시각화한 프로젝트 관리의 한 형태입니다. 팀이 프로젝트를 시작할 때, 누가 어떤 업무를 담당하는지, 업무가 어떤 단계인지, 업무의 마감이 잘 되는지 파악할 수 있도록 업무를 간단하게 시각화하는 방법이 필요하기 때문에 칸반보드를 활용하면 효율적인 프로젝트 관리가 가능합니다. 라고 하네요. 네 그냥 작업 현황 볼수 있는 보드를 칸반보드라고 합니다. 더 궁금한점은 아래 참고에서 링크 참조부탁드려요!

이렇게 백로그 관리도 결정이 되었습니다~

 

코드 컨벤션

이리저리 찾아보고 백엔드, 프론트엔드 모두 airbnb style guide에 비해 상대적으로 유연한 google style guide를 사용해보기로 했습니다. 하지만 백엔드의 경우, nestjs를 사용하게 되는데 이때 google style guide를 사용하니 데코레이터 등에서 부터 eslint 오류가 발생하여 nestjs 전용 eslint plugin이 존재하길래 그것을 사용하기로 결정하였습니다. (https://www.npmjs.com/package/eslint-plugin-nestjs)

백엔드 코드 컨벤션에 대해서는 추후 더 자세하게 설명할 예정입니다. 조금만 기다려주세요!

 

브랜치 전략(브랜치 네이밍 컨벤션)

하나의 레포지토리에서 fe, be 모두 작업하는 것이 정해진 규칙이라 브랜치는 github flow에서 fe, be 분리를 위해 한 단계만 더 추가해서 사용하기로 결정했습니다. 여기에 각각 fe, be가 개발 브랜치에서 브랜치를 따와 작업하기로 결정했습니다. 6주만에 완성하는 것이 목표이다보니 굳이 git flow 같은 복잡한 브랜치전략을 사용할 이유가 없다고 판단했습니다.

따오는 브랜치의 이름은 github projects를 통해 생성한 issue의 이름을 그대로 사용하기로 정했습니다.

main: 배포 브랜치
fe-dev: FE 개발 브랜치
be-dev: BE 개발 브랜치

 

 

PR 컨벤션

backend, frontend 라벨을 각각 만들어 반드시 분야에 따라 붙이도록 했습니다. PR 제목은 다음과 같이 하기로 결정했습니다.

[#이슈번호] 이슈 한줄 요약

 

코드리뷰

백엔드는 2명이므로, PR을 올리고 반드시 다른 한명이 approve 해야 merge가 가능하도록 했습니다.

프론트엔드는 3명이어서, 나머지 두명 모두 approve 해야 merge가 가능하도록 했습니다.

 

커밋 컨벤션

깃허브 커밋할 때 작성할 제목의 컨벤션을 정했습니다. 아래와 같이 5개의 커밋 타입에 구분자는 : 를 사용하기로 정했습니다. 6주간의 프로젝트이니 그렇게 많이 나누지 않아도 된다고 생각했습니다. 구분자는 :와 / 중 투표를 했는데 가독성이 : 가 더 좋다는 의견이 많아 선택하게 되었습니다.

feat: 기능 추가
refactor: 기능 변경 없이 코드만 수정됨
update: 기존의 기능이 변경됨
fix: 버그 수정
chore: 기타 등등

 

 

커밋 메시지 가이드도 만들었습니다 ㅋㅋ.

### 제목
# 커밋 타입: 작업내용 (제목과 본문은 한 줄 띄워주세요)

### 본문 - 한 줄에 최대 72 글자까지만 입력하기
# 무엇을, 왜, 어떻게 했는지

# 꼬리말
# (선택) 이슈번호 작성

#   [커밋 타입]  리스트
#   feat      : 기능 (새로운 기능)
#   fix       : 버그 (버그 수정)
#   update    : 기존의 기능이 변경됨
#   refactor  : 기능 변경 없이 코드만 수정 (리팩토링)
#   chore     : 기타 변경사항 (빌드 스크립트 수정 등)
# ------------------
#   [체크리스트]
#     제목 첫 글자는 소문자로 작성했나요?
#     제목은 명령문으로 작성했나요?
#     제목과 본문을 한 줄 띄워 분리했나요?
# ------------------

 

 

 

후... 정말 많네요.. 죄다 결정한 것들을 기술해놓은 것 뿐이니 글도 조금 지루하네요.

자! 어쨋든 공통적으로 결정해야 하는 사안들은 어느정도 정리가 된것같아요. 다음 포스트에서는 백엔드 아키텍처, 디자인과 스토리보드에 대해 이야기해보려고 합니다.


참고

백로그

https://boardmix.com/kr/skills/backlog-management/

칸반보드

https://boardmix.com/kr/skills/learn-about-kanban/