0. 팀 프로젝트 진행 이유
개발자에게 가장 중요한 소양 중 하나가 커뮤니케이션 능력이라는 것은 다들 잘 안다.
개발자가 아니더라도 아주 중요하다!
싸피 사람들과 일상적인 이야기를 나누고, 알고리즘이나 수업에 대한 이야기를 나누는 것도 커뮤니케이션이지만,
'개발자에게 필요한 커뮤니케이션 능력'은 조금 더 개발과 협업에 맞닿아있는 부분이라는 것을 알게 되고 팀 프로젝트 경험과 협업, 커뮤니케이션 능력을 기르기 위해 팀 프로젝트를 모집하게 되었다.
또한 원티드 프리온보딩 챌린지에 깔짝깔짝 참여하면서 다른 사람의 코드를 읽는 능력, 내 코드를 읽기 쉽게 쓰는 능력이 얼마나 중요한지 깨닫게 되었다.
프론트엔드를 꿈꾸는 멋찐 개발자님의 코드를 참고하며 함께 쑥쑥 성장하고 싶은 마음도 컸다
마지막으로, 어차피 현업에서는 내가 firebase를 써서 데이터를 관리할 필요 없이, 백엔드 개발자가 있을 것.
백엔드 개발자분들과 협업하는 경험 또한 쌓고 싶었다.
따라서 프로젝트 멤버를 모집하게 되었고, 트위터에서 백엔드 두 분
프리온보딩 챌린지에서 프론트 한 분을 모시게 되었다😖
사실 이 전에도 프로젝트 멤버로, 혹은 주최자로 참여하기도 했지만..
프로젝트장의 사적인 문제나 서류 탈락으로 인해 제대로 이뤄지지는 않았다😥
현재 현업에 종사하시는 분, 종사하셨던 분, 싸피 수료생!(아주아주 반가웠다!!) 취준을 꿈꾸는자.. 이직을 꿈꾸는 자.. 어마어마하게 다양한 경험을 해보신 분..
나이도 성별도 다양한 4명이 모여서 아픈 과거를 되풀이하지 않기 위해 가장 중요한 원칙을 끝까지 완성하기로 정했다.
아무튼.. 끝까지간다..!
✍ 프로젝트를 통해 경험하고 싶은 것
1. 와이어프레임 설계, 데이터 모델링 & API 명세서부터 철저히 기획하기
내 프로젝트 AGENDA를 통해 많이 배웠다..
설계 없는 '헤헤코딩해야지~'가 불러올 수 있는 끔찍한 결과를..
컴포넌트를 어떻게 분리할 것인지, 데이터를 어떻게 사용할 것인지를 생각하지 않고 만든 결과는 끔찍했고...
지금은 내 레파지토리 어딘가에 잠들어있다.
깨워서 좀 고쳐보고는 싶은데 이렇게 설계부터 잘못된 것을 끙끙거리면서 부여잡기보다 철저하게 설계해서 다시 만들어보는게 더 나을거라는 조언을 받아들여... 이번 팀 프로젝트는 정말 체계적으로 설계하고 구축해나갈것이다.
현재 와이어프레임 설계와 데이터 모델링 & API 명세서는 거의 끝났다
다음주면 본 개발에 착수할 것 같다 🔥
2. 팀 목표와 팀 문화 만들기
팀 규칙, 커밋 규칙들을 체계적으로 정해두고 작업을 시작해 '암묵적이고 모호한 규칙'을 사전에 예방하고 싶다.
3. 프론트엔드 팀원과 소통하기
자연어로 소통하기, 코드로 소통하기 둘 다.
와이어프레임과 데이터모델링 단계에서도 마찬가지지만, 실제 개발에 착수하게 되면 좀 더 다양한 자연어 소통과 코드 소통이 필요할 것이다.
개인 프로젝트들과 프리온보딩 챌린지를 통해 내 코드의 문제를 깨달았으니 더 좋은 코드를 쓰기 위해 실천하면서 소통해야겠다.
읽기 좋은 코드를 짜보자구 와좌좟
4. 문서화
현재 Notion을 이용해
- 회의록
- 요구사항 정의서
- 와이어프레임
- 데이터모델링
- 기술 스택
- 협업툴
- 코드 컨벤션
- 팀원들 일정 / 회의 일정 / 프로젝트 일정
등을 문서화해놓고 있다
꾸준하게 진행하고 싶다.
5. CI/CD
Jenkins를 이용해 CI/CD를 관리하기로 했다.
기대기대..!
6. 배포 후 지속적인 리팩토링까지
배포가 끝이 아니라 계속 리팩토링하면서 관리하는 것이 목표.
요구사항 정의서에서 필수 요구사항과 서브 요구사항을 구분해 필수 요구사항을 먼저 구현, 배포하고 리팩토링과 함께 기능 추가도 진행하고 싶다.
✍ 기술 스택
시스템 아키텍처
- AWS EC2 모노리틱 구성
- API 방식 : RESTful API
FrontEnd
- 언어 : TypeScript 4
- 프레임워크 : React 18
- API : react-query
- 상태관리 : recoil || redux
BackEnd
- 언어 : Java 11 벤더 : Zulu Community
- 프레임워크 : Spring Boot 2.72 벤더 : Pivotal
- 데이터베이스 : MySQL 8.0-community 벤더 : Oracle
- ORM : JPA
- QueryDSL : QueryDSL
- 캐싱 : Redis
백엔드.. 뭔가 더 많고 멋져보인다
협업툴
- API docs : Swagger
- 형상관리 : GitHub
- CI/CD : Jenkins
- Notion
- Slack
팀 프로젝트 진작 해볼걸.. 내 수준을 계속 의심하고 개인 프로젝트만 진행했던게 너무 아쉽다
다양한 사람들과 소통하면서 의견을 교류하고, 서로가 쌓아온 코드 스타일을 보고, 더 좋은 코드를 위해 함께 노력하는 경험을 진작 했었더라면 더 빨리 성장할 수 있었을까?
아쉬움은 뒤로하고 다시 최선을 다한다 화이팅!!!😣