팀 프로젝트: 성장형 AI 면접 서비스 - 회고
개요
📍 Chick Mate 깃허브 : https://github.com/BEST-L2CP/ChickMate
📍 Chick Mate 배포 사이트 : https://www.chickmate.site/
대망의 최종 프로젝트가 끝났다. 최종 프로젝트를 하고 있을 때는 기간이 되게 길다고 생각했다.
막상 최종 프로젝트가 끝나니 시간이 빠르게 지났다고 느꼈다.
최종 프로젝트를 끝내고 되게 기분이 이상했다. 최종 프로젝트가 끝남과 동시에 부트캠프도 끝나서였을까.
이제 진짜 개발자로 취업하기 위해 전장에 나가는 기분이었다.
이번 최종 프로젝트에서도 정말 많은 것을 느꼈다.
더 이상 시간이 지나기 전에 회고를 남기고자 오랜만에 키보드를 두드리고 있다.
Keep
잘한 점
1️⃣ Supabase 대신 PostgreSQL과 Prisma를 써서 실무에 가까운 환경을 구축하고자 하였다.
Next.js와 PostgreSQL를 이용하여 풀스택을 구현하고자 했다. Next.js의 Route Handler를 이용해서 Restful API 또한 설계할 수 있었다. 최대한 실무와 가까운 환경을 구축하기 위해 노력하여 다른 팀들의 프로젝트와 차별점을 가져가고자 했다.
2️⃣ 새로운 폴더 구조를 도입하였다.
Features 기반의 폴더 구조를 새롭게 도입하였다. 기능별로 폴더를 구분하여 그 안에서 다시 hooks, utils, api, 컴포넌트 파일로 세분화하였다. 이후에 서로 역할을 바꿔 리팩토링을 진행해도 큰 어려움 없이 자신이 맡은 기능과 관련된 파일을 쉽게 찾을 수 있었다.
3️⃣ 프로젝트를 진행하면서 경험한 일을 모두 글로 기록하였다.
5분 기록 보드를 이용해서 그날 그날 있었던 일을 최대한 기록으로 남겨두고자 하였다. 지난 일을 모두 기억할 수 없기 때문에 기록 보드에 사소한 것까지 남겨둔 것을 정말 잘한 일이라고 생각한다. 이후에 이력서를 쓰려고 할 때 이전 기록을 참고할 수 있어서 큰 도움이 됐다.
4️⃣ UT를 통해 서비스의 개선점을 파악하였다.
AI 면접 준비 서비스에 대한 UT를 진행하여 해당 서비스의 문제점과 장점을 직접 파악하였다. 정해진 시간으로 인해 UT에서 나온 개선점을 반영하지는 못했지만, 실제 사용자들의 목소리를 들어보면서 문제점을 파악해 볼 수 있어서 좋았다.
5️⃣ 샘플 코드를 작성해서 코드의 통일성을 유지하였다.
샘플 코드를 사전에 작성하여, 동일한 구조를 가진 코드를 그대로 가져와서 사용하였다. 이미 짜여진 코드가 있다보니 일종의 코드 컨벤션이 되어 PR을 할 때도 기준에 맞춰서 잘 작성됐는지 확인하기 쉬웠다.
6️⃣ 정해진 기간 내에 맡은 바를 다 하였다.
밤을 새는 일이 있어도 정해진 기간 내에 내가 맡은 일을 모두 끝내려고 하였다. 그 결과, 정해진 기간 내에 내가 맡았던 기능은 모두 구현하였다.
Problem
아쉬운 점
1️⃣ 변경된 코드 컨벤션을 문서로 기록하지 못하였다.
초기에 정해둔 코드 컨벤션 내용 중에서 변경된 내용도 있었고, 나중에 새롭게 추가된 내용도 있었다.
근데 그걸 관리하는 사람이 정해져 있지 않다 보니 문서로 제대로 남기지 못한 게 아쉬웠다.
2️⃣ API 명세서를 미리 작성하지 못하였다.
API 명세서를 미리 작성하지 않고 프로젝트에 들어간 결과, Route Handle를 사용하기 위한 엔드 포인트를 만들 때 중복되는 일이 발생하였다.
3️⃣ 왜 코드를 이렇게 짜야 되는지 깊이 생각하지 못했다.
정해진 기간 내에 기능을 구현하기 위해 코드 하나를 작성할 때마다 "왜 이렇게 해야 되는가?"를 깊이 생각하지 못하였다. 이 부분이 정말 아쉽다.
4️⃣ 디자이너님과의 일정 조율
최종 프로젝트가 끝나기 전날까지 모바일 버전의 반응형 디자인이 나오지 않아 임의로 반응형 디자인을 적용하였다. 우리 팀의 디자이너님의 한 분이시기도 하셨지만, 초기부터 정확한 기간을 정해놓고 진행했으면 참 좋았을 것 같다는 생각이 든다. 아무래도 디자이너님과의 협업은 처음이다 보니 많이 미숙하지 않았나 싶다.
Try
해결책 및 개선 방향
1️⃣ 코드 컨벤션 문서를 관리하는 사람을 지정하기
문서를 관리하는 사람을 지정했으면 정말 좋았을 것 같다. 지정해둬야 책임감을 느끼고 제대로 관리할 수 있지 않았을까 싶다.
2️⃣ API 명세서 사전에 미리 작성하기
어떤 데이터를 조작할 것인지에 대한 API 명세서를 미리 작성했다면, 중복되는 엔드포인트와 코드가 발생할 일이 없었을 것이라고 생각한다.
2️⃣ 기간을 구체적으로 잡아놓고, 기능 구현에 집중하는 시간과 코드의 의미를 생각하는 시간 정해두기
코드를 짜는 시간과 최선의 문제 해결책을 찾는 시간을 구분하여 할애했으면 더 좋았을 것 같다. 정해진 시간 내에 맡은 일을 끝내는 것도 중요하고, 그 안에서 최선의 해결책을 찾는 능력을 기르는 것도 중요하기 때문이다.
3️⃣ 정확한 기간을 정해두고 디자이너님과 소통하기
정해진 기간이 있으면 디자이너님에게 이때까지 나올 수 있냐고, 어디까지 진행됐냐고 확신을 갖고 재촉할 수 있게 된다. 또한, 남은 기간을 생각했을 때 어디까지 하면 좋을지에 대한 대응 방안 또한 생각할 수 있다.
마무리
최종 프로젝트가 끝난지 이제 1주가 지났는데 아직도 실감이 나지 않는다.
안전한 인도로 뛰어다니다가 갑자기 뜨거운 아스팔트 위로 던져진 기분이다.
무사히 개발자로 취업할 수 있을까.
이제는 누군가의 도움에 의지하지 않고 혼자서 개발자의 길을 개척해나가야 한다.
포기하지 않고 간간히 블로그에 개발 및 취업 관련 글을 올리려고 한다.
이 글을 읽게 된 모든 이들도 파이팅 하시길.